diff --git a/ext/bloom/bloom_test.go b/ext/bloom/bloom_test.go index 02c08fc..0a02942 100644 --- a/ext/bloom/bloom_test.go +++ b/ext/bloom/bloom_test.go @@ -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") + } +} diff --git a/tests/func_test.go b/tests/func_test.go index 08ee7ac..5b324ed 100644 --- a/tests/func_test.go +++ b/tests/func_test.go @@ -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()