summaryrefslogtreecommitdiffstats
path: root/tests/010/csv.tl
blob: fffd8d0d2b6d3c185ee8372a8f44c2f53f3d1e5f (plain)
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
(load "../common")

(defmacro mtest-csv (. pairs)
  (tree-bind (data expected) (flow pairs (tuples 2) transpose)
    ^(mtest ,*(mappend (ret ^((get-csv ,(regsub "#" "\"" @1))
                              ,(mapcar (op regsub "#" "\"") @2)))
                       data expected))))

(mtest-csv
  "" #("")
  "," #("" "")
  ",," #("" "" ""))

(mtest-csv
  "\r" #("\r")
  "\r\n" #("")
  "\r\r" #("\r\r")
  "\r\r\n" #("\r")
  "\r\r" #("\r\r")
  "\r\r\r" #("\r\r\r")
  "\r\r\r\n" #("\r\r")
  "\r,\r" #("\r" "\r")
  "\r\n,\r" #("")
  "\r\r\n,\r" #("\r")
  ",\r\r" #("" "\r\r")
  ",\r\n" #("" ""))

(mtest-csv
  "a\r" #("a\r")
  "a\r\n" #("a")
  "a\r\r" #("a\r\r")
  "a\r\r\n" #("a\r")
  "a\r\r" #("a\r\r")
  "a\r\r\r" #("a\r\r\r")
  "a\r\r\r\n" #("a\r\r")
  "a\r,a\r" #("a\r" "a\r")
  "a\r\n,a\r" #("a")
  "a\r\r\n,a\r" #("a\r")
  "a,a\r\r" #("a" "a\r\r")
  "a,\r\r" #("a" "\r\r")
  ",a\r\n" #("" "a"))

(mtest-csv
  "##" #("")
  "#" #("")
  "#,#" #(",")
  "##,##" #("" "")
  "####" #("#")
  "##a#" #("a#")
  "#\r#" #("\r")
  "#\n#" #("\n")
  "#\r\n#" #("\n")
  "#\r\r\n#" #("\r\n")
  "#\r\r\r\n#" #("\r\r\n")
  "##\r\n#" #("")
  "##\r\r\n#" #("\r")
  "##\r\r\r\n#" #("\r\r"))

(mtest-csv
  "##\n" #("")
  "#\n" #("\n")
  "#,#\n" #(",")
  "##,##\n" #("" "")
  "####\n" #("#")
  "##a#\n" #("a#")
  "#\r#\n" #("\r")
  "#\n#\n" #("\n")
  "#\r\n#\n" #("\n")
  "#\r\r\n#\n" #("\r\n")
  "#\r\r\r\n#\n" #("\r\r\n")
  "##\r\n#\n" #("")
  "##\r\r\n#\n" #("\r")
  "##\r\r\r\n#\n" #("\r\r"))

(mtest-csv
  "#\r##\r#" #("\r#\r")
  "#\n##\n#" #("\n#\n")
  "#\r\n##\r\n#" #("\n#\n"))

(mtest-csv
  "a#b" #("a#b")
  "a##b" #("a##b")
  "a###b" #("a###b"))

(mtest-csv
  "#a#b" #("ab")
  "ab#cd#ef" #("ab#cd#ef"))

(mtest-csv
  "a," #("a" "")
  ",a" #("" "a")
  "a,b,c" #("a" "b" "c")
  "#a#,b,c" #("a" "b" "c")
  "a,#b#,c" #("a" "b" "c")
  "a,b,#c#" #("a" "b" "c")
  "#a#,b,#c#" #("a" "b" "c")
  "#a#,#b#,#c#" #("a" "b" "c"))

(mtest-csv
  "a,\r\n" #("a" "")
  ",a\r\n" #("" "a")
  "a,b,c\r\n" #("a" "b" "c")
  "#a#,b,c\r\n" #("a" "b" "c")
  "a,#b#,c\r\n" #("a" "b" "c")
  "a,b,#c#\r\n" #("a" "b" "c")
  "#a#,b,#c#\r\n" #("a" "b" "c")
  "#a#,#b#,#c#\r\n" #("a" "b" "c"))

(mtest-csv
  "a,\n" #("a" "")
  ",a\n" #("" "a")
  "a,b,c\n" #("a" "b" "c")
  "#a#,b,c\n" #("a" "b" "c")
  "a,#b#,c\n" #("a" "b" "c")
  "a,b,#c#\n" #("a" "b" "c")
  "#a#,b,#c#\n" #("a" "b" "c")
  "#a#,#b#,#c#\n" #("a" "b" "c"))

(mtest-csv
  "a,\r" #("a" "\r")
  ",a\r" #("" "a\r")
  "a,b,c\r" #("a" "b" "c\r")
  "#a#,b,c\r" #("a" "b" "c\r")
  "a,#b#,c\r" #("a" "b" "c\r")
  "a,b,#c#\r" #("a" "b" "c\r")
  "#a#,b,#c#\r" #("a" "b" "c\r")
  "#a#,#b#,#c#\r" #("a" "b" "c\r"))

(mtest-csv
  "a,\n" #("a" "")
  ",a\n" #("" "a")
  "a,b,c\n" #("a" "b" "c")
  "#a#,b,c\n" #("a" "b" "c")
  "a,#b#,c\n" #("a" "b" "c")
  "a,b,#c#\n" #("a" "b" "c")
  "#a#,b,#c#\n" #("a" "b" "c")
  "#a#,#b#,#c#\n" #("a" "b" "c"))

(mtest-csv
  "a,\r" #("a" "\r")
  ",a\r" #("" "a\r")
  "a,b,c\r" #("a" "b" "c\r")
  "#a#,b,c\r" #("a" "b" "c\r")
  "a,#b#,c\r" #("a" "b" "c\r")
  "a,b,#c#\r" #("a" "b" "c\r")
  "#a#,b,#c#\r" #("a" "b" "c\r")
  "#a#,#b#,#c#\r" #("a" "b" "c\r"))

(mtest-csv
  "aa,\r\n" #("aa" "")
  ",aa\r\n" #("" "aa")
  "aa,bb,cc\r\n" #("aa" "bb" "cc")
  "#aa#,bb,cc\r\n" #("aa" "bb" "cc")
  "aa,#bb#,cc\r\n" #("aa" "bb" "cc")
  "aa,bb,#cc#\r\n" #("aa" "bb" "cc")
  "#aa#,bb,#cc#\r\n" #("aa" "bb" "cc")
  "#aa#,#bb#,#cc#\r\n" #("aa" "bb" "cc"))

(mtest-csv
  "#Hello, ##Bob##!" #("Hello, #Bob#!")
  "#Hello, ##Bob##!\r" #("Hello, #Bob#!\r")
  "#Hello, ##Bob##!\n" #("Hello, #Bob#!\n")
  "#Hello, ##Bob##!\r\n" #("Hello, #Bob#!\n")
  "#Hello, ##Bob##!#\r\n" #("Hello, #Bob#!")
  "#Hello, ##Bob##!#\n" #("Hello, #Bob#!")
  "#Hello, ##Bob##!#\r" #("Hello, #Bob#!\r"))