Skip to content

Commit 09fafa0

Browse files
committed
add is_nil operator
1 parent d40f130 commit 09fafa0

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

querybuilder/operator/is_nil.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package operator
2+
3+
func init() {
4+
AddOperator(IsNil)
5+
}
6+
7+
var IsNil = &Operator{
8+
Name: "is_nil",
9+
Evaluate: func(input, value interface{}) bool {
10+
if input == nil {
11+
return true
12+
}
13+
14+
return false
15+
},
16+
}

querybuilder/operator/is_nil_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package operator
2+
3+
import "testing"
4+
5+
func TestIsNil(t *testing.T) {
6+
var typeNil interface{}
7+
8+
var inputs = []struct {
9+
title string
10+
value interface{}
11+
input interface{}
12+
want bool
13+
}{
14+
{title: "is_nil-1", value: nil, input: "", want: false},
15+
{title: "is_nil-2", value: nil, input: typeNil, want: true},
16+
{title: "is_nil-3", value: nil, input: []int{}, want: false},
17+
{title: "is_nil-5", value: nil, input: nil, want: true},
18+
}
19+
20+
for _, input := range inputs {
21+
t.Run(input.title, func(t *testing.T) {
22+
got := IsNil.Evaluate(input.input, input.value)
23+
if got != input.want {
24+
t.Errorf("%v is nil %v got: %t, want: %t", input.input, input.value, got, input.want)
25+
}
26+
})
27+
}
28+
}

0 commit comments

Comments
 (0)