mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 14:09:13 +00:00
74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package stats_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/ncruces/go-sqlite3"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
_ "github.com/ncruces/go-sqlite3/internal/testcfg"
|
|
)
|
|
|
|
func TestRegister_boolean(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
db, err := sqlite3.Open(":memory:")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
err = db.Exec(`CREATE TABLE data (x)`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = db.Exec(`INSERT INTO data (x) VALUES (4), (7.0), (13), (NULL), (16), (3.14)`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
stmt, _, err := db.Prepare(`
|
|
SELECT
|
|
every(x > 0),
|
|
every(x > 10),
|
|
some(x > 10),
|
|
some(x > 20)
|
|
FROM data`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !stmt.Step() {
|
|
t.Fatal(stmt.Err())
|
|
} else {
|
|
if got := stmt.ColumnBool(0); got != true {
|
|
t.Errorf("got %v, want true", got)
|
|
}
|
|
if got := stmt.ColumnBool(1); got != false {
|
|
t.Errorf("got %v, want false", got)
|
|
}
|
|
if got := stmt.ColumnBool(2); got != true {
|
|
t.Errorf("got %v, want true", got)
|
|
}
|
|
if got := stmt.ColumnBool(3); got != false {
|
|
t.Errorf("got %v, want false", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`SELECT every(x > 10) OVER (ROWS 1 PRECEDING) FROM data`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
want := [...]bool{false, false, false, true, true, false}
|
|
for i := 0; stmt.Step(); i++ {
|
|
if got := stmt.ColumnBool(0); got != want[i] {
|
|
t.Errorf("got %v, want %v", got, want[i])
|
|
}
|
|
if got := stmt.ColumnType(0); got != sqlite3.INTEGER {
|
|
t.Errorf("got %v, want INTEGER", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
}
|