package mydb import ( "testing" "time" "git.hexq.cn/tiglog/mydb/internal/adapter" "github.com/stretchr/testify/assert" ) func TestComparison(t *testing.T) { testTimeVal := time.Now() testCases := []struct { expects *adapter.Comparison result *Comparison }{ { adapter.NewComparisonOperator(adapter.ComparisonOperatorGreaterThanOrEqualTo, 1), Gte(1), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorLessThanOrEqualTo, 22), Lte(22), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorEqual, 6), Eq(6), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorNotEqual, 67), NotEq(67), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorGreaterThan, 4), Gt(4), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorLessThan, 47), Lt(47), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorIn, []interface{}{1, 22, 34}), In(1, 22, 34), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorGreaterThan, testTimeVal), After(testTimeVal), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorLessThan, testTimeVal), Before(testTimeVal), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorGreaterThanOrEqualTo, testTimeVal), OnOrAfter(testTimeVal), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorLessThanOrEqualTo, testTimeVal), OnOrBefore(testTimeVal), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorBetween, []interface{}{11, 35}), Between(11, 35), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorNotBetween, []interface{}{11, 35}), NotBetween(11, 35), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorIs, 178), Is(178), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorIsNot, 32), IsNot(32), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorIs, nil), IsNull(), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorIsNot, nil), IsNotNull(), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorLike, "%a%"), Like("%a%"), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorNotLike, "%z%"), NotLike("%z%"), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorRegExp, ".*"), RegExp(".*"), }, { adapter.NewComparisonOperator(adapter.ComparisonOperatorNotRegExp, ".*"), NotRegExp(".*"), }, { adapter.NewCustomComparisonOperator("~", 56), Op("~", 56), }, } for i := range testCases { assert.Equal(t, testCases[i].expects, testCases[i].result.Comparison) } }