This commit is contained in:
Nuno Cruces
2024-07-09 14:51:34 +01:00
parent c19fec1e83
commit bd5be4cde6
2 changed files with 94 additions and 2 deletions

View File

@@ -26,7 +26,7 @@ func TestRegister(t *testing.T) {
defer db.Close()
err = db.Exec(`
CREATE VIRTUAL TABLE sports_cars USING bloom_filter(20);
CREATE VIRTUAL TABLE sports_cars USING bloom_filter();
INSERT INTO sports_cars VALUES ('ferrari'), ('lamborghini'), ('alfa romeo')
`)
if err != nil {
@@ -68,7 +68,22 @@ func TestRegister(t *testing.T) {
t.Fatal(err)
}
err = db.Exec(`DROP TABLE sports_cars`)
err = db.Exec(`DELETE FROM sports_cars WHERE word = 'lamborghini'`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`UPDATE sports_cars SET word = 'ferrari' WHERE word = 'lamborghini'`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`ALTER TABLE sports_cars RENAME TO fast_cars`)
if err != nil {
t.Fatal(err)
}
err = db.Exec(`DROP TABLE fast_cars`)
if err != nil {
t.Fatal(err)
}
@@ -138,3 +153,42 @@ func Test_compatible(t *testing.T) {
t.Error(err)
}
}
func Test_errors(t *testing.T) {
t.Parallel()
db, err := sqlite3.Open(":memory:")
if err != nil {
t.Fatal(err)
}
defer db.Close()
bloom.Register(db)
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter(0)`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter('a')`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter(20, 2)`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter(20, 'a')`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter(20, 0.9, 0)`)
if err == nil {
t.Error("want error")
}
err = db.Exec(`CREATE VIRTUAL TABLE sports_cars USING bloom_filter(20, 0.9, 'a')`)
if err == nil {
t.Error("want error")
}
}

View File

@@ -168,6 +168,44 @@ func TestCreateFunction(t *testing.T) {
}
}
func TestCreateFunction_error(t *testing.T) {
t.Parallel()
db, err := sqlite3.Open(":memory:")
if err != nil {
t.Fatal(err)
}
defer db.Close()
var want error
err = db.CreateFunction("test", 0, sqlite3.INNOCUOUS, func(ctx sqlite3.Context, _ ...sqlite3.Value) {
ctx.ResultError(want)
})
if err != nil {
t.Fatal(err)
}
stmt, _, err := db.Prepare(`SELECT test()`)
if err != nil {
t.Error(err)
}
defer func() { recover() }()
defer stmt.Close()
for _, want = range []error{sqlite3.FULL, sqlite3.TOOBIG} {
if stmt.Step() {
t.Error("want error")
}
if got := stmt.Err(); !errors.Is(got, want) {
t.Errorf("got %v, want %v", got, want)
}
}
want = sqlite3.NOMEM
stmt.Step()
}
func TestOverloadFunction(t *testing.T) {
t.Parallel()