summaryrefslogtreecommitdiffstats
path: root/tpl/compare/compare_test.go
diff options
context:
space:
mode:
authorTan Yuanhong <leotan.yh@gmail.com>2020-01-19 20:52:06 +0800
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-01-23 10:36:35 +0100
commit0c251be66bf3ad4abafbc47583e394ca4e6ffcf1 (patch)
tree2791f8d05ddbb957d261a4c26e34619f3b515d01 /tpl/compare/compare_test.go
parent836c24261f9f175254256fb326d92a3db47e1c75 (diff)
Allow multiple arguments in ne/ge/gt/le/lt functions
Treat op arg1 arg2 arg3 ... as (arg1 op arg2) && (arg1 op arg3) and so on for ne/ge/gt/le/lt. Closes #6619
Diffstat (limited to 'tpl/compare/compare_test.go')
-rw-r--r--tpl/compare/compare_test.go133
1 files changed, 128 insertions, 5 deletions
diff --git a/tpl/compare/compare_test.go b/tpl/compare/compare_test.go
index fdbcc24bb..aeadb02f9 100644
--- a/tpl/compare/compare_test.go
+++ b/tpl/compare/compare_test.go
@@ -149,16 +149,36 @@ func TestCompare(t *testing.T) {
return n.Eq(a, b)
}
+ twoGt := func(a, b interface{}) bool {
+ return n.Gt(a, b)
+ }
+
+ twoLt := func(a, b interface{}) bool {
+ return n.Lt(a, b)
+ }
+
+ twoGe := func(a, b interface{}) bool {
+ return n.Ge(a, b)
+ }
+
+ twoLe := func(a, b interface{}) bool {
+ return n.Le(a, b)
+ }
+
+ twoNe := func(a, b interface{}) bool {
+ return n.Ne(a, b)
+ }
+
for _, test := range []struct {
tstCompareType
funcUnderTest func(a, b interface{}) bool
}{
- {tstGt, n.Gt},
- {tstLt, n.Lt},
- {tstGe, n.Ge},
- {tstLe, n.Le},
+ {tstGt, twoGt},
+ {tstLt, twoLt},
+ {tstGe, twoGe},
+ {tstLe, twoLe},
{tstEq, twoEq},
- {tstNe, n.Ne},
+ {tstNe, twoNe},
} {
doTestCompare(t, test.tstCompareType, test.funcUnderTest)
}
@@ -263,6 +283,109 @@ func TestEqualExtend(t *testing.T) {
}
}
+func TestNotEqualExtend(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+
+ ns := New(false)
+
+ for _, test := range []struct {
+ first interface{}
+ others []interface{}
+ expect bool
+ }{
+ {1, []interface{}{2, 3}, true},
+ {1, []interface{}{2, 1}, false},
+ {1, []interface{}{1, 2}, false},
+ } {
+ result := ns.Ne(test.first, test.others...)
+ c.Assert(result, qt.Equals, test.expect)
+ }
+}
+
+func TestGreaterEqualExtend(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+
+ ns := New(false)
+
+ for _, test := range []struct {
+ first interface{}
+ others []interface{}
+ expect bool
+ }{
+ {5, []interface{}{2, 3}, true},
+ {5, []interface{}{5, 5}, true},
+ {3, []interface{}{4, 2}, false},
+ {3, []interface{}{2, 4}, false},
+ } {
+ result := ns.Ge(test.first, test.others...)
+ c.Assert(result, qt.Equals, test.expect)
+ }
+}
+
+func TestGreaterThanExtend(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+
+ ns := New(false)
+
+ for _, test := range []struct {
+ first interface{}
+ others []interface{}
+ expect bool
+ }{
+ {5, []interface{}{2, 3}, true},
+ {5, []interface{}{5, 4}, false},
+ {3, []interface{}{4, 2}, false},
+ } {
+ result := ns.Gt(test.first, test.others...)
+ c.Assert(result, qt.Equals, test.expect)
+ }
+}
+
+func TestLessEqualExtend(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+
+ ns := New(false)
+
+ for _, test := range []struct {
+ first interface{}
+ others []interface{}
+ expect bool
+ }{
+ {1, []interface{}{2, 3}, true},
+ {1, []interface{}{1, 2}, true},
+ {2, []interface{}{1, 2}, false},
+ {3, []interface{}{2, 4}, false},
+ } {
+ result := ns.Le(test.first, test.others...)
+ c.Assert(result, qt.Equals, test.expect)
+ }
+}
+
+func TestLessThanExtend(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+
+ ns := New(false)
+
+ for _, test := range []struct {
+ first interface{}
+ others []interface{}
+ expect bool
+ }{
+ {1, []interface{}{2, 3}, true},
+ {1, []interface{}{1, 2}, false},
+ {2, []interface{}{1, 2}, false},
+ {3, []interface{}{2, 4}, false},
+ } {
+ result := ns.Lt(test.first, test.others...)
+ c.Assert(result, qt.Equals, test.expect)
+ }
+}
+
func TestCase(t *testing.T) {
c := qt.New(t)
n := New(true)