Files
sqlite3/stmt_test.go

61 lines
1.0 KiB
Go
Raw Permalink Normal View History

2023-01-26 02:48:31 +00:00
package sqlite3
import (
"testing"
2023-01-26 02:48:31 +00:00
)
func Test_emptyStatement(t *testing.T) {
2023-02-22 14:19:56 +00:00
t.Parallel()
tests := []struct {
name string
stmt string
want bool
}{
{"empty", "", true},
{"space", " ", true},
{"separator", ";\n ", true},
{"begin", "BEGIN", false},
{"select", "SELECT 1;", false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := emptyStatement(tt.stmt); got != tt.want {
2023-02-19 16:16:13 +00:00
t.Errorf("got %v, want %v", got, tt.want)
}
})
}
}
func Fuzz_emptyStatement(f *testing.F) {
f.Add("")
f.Add(" ")
f.Add(";\n ")
2023-02-19 16:16:13 +00:00
f.Add("; ;\v")
f.Add("BEGIN")
f.Add("SELECT 1;")
db, err := Open(":memory:")
if err != nil {
f.Fatal(err)
}
defer db.Close()
f.Fuzz(func(t *testing.T, sql string) {
// If empty, SQLite parses it as empty.
if emptyStatement(sql) {
2023-02-19 16:16:13 +00:00
stmt, tail, err := db.Prepare(sql)
if err != nil {
2023-02-19 16:16:13 +00:00
t.Errorf("%q, %v", sql, err)
}
if stmt != nil {
2023-02-19 16:16:13 +00:00
t.Errorf("%q, %v", sql, stmt)
}
if tail != "" {
t.Errorf("%q", sql)
}
stmt.Close()
}
})
2023-01-26 02:48:31 +00:00
}