@@ -22,69 +22,6 @@ local function test_compile(str, regex, flags, want)
22
22
successes = successes + 1
23
23
end
24
24
25
- local function test_call (str , regex , flags , want )
26
- local function fail (...)
27
- print (str , regex , flags , want )
28
- print (... )
29
- fails = fails + 1
30
- end
31
-
32
- tests = tests + 1
33
- local r = jsregexp .compile_safe (regex , flags )
34
- if not r then
35
- return fail (" compilation error" )
36
- end
37
- local res = r (str )
38
- if # res ~= # want then
39
- return fail (" match count mismatch: wanted" , # want , " got " , # res )
40
- end
41
- for i , val in pairs (res ) do
42
- local want = want [i ]
43
- if not want then
44
- return fail (" compilation should have failed" )
45
- end
46
- local match = string.sub (str , val .begin_ind , val .end_ind )
47
- if match ~= want [1 ] then
48
- return fail (" global mismatch:" , match , want [1 ])
49
- end
50
- if # val .groups > 0 then
51
- if not want .groups or # want .groups ~= # val .groups then
52
- return fail (" number of match groups mismatch" )
53
- end
54
- for j , v in pairs (val .groups ) do
55
- if v ~= want .groups [j ] then
56
- return fail (" match group mismatch" , i , v , want .groups [j ])
57
- end
58
- end
59
- else
60
- if want .groups and # want .groups > 0 then
61
- return fail (" number of match groups mismatch" )
62
- end
63
- end
64
- if want .named_groups ~= nil then
65
- if val .named_groups == nil then
66
- fails = fails + 1
67
- return
68
- end
69
- for k , v in pairs (want .named_groups ) do
70
- if val .named_groups [k ] ~= v then
71
- fails = fails + 1
72
- print (
73
- string.format (
74
- " named group mismatch group '%s': expected '%s', actual '%s'" ,
75
- k ,
76
- v ,
77
- val .named_groups [k ]
78
- )
79
- )
80
- return
81
- end
82
- end
83
- end
84
- end
85
- successes = successes + 1
86
- end
87
-
88
25
local function test_exec (str , regex , flags , want )
89
26
local function fail (...)
90
27
print (str , regex , flags , want )
@@ -241,6 +178,7 @@ local function test_match(str, regex, flags, want)
241
178
end
242
179
243
180
local function test_match_all_list (str , regex , flags , want )
181
+ print (str , " ~" , regex , " flags" )
244
182
local function fail (fmt , ...)
245
183
print (str , regex , flags , want )
246
184
print (string.format (fmt , ... ))
@@ -340,133 +278,6 @@ test_compile("dummy", "[", "", nil)
340
278
-- (luajit at least..)
341
279
test_compile (" dummy" , string.char (0xfd , 166 , 178 , 165 , 138 , 183 ), " " , nil )
342
280
343
- test_call (" dummy" , " ." , " " , { { " d" } })
344
- test_call (" du" , " ." , " g" , { { " d" }, { " u" } })
345
-
346
- test_call (" dummy" , " c" , " " , {})
347
- test_call (" dummy" , " c" , " g" , {})
348
- test_call (" dummy" , " d" , " " , { { " d" } })
349
- test_call (" dummy" , " m" , " " , { { " m" } })
350
- test_call (" dummy" , " m" , " g" , { { " m" }, { " m" } })
351
-
352
- test_call (" dummy" , " (dummy)" , " " , { { " dummy" , groups = { " dummy" } } })
353
- test_call (" The quick brown fox jumps over the lazy dog" , " \\ w+" , " " , { { " The" } })
354
- test_call (
355
- " The quick brown fox jumps over the lazy dog" ,
356
- " \\ w+" ,
357
- " g" ,
358
- { { " The" }, { " quick" }, { " brown" }, { " fox" }, { " jumps" }, { " over" }, { " the" }, { " lazy" }, { " dog" } }
359
- )
360
- test_call (" The quick brown fox jumps over the lazy dog" , " [aeiou]{2,}" , " g" , { { " ui" } })
361
-
362
- test_call (" äöü" , " ." , " g" , { { " ä" }, { " ö" }, { " ü" } })
363
- test_call (" äöü" , " ." , " " , { { " ä" } })
364
- test_call (" ÄÖÜ" , " ." , " " , { { " Ä" } })
365
- test_call (" äöü" , " [äöü]" , " g" , { { " ä" }, { " ö" }, { " ü" } })
366
- test_call (" äöü" , " [äöü]*" , " g" , { { " äöü" }, { " " } })
367
- test_call (" äÄ" , " ä" , " gi" , { { " ä" }, { " Ä" } })
368
- test_call (" öäü.haha" , " ([^.]*)\\ .(.*)" , " " , { { " öäü.haha" , groups = { " öäü" , " haha" } } })
369
-
370
- test_call (" 𝄞" , " 𝄞" , " " , { { " 𝄞" } })
371
- -- these empty matches are expected and consistent with vscode
372
- test_call (" öö öö" , " ö*" , " g" , { { " öö" }, { " " }, { " öö" }, { " " } })
373
- test_call (" 𝄞𝄞 𝄞𝄞" , " [^ ]*" , " g" , { { " 𝄞𝄞" }, { " " }, { " 𝄞𝄞" }, { " " } })
374
- test_call (" 𝄞𝄞" , " 𝄞*" , " " , { { " 𝄞𝄞" } })
375
- -- doesn't work in vscode, matches only a single 𝄞 each time:
376
- test_call (" 𝄞𝄞𐐷𝄞𝄞" , " 𝄞*" , " g" , { { " 𝄞𝄞" }, { " " }, { " 𝄞𝄞" }, { " " } })
377
- -- vscode actually splits the center unicode character and produces an extra empty match. we don't.
378
- test_call (" öö𐐷öö" , " ö*" , " g" , { { " öö" }, { " " }, { " öö" }, { " " } })
379
- test_call (" a" , " 𝄞|a" , " g" , { { " a" } }) -- utf16 regex, ascii input
380
-
381
- test_call (" κόσμε" , " (κόσμε)" , " " , { { " κόσμε" , groups = { " κόσμε" } } })
382
-
383
- test_call (
384
- " jordbær fløde på" ,
385
- " (jordbær fløde på)" ,
386
- " " ,
387
- { { " jordbær fløde på" , groups = { " jordbær fløde på" } } }
388
- )
389
-
390
- test_call (
391
- " Heizölrückstoßabdämpfung" ,
392
- " (Heizölrückstoßabdämpfung)" ,
393
- " " ,
394
- { { " Heizölrückstoßabdämpfung" , groups = { " Heizölrückstoßabdämpfung" } } }
395
- )
396
-
397
- test_call (
398
- " Fête l'haï volapük" ,
399
- " (Fête l'haï volapük)" ,
400
- " " ,
401
- { { " Fête l'haï volapük" , groups = { " Fête l'haï volapük" } } }
402
- )
403
-
404
- test_call (
405
- " Árvíztűrő tükörfúrógép" ,
406
- " (Árvíztűrő tükörfúrógép)" ,
407
- " " ,
408
- { { " Árvíztűrő tükörfúrógép" , groups = { " Árvíztűrő tükörfúrógép" } } }
409
- )
410
-
411
- test_call (
412
- " いろはにほへとちりぬるを" ,
413
- " (いろはにほへとちりぬるを)" ,
414
- " " ,
415
- { { " いろはにほへとちりぬるを" , groups = { " いろはにほへとちりぬるを" } } }
416
- )
417
-
418
- test_call (
419
- " Съешь же ещё этих мягких французских булок да выпей чаю" ,
420
- " (Съешь же ещё этих мягких французских булок да выпей чаю)" ,
421
- " " ,
422
- {
423
- {
424
- " Съешь же ещё этих мягких французских булок да выпей чаю" ,
425
- groups = {
426
- " Съешь же ещё этих мягких французских булок да выпей чаю" ,
427
- },
428
- },
429
- }
430
- )
431
-
432
- -- no idea how thai works
433
- -- test("จงฝ่าฟันพัฒนาวิชาการ", "(จงฝ่าฟันพัฒนาวิชาการ)", "", {{"จงฝ่าฟันพัฒนาวิชาการ", groups="จงฝ่าฟันพัฒนาวิชาการ"}})
434
-
435
- -- named groups:
436
- test_call (" The quick brown fox jumps over the lazy dog" , " (?<first_word>\\ w+) (\\ w+) (?<third_word>\\ w+)" , " n" , {
437
- {
438
- " The quick brown" ,
439
- groups = { " The" , " quick" , " brown" },
440
- named_groups = { first_word = " The" , third_word = " brown" },
441
- },
442
- })
443
- test_call (
444
- " The qüick bröwn föx jümps över the lazy dög" ,
445
- " (?<first_word>[^ ]+) ([^ ]+) (?<third_word>[^ ]+)" ,
446
- " n" ,
447
- {
448
- {
449
- " The qüick bröwn" ,
450
- groups = { " The" , " qüick" , " bröwn" },
451
- named_groups = {
452
- first_word = " The" ,
453
- third_word = " bröwn" ,
454
- },
455
- },
456
- }
457
- )
458
- test_call (" The quick bröwn föx" , " (?<first_wörd>[^ ]+) ([^ ]+) (?<third_wörd>[^ ]+)" , " n" , {
459
- {
460
- " The quick bröwn" ,
461
- groups = { " The" , " quick" , " bröwn" },
462
- named_groups = { [" first_wörd" ] = " The" , [" third_wörd" ] = " bröwn" },
463
- },
464
- })
465
- test_call (" 𝄞𝄞 𐐷" , " (?<word>[^ ]+)" , " ng" , {
466
- { " 𝄞𝄞" , groups = { " 𝄞𝄞" }, named_groups = { word = " 𝄞𝄞" } },
467
- { " 𐐷" , groups = { " 𐐷" }, named_groups = { word = " 𐐷" } },
468
- })
469
-
470
281
test_exec (" The quick brown" , " \\ w+" , " g" , { { [0 ] = " The" }, { [0 ] = " quick" }, { [0 ] = " brown" } })
471
282
test_exec (
472
283
" The quick brown fox" ,
0 commit comments