-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtypes_test.go
More file actions
99 lines (83 loc) · 2.62 KB
/
types_test.go
File metadata and controls
99 lines (83 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package cubrid
import (
"database/sql/driver"
"testing"
"time"
)
func TestInterpolateArgsSkipsQuestionMarkInSingleQuotedString(t *testing.T) {
sql := "SELECT * FROM t WHERE name = '?' AND id = ?"
got, err := InterpolateArgs(sql, []driver.Value{int64(7)})
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
want := "SELECT * FROM t WHERE name = '?' AND id = 7"
if got != want {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", want, got)
}
}
func TestInterpolateArgsSkipsQuestionMarkInBlockComment(t *testing.T) {
sql := "SELECT 1 /* ? */ WHERE id = ?"
got, err := InterpolateArgs(sql, []driver.Value{int64(42)})
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
want := "SELECT 1 /* ? */ WHERE id = 42"
if got != want {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", want, got)
}
}
func TestInterpolateArgsSkipsQuestionMarkInLineComment(t *testing.T) {
sql := "SELECT 1 -- ? \nWHERE id = ?"
got, err := InterpolateArgs(sql, []driver.Value{int64(5)})
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
want := "SELECT 1 -- ? \nWHERE id = 5"
if got != want {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", want, got)
}
}
func TestInterpolateArgsHandlesEscapedSingleQuote(t *testing.T) {
sql := "SELECT * FROM t WHERE name = 'it''s?' AND id = ?"
got, err := InterpolateArgs(sql, []driver.Value{int64(9)})
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
want := "SELECT * FROM t WHERE name = 'it''s?' AND id = 9"
if got != want {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", want, got)
}
}
func TestInterpolateArgsWithNoPlaceholders(t *testing.T) {
sql := "SELECT 1"
got, err := InterpolateArgs(sql, nil)
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
if got != sql {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", sql, got)
}
}
func TestInterpolateArgsMultiplePlaceholders(t *testing.T) {
sql := "SELECT * FROM t WHERE a = ? AND b = ?"
got, err := InterpolateArgs(sql, []driver.Value{int64(1), "x"})
if err != nil {
t.Fatalf("InterpolateArgs returned error: %v", err)
}
want := "SELECT * FROM t WHERE a = 1 AND b = 'x'"
if got != want {
t.Fatalf("unexpected SQL\nwant: %s\n got: %s", want, got)
}
}
func TestFormatValueNormalizesTimeToUTC(t *testing.T) {
loc := time.FixedZone("KST", 9*60*60)
input := time.Date(2024, 1, 15, 9, 30, 0, 123000000, loc)
got, err := FormatValue(input)
if err != nil {
t.Fatalf("FormatValue returned error: %v", err)
}
want := "DATETIME'2024-01-15 00:30:00.123'"
if got != want {
t.Fatalf("unexpected DATETIME literal\nwant: %s\n got: %s", want, got)
}
}