mydb/comparison_test.go
2023-09-18 15:15:42 +08:00

112 lines
2.6 KiB
Go

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)
}
}