forked from livecode/livecode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsplit.livecodescript
More file actions
263 lines (205 loc) · 7.5 KB
/
Copy pathsplit.livecodescript
File metadata and controls
263 lines (205 loc) · 7.5 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
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
script "CoreArraySplit"
/*
Copyright (C) 2015 LiveCode Ltd.
This file is part of LiveCode.
LiveCode is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License v3 as published by the Free
Software Foundation.
LiveCode is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LiveCode. If not see <http://www.gnu.org/licenses/>. */
on TestSplit
local tResult, tExpected, tRArrow, tLArrow
put numToCodePoint(0x2192) into tRArrow
put numToCodePoint(0x2190) into tLArrow
-- Split by single char
put "a,b" into tResult
put empty into tExpected
put "a" into tExpected[1]
put "b" into tExpected[2]
split tResult by ","
TestAssert "split (native, native)", tResult is tExpected
put "a," & tRArrow into tResult
put empty into tExpected
put "a" into tExpected[1]
put tRArrow into tExpected[2]
split tResult by ","
TestAssert "split (unicode, native)", tResult is tExpected
put "a" & tRArrow & "b" into tResult
put empty into tExpected
put "a" into tExpected[1]
put "b" into tExpected[2]
split tResult by tRArrow
TestAssert "split (unicode, unicode)", tResult is tExpected
----------
put "a:,b" into tResult
split tResult by ":,"
TestAssert "split multi (native, native)", tResult is tExpected
put "a" & tRArrow & tLArrow & "b" into tResult
split tResult by (tRArrow & tLArrow)
TestAssert "split multi (unicode, unicode)", tResult is tExpected
----------
put "a:b,c:d" into tResult
put empty into tExpected
put "b" into tExpected["a"]
put "d" into tExpected["c"]
split tResult by "," and ":"
TestAssert "split key (native, native)", (tResult is tExpected)
put "a:b" & tRArrow & "c:d" into tResult
split tResult by tRArrow and ":"
TestAssert "split key (unicode, unicode, native)", (tResult is tExpected)
put "a" & tRArrow & "b,c" & tRArrow & "d" into tResult
split tResult by "," and tRArrow
TestAssert "split key (unicode, native, unicode)", (tResult is tExpected)
----------
put "a,b" into tResult
put empty into tExpected
put empty into tExpected["a"]
put empty into tExpected["b"]
split tResult by "," and ":"
TestAssert "split key missing (native, native, native)", tResult is tExpected
put tRArrow & comma & tLArrow into tResult
put empty into tExpected
put empty into tExpected[tRArrow]
put empty into tExpected[tLArrow]
split tResult by "," and ":"
TestAssert "split key missing (unicode, native, native)", tResult is tExpected
end TestSplit
on TestSplitByEmpty
local tResult, tExpected, tRArrow
put numToCodePoint(0x2192) into tRArrow
put "a,b" into tResult
put empty into tExpected
put tResult into tExpected[1]
split tResult by empty
TestAssert "split (native, empty)", tResult is tExpected
put "a" & tRArrow & "b" into tResult
put empty into tExpected
put tResult into tExpected[1]
split tResult by empty
TestAssert "split (unicode, empty)", tResult is tExpected
----------
put "a:b,c:d" into tResult
put empty into tExpected
put "b,c:d" into tExpected["a"]
split tResult by empty and ":"
TestAssert "split key (native, empty, native)", tResult is tExpected
put "a:b,c:" & tRArrow into tResult
put empty into tExpected
put char 3 to -1 of tResult into tExpected["a"]
split tResult by empty and ":"
TestAssert "split key (unicode, empty, native)", tResult is tExpected
----------
put "a:b,c:d" into tResult
put empty into tExpected
put empty into tExpected["a:b"]
put empty into tExpected["c:d"]
split tResult by "," and empty
TestAssert "split key (native, native, empty)", tResult is tExpected
put tRArrow & ":b,c:" & tRArrow into tResult
put empty into tExpected
put empty into tExpected[tRArrow & ":b"]
put empty into tExpected["c:" & tRArrow]
split tResult by "," and empty
TestAssert "split key (unicode, native, empty)", tResult is tExpected
----------
put "a:b,c:d" into tResult
put empty into tExpected
put empty into tExpected[tResult]
split tResult by empty and empty
TestAssert "split key (native, empty, empty)", tResult is tExpected
put "a:b,c:" & tRArrow into tResult
put empty into tExpected
put empty into tExpected[tResult]
split tResult by empty and empty
TestAssert "split key (unicode, empty, empty)", tResult is tExpected
end TestSplitByEmpty
on TestSplitByColumn
local tResult, tExpected
put "a,b:c,d" into tResult
put empty into tExpected
put "a:c" into tExpected[1]
put "b:d" into tExpected[2]
set the columnDel to ","
set the rowDel to ":"
split tResult by column
TestAssert "split column (native, native, native)", tResult is tExpected
----------
put "a,b:c,d" into tResult
put empty into tExpected
put "a,b:c,d" into tExpected[1]
set the columnDel to empty
set the rowDel to ":"
split tResult by column
TestAssert "split column (native, empty, native)", tResult is tExpected
put "a,b:c,d" into tResult
put empty into tExpected
put "a" into tExpected[1]
put "b:c" into tExpected[2]
put "d" into tExpected[3]
set the columnDel to ","
set the rowDel to empty
split tResult by column
TestAssert "split column (native, native, empty)", tResult is tExpected
end TestSplitByColumn
on TestSplitByRow
local tResult, tExpected
put "a,b:c,d" into tResult
put empty into tExpected
put "a,b" into tExpected[1]
put "c,d" into tExpected[2]
set the columnDel to ","
set the rowDel to ":"
split tResult by row
TestAssert "split row (native, native, native)", tResult is tExpected
-- The column delimiter isn't actually used when splitting by row.
put "a,b:c,d" into tResult
set the columnDel to empty
set the rowDel to ":"
split tResult by row
TestAssert "split row (native, empty, native)", tResult is tExpected
----------
put "a,b:c,d" into tResult
put empty into tExpected
put "a,b:c,d" into tExpected[1]
set the columnDel to ","
set the rowDel to empty
split tResult by row
TestAssert "split row (native, native, empty)", tResult is tExpected
end TestSplitByRow
on TestSplitAsSet
local tResult, tExpected, tError
put "a:b" into tResult
put empty into tExpected
put true into tExpected["a"]
put true into tExpected["b"]
split tResult with ":" as set
TestAssert "split set (native, native)", tResult is tExpected
----------
put "a:b" into tResult
put empty into tExpected
put true into tExpected["a:b"]
split tResult with empty as set
TestAssert "split set (native, empty)", tResult is tExpected
end TestSplitAsSet
on TestBug22586
local tVar
put "foo" into tVar
split tVar by return and ": "
TestAssert "native split by unfound multi-char delimiter does not crash", true
put "foo" & numToCodePoint(0x2192) into tVar
split tVar by return and ": "
TestAssert "unicode split by unfound multi-char delimiter does not crash", true
end TestBug22586
on TestBug22962
local tVar
put "foo" into tVar
split tVar by return and ": "
TestAssert "native split by unfound multi-char delimiter", the keys of tVar is "foo"
put "foo" & numToCodePoint(0x2192) into tVar
split tVar by return and ": "
TestAssert "unicode split by unfound multi-char delimiter", the keys of tVar is "foo" & numToCodePoint(0x2192)
end TestBug22962