mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
86 lines
1.8 KiB
Go
86 lines
1.8 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_mode(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
db, err := sqlite3.Open(":memory:")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
stmt, _, err := db.Prepare(`SELECT mode(column1) FROM (VALUES (NULL), (1), (NULL), (2), (NULL), (3), (3))`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stmt.Step() {
|
|
if got := stmt.ColumnInt(0); got != 3 {
|
|
t.Errorf("got %v, want 3", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`SELECT mode(column1) FROM (VALUES (1), (1), (2), (2), (3))`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stmt.Step() {
|
|
if got := stmt.ColumnInt(0); got != 1 {
|
|
t.Errorf("got %v, want 1", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`SELECT mode(column1) FROM (VALUES (0.5), (1), (2.5), (2), (2.5))`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stmt.Step() {
|
|
if got := stmt.ColumnFloat(0); got != 2.5 {
|
|
t.Errorf("got %v, want 2.5", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`SELECT mode(column1) FROM (VALUES ('red'), ('green'), ('blue'), ('red'))`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stmt.Step() {
|
|
if got := stmt.ColumnText(0); got != "red" {
|
|
t.Errorf("got %q, want red", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`SELECT mode(column1) FROM (VALUES (X'cafebabe'), ('green'), ('blue'), (X'cafebabe'))`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stmt.Step() {
|
|
if got := stmt.ColumnText(0); got != "\xca\xfe\xba\xbe" {
|
|
t.Errorf("got %q, want cafebabe", got)
|
|
}
|
|
}
|
|
stmt.Close()
|
|
|
|
stmt, _, err = db.Prepare(`
|
|
SELECT mode(column1) OVER (ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
|
|
FROM (VALUES (1), (1), (2.5), ('blue'), (X'cafebabe'), (1), (1))
|
|
`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for stmt.Step() {
|
|
}
|
|
stmt.Close()
|
|
}
|