Skip to content

Commit f4ec91c

Browse files
committed
Add test for refunc
1 parent 145486b commit f4ec91c

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

ext/refunc/refunc_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Copyright 2023 Ross Light
2+
// SPDX-License-Identifier: ISC
3+
4+
package refunc
5+
6+
import (
7+
"testing"
8+
9+
"zombiezen.com/go/sqlite"
10+
)
11+
12+
func TestImpl(t *testing.T) {
13+
c, err := sqlite.OpenConn("", sqlite.OpenMemory|sqlite.OpenReadWrite)
14+
if err != nil {
15+
t.Fatal(err)
16+
}
17+
defer func() {
18+
if err := c.Close(); err != nil {
19+
t.Error(err)
20+
}
21+
}()
22+
23+
if err := Register(c); err != nil {
24+
t.Error("Register:", err)
25+
}
26+
27+
tests := []struct {
28+
x, y string
29+
want bool
30+
}{
31+
{"", "foo", false},
32+
{"foo", "", true},
33+
{"foo", "^fo*$", true},
34+
{"bar", "^fo*$", false},
35+
}
36+
stmt := c.Prep("VALUES (:x REGEXP :y);")
37+
for _, test := range tests {
38+
stmt.SetText(":x", test.x)
39+
stmt.SetText(":y", test.y)
40+
rowReturned, err := stmt.Step()
41+
if err != nil {
42+
t.Errorf("%q REGEXP %q: %v", test.x, test.y, err)
43+
stmt.Reset()
44+
continue
45+
}
46+
if !rowReturned {
47+
t.Errorf("%q REGEXP %q: no row returned", test.x, test.y)
48+
stmt.Reset()
49+
continue
50+
}
51+
if got := stmt.ColumnBool(0); got != test.want {
52+
t.Errorf("%q REGEXP %q = %t; want %t", test.x, test.y, got, test.want)
53+
}
54+
if err := stmt.Reset(); err != nil {
55+
t.Errorf("%q REGEXP %q: %v", test.x, test.y, err)
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)