-
Notifications
You must be signed in to change notification settings - Fork 1
/
godsv_test.go
126 lines (114 loc) · 2.23 KB
/
godsv_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
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package godsv
import (
"fmt"
"strings"
"testing"
)
func ExampleMarshal() {
sample := Row{
"abc",
"def",
"ghk",
"",
"ab:cd",
"ef\\gh",
}
dsv := New()
fmt.Println(dsv.Marshal(sample))
fmt.Println(strings.Join(sample, " "))
// Output: abc:def:ghk::ab\:cd:ef\\gh
// abc def ghk ab:cd ef\gh
}
func ExampleUnmarshal() {
sample := "abc:def:ghk::ab\\:cd:ef\\\\gh"
dsv := New()
result := dsv.Unmarshal(sample)
fmt.Println(strings.Join(result, " "))
fmt.Println(sample)
// Output: abc def ghk ab:cd ef\gh
// abc:def:ghk::ab\:cd:ef\\gh
}
func ExampleCustomMarshal() {
sample := Row{
"abc",
"def",
"ghk",
"",
"ab,cd",
"ef\\gh",
}
dsv := NewCustom(',', defaultEscape)
fmt.Println(dsv.Marshal(sample))
fmt.Println(strings.Join(sample, " "))
// Output: abc,def,ghk,,ab\,cd,ef\\gh
// abc def ghk ab,cd ef\gh
}
func ExampleCustomUnmarshal() {
sample := "abc,def,ghk,,ab\\,cd,ef\\\\gh"
dsv := NewCustom(',', defaultEscape)
result := dsv.Unmarshal(sample)
fmt.Println(strings.Join(result, " "))
fmt.Println(sample)
// Output: abc def ghk ab,cd ef\gh
// abc,def,ghk,,ab\,cd,ef\\gh
}
func ExampleCut() {
sample := "abc:def:ghk::ab\\:cd:ef\\\\gh"
dsv := New()
result, leftover := dsv.cut(sample)
fmt.Println(result)
fmt.Println(leftover)
// Output: abc
// def:ghk::ab\:cd:ef\\gh
}
func ExampleCount() {
sample := "abc:def:ghk::ab\\:cd:ef\\\\gh"
dsv := New()
fmt.Printf("%d\n", dsv.count(sample))
fmt.Println(sample)
// Output: 6
// abc:def:ghk::ab\:cd:ef\\gh
}
func ExampleClean() {
sample := "ab\\:cd\\\\e"
dsv := New()
fmt.Println(dsv.clean(sample))
fmt.Println(sample)
// Output: ab:cd\e
// ab\:cd\\e
}
func BenchmarkMarshal(b *testing.B) {
sample := Row{
"abc",
"def",
"ghk",
"",
"ab:cd",
"ef\\gh",
}
dsv := New()
for i := 0; i < b.N; i++ {
dsv.Marshal(sample)
}
}
func BenchmarkUnmarshal(b *testing.B) {
sample := "abc:def:ghk::ab\\:cd:ef\\\\gh"
dsv := New()
for i := 0; i < b.N; i++ {
dsv.Unmarshal(sample)
}
}
func BenchmarkCount(b *testing.B) {
sample := "abc:def:ghk::ab\\:cd:ef\\\\gh"
dsv := New()
for i := 0; i < b.N; i++ {
dsv.count(sample)
}
}
func BenchmarkClean(b *testing.B) {
sample := "ab\\:cd\\\\e"
dsv := New()
for i := 0; i < b.N; i++ {
dsv.clean(sample)
}
}