File: types_test.go

package info (click to toggle)
golang-github-ziutek-mymysql 1.5.4%2Bgit20170206.23.0582bcf-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 388 kB
  • sloc: makefile: 8; sh: 2
file content (100 lines) | stat: -rw-r--r-- 2,215 bytes parent folder | download
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
100
package mysql

import (
	"testing"
	"time"
)

type sio struct {
	in, out string
}

func checkRow(t *testing.T, examples []sio, conv func(string) interface{}) {
	row := make(Row, 1)
	for _, ex := range examples {
		row[0] = conv(ex.in)
		str := row.Str(0)
		if str != ex.out {
			t.Fatalf("Wrong conversion: '%s' != '%s'", str, ex.out)
		}
	}
}

var dates = []sio{
	sio{"2121-11-22", "2121-11-22"},
	sio{"0000-00-00", "0000-00-00"},
	sio{" 1234-12-18  ", "1234-12-18"},
	sio{"\t1234-12-18 \r\n", "1234-12-18"},
}

func TestConvDate(t *testing.T) {
	conv := func(str string) interface{} {
		d, err := ParseDate(str)
		if err != nil {
			return err
		}
		return d
	}
	checkRow(t, dates, conv)
}

var datetimes = []sio{
	sio{"2121-11-22 11:22:32", "2121-11-22 11:22:32"},
	sio{"  1234-12-18 22:11:22 ", "1234-12-18 22:11:22"},
	sio{"\t 1234-12-18 22:11:22 \r\n", "1234-12-18 22:11:22"},
	sio{"2000-11-11", "2000-11-11 00:00:00"},
	sio{"0000-00-00 00:00:00", "0000-00-00 00:00:00"},
	sio{"0000-00-00", "0000-00-00 00:00:00"},
	sio{"2000-11-22 11:11:11.000111222", "2000-11-22 11:11:11.000111222"},
}

func TestConvTime(t *testing.T) {
	conv := func(str string) interface{} {
		d, err := ParseTime(str, time.Local)
		if err != nil {
			return err
		}
		return d
	}
	checkRow(t, datetimes, conv)
}

var times = []sio{
	sio{"1:23:45", "1:23:45"},
	sio{"-112:23:45", "-112:23:45"},
	sio{"+112:23:45", "112:23:45"},
	sio{"1:60:00", "invalid MySQL TIME string: 1:60:00"},
	sio{"1:00:60", "invalid MySQL TIME string: 1:00:60"},
	sio{"1:23:45.000111333", "1:23:45.000111333"},
	sio{"-1:23:45.000111333", "-1:23:45.000111333"},
}

func TestConvDuration(t *testing.T) {
	conv := func(str string) interface{} {
		d, err := ParseDuration(str)
		if err != nil {
			return err
		}
		return d

	}
	checkRow(t, times, conv)
}

func TestEscapeString(t *testing.T) {
	txt := " \000 \n \r \\ ' \" \032 "
	exp := ` \0 \n \r \\ \' \" \Z `
	out := escapeString(txt)
	if out != exp {
		t.Fatalf("escapeString: ret='%s' exp='%s'", out, exp)
	}
}

func TestEscapeQuotes(t *testing.T) {
	txt := " '' '' ' ' ' "
	exp := ` '''' '''' '' '' '' `
	out := escapeQuotes(txt)
	if out != exp {
		t.Fatalf("escapeString: ret='%s' exp='%s'", out, exp)
	}
}