mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package tests
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
_ "embed"
|
|
|
|
"github.com/ncruces/go-sqlite3"
|
|
_ "github.com/ncruces/go-sqlite3/driver"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
"github.com/ncruces/go-sqlite3/sqlite3vfs"
|
|
)
|
|
|
|
//go:embed testdata/test.db
|
|
var testdata string
|
|
|
|
func TestMemoryVFS_Open_notfound(t *testing.T) {
|
|
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
|
|
"test.db": &sqlite3vfs.MemoryDB{},
|
|
})
|
|
defer sqlite3vfs.Unregister("memory")
|
|
|
|
_, err := sqlite3.Open("file:demo.db?vfs=memory&mode=ro")
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
if !errors.Is(err, sqlite3.CANTOPEN) {
|
|
t.Errorf("got %v, want sqlite3.CANTOPEN", err)
|
|
}
|
|
}
|
|
|
|
func TestMemoryVFS_Open_errors(t *testing.T) {
|
|
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
|
|
"test.db": &sqlite3vfs.MemoryDB{MaxSize: 65536},
|
|
})
|
|
defer sqlite3vfs.Unregister("memory")
|
|
|
|
db, err := sqlite3.Open("file:test.db?vfs=memory")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
err = db.Exec(`CREATE TABLE IF NOT EXISTS test (col)`)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = db.Exec(`INSERT INTO test VALUES (zeroblob(65536))`)
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
if !errors.Is(err, sqlite3.FULL) {
|
|
t.Errorf("got %v, want sqlite3.FULL", err)
|
|
}
|
|
}
|
|
|
|
func TestReaderVFS_Open_notfound(t *testing.T) {
|
|
sqlite3vfs.Register("reader", sqlite3vfs.ReaderVFS{
|
|
"test.db": sqlite3vfs.NewSizeReaderAt(strings.NewReader(testdata)),
|
|
})
|
|
defer sqlite3vfs.Unregister("reader")
|
|
|
|
_, err := sqlite3.Open("file:demo.db?vfs=reader&mode=ro")
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
if !errors.Is(err, sqlite3.CANTOPEN) {
|
|
t.Errorf("got %v, want sqlite3.CANTOPEN", err)
|
|
}
|
|
}
|