mirror of
https://github.com/asdine/storm.git
synced 2025-10-05 14:56:58 +08:00
109 lines
1.8 KiB
Go
109 lines
1.8 KiB
Go
package q
|
|
|
|
import (
|
|
"go/token"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type User struct {
|
|
Age int
|
|
Name string
|
|
}
|
|
|
|
func TestCompare(t *testing.T) {
|
|
assert.True(t, compare(10, 10, token.EQL))
|
|
assert.True(t, compare(10, 10.0, token.EQL))
|
|
assert.True(t, compare(10, "10", token.EQL))
|
|
assert.True(t, compare(10, "10.0", token.EQL))
|
|
assert.False(t, compare(10, "hello", token.EQL))
|
|
assert.True(t, compare(10.0, 10, token.EQL))
|
|
assert.True(t, compare(10.0, 10.0, token.EQL))
|
|
assert.True(t, compare(10.0, "10", token.EQL))
|
|
assert.True(t, compare(10.0, "10.0", token.EQL))
|
|
assert.False(t, compare(10.0, "hello", token.EQL))
|
|
assert.True(t, compare("hello", "hello", token.EQL))
|
|
assert.True(t, compare(&User{Name: "John"}, &User{Name: "John"}, token.EQL))
|
|
assert.False(t, compare(&User{Name: "John"}, &User{Name: "Jack"}, token.GTR))
|
|
assert.True(t, compare(10, 5.0, token.GTR))
|
|
}
|
|
|
|
func TestCmp(t *testing.T) {
|
|
a := User{
|
|
Age: 10,
|
|
}
|
|
|
|
b := User{
|
|
Age: 100,
|
|
}
|
|
|
|
q := Eq("Age", 10)
|
|
assert.True(t, q.Exec(&a))
|
|
assert.False(t, q.Exec(&b))
|
|
|
|
q = Gt("Age", 15)
|
|
assert.False(t, q.Exec(&a))
|
|
assert.True(t, q.Exec(&b))
|
|
}
|
|
|
|
func TestAnd(t *testing.T) {
|
|
a := User{
|
|
Age: 10,
|
|
Name: "John",
|
|
}
|
|
|
|
b := User{
|
|
Age: 10,
|
|
Name: "Jack",
|
|
}
|
|
|
|
q := And(
|
|
Eq("Age", 10),
|
|
Eq("Name", "John"),
|
|
)
|
|
assert.True(t, q.Exec(&a))
|
|
assert.False(t, q.Exec(&b))
|
|
}
|
|
|
|
func TestOr(t *testing.T) {
|
|
a := User{
|
|
Age: 10,
|
|
Name: "John",
|
|
}
|
|
|
|
b := User{
|
|
Age: 10,
|
|
Name: "Jack",
|
|
}
|
|
|
|
q := Or(
|
|
Eq("Age", 10),
|
|
Eq("Name", "Jack"),
|
|
)
|
|
assert.True(t, q.Exec(&a))
|
|
assert.True(t, q.Exec(&b))
|
|
}
|
|
|
|
func TestAndOr(t *testing.T) {
|
|
a := User{
|
|
Age: 10,
|
|
Name: "John",
|
|
}
|
|
|
|
b := User{
|
|
Age: 100,
|
|
Name: "Jack",
|
|
}
|
|
|
|
q := And(
|
|
Eq("Age", 10),
|
|
Or(
|
|
Eq("Name", "Jack"),
|
|
Eq("Name", "John"),
|
|
),
|
|
)
|
|
assert.True(t, q.Exec(&a))
|
|
assert.False(t, q.Exec(&b))
|
|
}
|