This commit is contained in:
lqs 2020-06-17 16:19:54 +08:00
parent 8e73adea59
commit d00ed9b02b
4 changed files with 48 additions and 2 deletions

View File

@ -34,8 +34,8 @@ func (m *mockRows) Next(dest []driver.Value) error {
}
m.count++
dest[0] = strconv.Itoa(m.count)
dest[1] = dest[0]
dest[2] = dest[0]
dest[1] = float32(m.count)
dest[2] = m.count
dest[3] = string(m.count % 2) // '\x00' or '\x01'
dest[4] = strconv.Itoa(m.count % 2) // '0' or '1'
dest[5] = dest[0]
@ -93,6 +93,13 @@ func TestCursor(t *testing.T) {
if err := cursor.Scan(); err != nil {
t.Errorf("%v", err)
}
var s string
var b ****bool
var p *string
if err := cursor.Scan(&s, &s, &s, &b, &s, &s, &p); err != nil {
t.Error(err)
}
}
if cursor.Next() {
t.Errorf("d")

View File

@ -5,21 +5,30 @@ import (
"testing"
)
type CustomInt int
type CustomBool bool
type CustomFloat float32
type CustomString string
func TestExpression(t *testing.T) {
assertValue(t, nil, "NULL")
assertValue(t, false, "0")
assertValue(t, true, "1")
assertValue(t, CustomBool(false), "0")
assertValue(t, CustomBool(true), "1")
assertValue(t, int8(11), "11")
assertValue(t, int16(11111), "11111")
assertValue(t, int32(1111111111), "1111111111")
assertValue(t, CustomInt(1111111111), "1111111111")
assertValue(t, int(1111111111), "1111111111")
assertValue(t, int64(1111111111111111111), "1111111111111111111")
assertValue(t, int8(-11), "-11")
assertValue(t, int16(-11111), "-11111")
assertValue(t, int32(-1111111111), "-1111111111")
assertValue(t, CustomInt(-1111111111), "-1111111111")
assertValue(t, int(-1111111111), "-1111111111")
assertValue(t, int64(-1111111111111111111), "-1111111111111111111")
@ -38,6 +47,7 @@ func TestExpression(t *testing.T) {
assertValue(t, "", "\"\"")
assertValue(t, "a' or 'a'='a", "\"a\\' or \\'a\\'=\\'a\"")
assertValue(t, "\n", "\"\\\n\"")
assertValue(t, CustomString("abc"), "\"abc\"")
x := 3
px := &x
@ -136,6 +146,11 @@ func TestFunc(t *testing.T) {
assertError(t, ee.IsNull())
assertError(t, e.In(ee, ee, ee))
assertError(t, ee.In(e, e, e))
assertError(t, ee.Between(2, 4))
assertError(t, e.Between(2, ee))
assertError(t, e.Between(ee, 4))
}
func TestMisc(t *testing.T) {
@ -143,6 +158,9 @@ func TestMisc(t *testing.T) {
assertValue(t, falseExpression(), "0")
assertValue(t, command("COMMAND", staticExpression("<arg>", 0)), "COMMAND <arg>")
assertValue(t, staticExpression("<expression>", 1).
prefixSuffixExpression("<prefix>", "<suffix>", 1), "<prefix><expression><suffix>")
}
func TestLogicalExpression(t *testing.T) {
@ -170,4 +188,7 @@ func TestLogicalOptimizer(t *testing.T) {
assertValue(t, trueValue.And(falseValue), "1 AND 0")
assertValue(t, falseValue.And(trueValue), "0")
assertValue(t, falseValue.And(falseValue), "0")
assertValue(t, falseValue.Not(), "1")
assertValue(t, trueValue.Not(), "0")
}

View File

@ -21,4 +21,5 @@ func TestFunction(t *testing.T) {
assertValue(t, Count(a1), "COUNT(a1)")
assertValue(t, If(a1, 1, 2), "IF(a1, 1, 2)")
assertValue(t, Length(a1), "LENGTH(a1)")
assertValue(t, Sum(a1), "SUM(a1)")
}

View File

@ -56,6 +56,23 @@ func TestSelect(t *testing.T) {
db.Select(1).WithContext(context.Background())
db.SelectFrom(Table1).GetSQL()
}
func TestCount(t *testing.T) {
db := newMockDatabase()
_, _ = db.SelectFrom(Test).Count()
assertLastSql(t, "SELECT COUNT(1) FROM `test`")
_, _ = db.SelectDistinct(Test.F1).From(Test).Count()
assertLastSql(t, "SELECT COUNT(DISTINCT `f1`) FROM `test`")
_, _ = db.Select(Test.F1).From(Test).GroupBy(Test.F2).Count()
assertLastSql(t, "SELECT COUNT(1) FROM (SELECT 1 FROM `test` GROUP BY `f2`) AS t")
_, _ = db.SelectDistinct(Test.F1).From(Test).GroupBy(Test.F2).Count()
assertLastSql(t, "SELECT COUNT(1) FROM (SELECT DISTINCT `f1` FROM `test` GROUP BY `f2`) AS t")
}
func TestLock(t *testing.T) {