diff --git a/ext/blobio/blob_test.go b/ext/blobio/blob_test.go index 3caac21..9a754de 100644 --- a/ext/blobio/blob_test.go +++ b/ext/blobio/blob_test.go @@ -78,6 +78,13 @@ func Test_readblob(t *testing.T) { t.Log(err) } + err = db.Exec(`SELECT readblob('main', 'test1', 'col', 1, 1, 1)`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + err = db.Exec(` CREATE TABLE test1 (col); CREATE TABLE test2 (col); @@ -88,6 +95,18 @@ func Test_readblob(t *testing.T) { t.Fatal(err) } + err = db.Exec(`SELECT readblob('main', 'test1', 'col', 1, -1, 1)`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + + err = db.Exec(`SELECT readblob('main', 'test1', 'col', 1, 1, 0)`) + if err != nil { + t.Log(err) + } + stmt, _, err := db.Prepare(`SELECT readblob('main', value, 'col', 1, 1, 1) FROM array(?)`) if err != nil { t.Fatal(err) @@ -119,6 +138,51 @@ func Test_readblob(t *testing.T) { } } +func Test_writeblob(t *testing.T) { + t.Parallel() + + db, err := sqlite3.Open(":memory:") + if err != nil { + t.Fatal(err) + } + defer db.Close() + + err = db.Exec(`SELECT writeblob()`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + + err = db.Exec(`SELECT writeblob('main', 'test', 'col', 1, 1, x'')`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + + err = db.Exec(` + CREATE TABLE test (col); + INSERT INTO test VALUES (x'cafe'); + -- INSERT INTO test2 VALUES (x'babe'); + `) + if err != nil { + t.Fatal(err) + } + + err = db.Exec(`SELECT writeblob('main', 'test', 'col', 1, -1, x'')`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + + err = db.Exec(`SELECT writeblob('main', 'test', 'col', 1, 0, x'babe')`) + if err != nil { + t.Log(err) + } +} + func Test_openblob(t *testing.T) { t.Parallel() @@ -135,6 +199,13 @@ func Test_openblob(t *testing.T) { t.Log(err) } + err = db.Exec(`SELECT openblob('main', 'test1', 'col', 1, false, NULL)`) + if err == nil { + t.Fatal("want error") + } else { + t.Log(err) + } + err = db.Exec(` CREATE TABLE test1 (col); CREATE TABLE test2 (col); diff --git a/tests/func_test.go b/tests/func_test.go index 5b324ed..130c419 100644 --- a/tests/func_test.go +++ b/tests/func_test.go @@ -48,6 +48,7 @@ func TestCreateFunction(t *testing.T) { case 10: ctx.ResultNull() case 11: + arg.NoChange() ctx.ResultError(sqlite3.FULL) } }) diff --git a/tests/stmt_test.go b/tests/stmt_test.go index be13044..7542673 100644 --- a/tests/stmt_test.go +++ b/tests/stmt_test.go @@ -611,10 +611,40 @@ func TestStmt_ColumnTime(t *testing.T) { t.Errorf("want error") } } +} + +func TestStmt_ColumnValue(t *testing.T) { + t.Parallel() + + db, err := sqlite3.Open(":memory:") + if err != nil { + t.Fatal(err) + } + defer db.Close() + + stmt, _, err := db.Prepare(`SELECT 1`) + if err != nil { + t.Fatal(err) + } + defer stmt.Close() + + if stmt.Step() { + val := stmt.ColumnValue(0) + if _, err := val.InFirst(); err == nil { + t.Error("want error") + } + if _, err := val.InNext(); err == nil { + t.Error("want error") + } + } if got := stmt.Status(sqlite3.STMTSTATUS_RUN, true); got != 1 { t.Errorf("got %d, want 1", got) } + + if got := stmt.Status(math.MaxUint32, false); got != 0 { + t.Errorf("got %d, want 0", got) + } } func TestStmt_Error(t *testing.T) {