github.com/safing/portbase@v0.19.5/database/query/condition_test.go (about) 1 package query 2 3 import "testing" 4 5 func testSuccess(t *testing.T, c Condition) { 6 t.Helper() 7 8 err := c.check() 9 if err != nil { 10 t.Errorf("failed: %s", err) 11 } 12 } 13 14 func TestInterfaces(t *testing.T) { 15 t.Parallel() 16 17 testSuccess(t, newIntCondition("banana", Equals, uint(1))) 18 testSuccess(t, newIntCondition("banana", Equals, uint8(1))) 19 testSuccess(t, newIntCondition("banana", Equals, uint16(1))) 20 testSuccess(t, newIntCondition("banana", Equals, uint32(1))) 21 testSuccess(t, newIntCondition("banana", Equals, int(1))) 22 testSuccess(t, newIntCondition("banana", Equals, int8(1))) 23 testSuccess(t, newIntCondition("banana", Equals, int16(1))) 24 testSuccess(t, newIntCondition("banana", Equals, int32(1))) 25 testSuccess(t, newIntCondition("banana", Equals, int64(1))) 26 testSuccess(t, newIntCondition("banana", Equals, "1")) 27 28 testSuccess(t, newFloatCondition("banana", FloatEquals, uint(1))) 29 testSuccess(t, newFloatCondition("banana", FloatEquals, uint8(1))) 30 testSuccess(t, newFloatCondition("banana", FloatEquals, uint16(1))) 31 testSuccess(t, newFloatCondition("banana", FloatEquals, uint32(1))) 32 testSuccess(t, newFloatCondition("banana", FloatEquals, int(1))) 33 testSuccess(t, newFloatCondition("banana", FloatEquals, int8(1))) 34 testSuccess(t, newFloatCondition("banana", FloatEquals, int16(1))) 35 testSuccess(t, newFloatCondition("banana", FloatEquals, int32(1))) 36 testSuccess(t, newFloatCondition("banana", FloatEquals, int64(1))) 37 testSuccess(t, newFloatCondition("banana", FloatEquals, float32(1))) 38 testSuccess(t, newFloatCondition("banana", FloatEquals, float64(1))) 39 testSuccess(t, newFloatCondition("banana", FloatEquals, "1.1")) 40 41 testSuccess(t, newStringCondition("banana", SameAs, "coconut")) 42 testSuccess(t, newRegexCondition("banana", Matches, "coconut")) 43 testSuccess(t, newStringSliceCondition("banana", FloatEquals, []string{"banana", "coconut"})) 44 testSuccess(t, newStringSliceCondition("banana", FloatEquals, "banana,coconut")) 45 } 46 47 func testCondError(t *testing.T, c Condition) { 48 t.Helper() 49 50 err := c.check() 51 if err == nil { 52 t.Error("should fail") 53 } 54 } 55 56 func TestConditionErrors(t *testing.T) { 57 t.Parallel() 58 59 // test invalid value types 60 testCondError(t, newBoolCondition("banana", Is, 1)) 61 testCondError(t, newFloatCondition("banana", FloatEquals, true)) 62 testCondError(t, newIntCondition("banana", Equals, true)) 63 testCondError(t, newStringCondition("banana", SameAs, 1)) 64 testCondError(t, newRegexCondition("banana", Matches, 1)) 65 testCondError(t, newStringSliceCondition("banana", Matches, 1)) 66 67 // test error presence 68 testCondError(t, newBoolCondition("banana", errorPresent, true)) 69 testCondError(t, And(newBoolCondition("banana", errorPresent, true))) 70 testCondError(t, Or(newBoolCondition("banana", errorPresent, true))) 71 testCondError(t, newExistsCondition("banana", errorPresent)) 72 testCondError(t, newFloatCondition("banana", errorPresent, 1.1)) 73 testCondError(t, newIntCondition("banana", errorPresent, 1)) 74 testCondError(t, newStringCondition("banana", errorPresent, "coconut")) 75 testCondError(t, newRegexCondition("banana", errorPresent, "coconut")) 76 } 77 78 func TestWhere(t *testing.T) { 79 t.Parallel() 80 81 c := Where("", 254, nil) 82 err := c.check() 83 if err == nil { 84 t.Error("should fail") 85 } 86 }