-
Notifications
You must be signed in to change notification settings - Fork 0
/
dm_test.go
62 lines (55 loc) · 1.59 KB
/
dm_test.go
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
package dm
import (
"testing"
"bytes"
)
func TestDialector_QuoteTo(t *testing.T) {
testdatas := []struct {
raw string
expect string
}{
{"datadase.tableUser", "\"datadase\".\"tableUser\""},
{"datadase.table`User", "\"datadase\".\"table`User\""},
{"`a`.`b`", "\"`a`\".\"`b`\""},
{"`a`.b`", "\"`a`\".\"b`\""},
{"a.`b`", "\"a\".\"`b`\""},
{"`a`.b`c", "\"`a`\".\"b`c\""},
{"`a`.`b`c`", "\"`a`\".\"`b`c`\""},
{"`a`.b", "\"`a`\".\"b\""},
{"`ab`", "\"`ab`\""},
{"`a``b`", "\"`a``b`\""},
{"`a```b`", "\"`a```b`\""},
{"a`b", "\"a`b\""},
{"ab", "\"ab\""},
{"`a.b`", "\"`a\".\"b`\""},
{"a.b", "\"a\".\"b\""},
}
dailor := Open("")
for _, item := range testdatas {
buf := &bytes.Buffer{}
dailor.QuoteTo(buf, item.raw)
if buf.String() != item.expect {
t.Fatalf("quote %q fail, got %q, expect %q", item.raw, buf.String(), item.expect)
}
}
}
// BenchmarkDialector_QuoteTo
// Result:
// goos: darwin
// goarch: amd64
// pkg: gorm.io/driver/mysql
// cpu: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
// BenchmarkDialector_QuoteTo 9184232 113.2 ns/op
// BenchmarkDialector_QuoteTo-2 9782818 112.3 ns/op
// BenchmarkDialector_QuoteTo-4 10726722 109.0 ns/op
// BenchmarkDialector_QuoteTo-8 9656778 113.1 ns/op
// BenchmarkDialector_QuoteTo-12 10729615 112.7 ns/op
func BenchmarkDialector_QuoteTo(b *testing.B) {
dailor := Open("")
buf := &bytes.Buffer{}
b.ResetTimer()
for i := 0; i < b.N; i++ {
dailor.QuoteTo(buf, "datadase.table`User")
buf.Reset()
}
}