Logo

index : blog

---

  • summary
  • about
  • tree
  • log
  • branches
<< path: root/public/blog.git/html/modules/uniform/tests/200_match.spec.jai blob: 87560e8575d9469373fb3d06477782af5a699c82 [raw] [clear marker]

        
0Match_Args :: struct {
1 pattern: string;
2 text: string;
3 anchor: Anchor;
4 expected_matches: [] string;
5}
6
7returns_all_matches_if_the_expression_matches_params :: Match_Args.[
8 .{"", "", .UNANCHORED, .[""]},
9 .{"", "", .ANCHOR_START, .[""]},
10 .{"", "", .ANCHOR_BOTH, .[""]},
11 .{"a", "", .UNANCHORED, .[]},
12 .{"a", "b", .UNANCHORED, .[]},
13 .{"a", "a", .UNANCHORED, .["a"]},
14 .{"a", "a", .ANCHOR_START, .["a"]},
15 .{"a", "a", .ANCHOR_BOTH, .["a"]},
16 .{"a", "ba", .UNANCHORED, .["a"]},
17 .{"a", "ba", .ANCHOR_START, .[]},
18 .{"a", "ba", .ANCHOR_BOTH, .[]},
19 .{"a", "ab", .UNANCHORED, .["a"]},
20 .{"a", "ab", .ANCHOR_START, .["a"]},
21 .{"a", "ab", .ANCHOR_BOTH, .[]},
22 .{"a*", "b", .UNANCHORED, .[""]},
23 .{"a*", "baa", .UNANCHORED, .[""]},
24 .{"a*", "baa", .ANCHOR_START, .[""]},
25 .{"a*", "baa", .ANCHOR_BOTH, .[]},
26 .{"a+", "b", .UNANCHORED, .[]},
27 .{"a+", "baa", .UNANCHORED, .["aa"]},
28 .{"a+", "baa", .ANCHOR_START, .[]},
29 .{"(a)+", "baa", .UNANCHORED, .["aa", "a"]},
30 .{"(a+)", "baa", .UNANCHORED, .["aa", "aa"]},
31 .{"((b)(a+))", "baa", .UNANCHORED, .["baa", "baa", "b", "aa"]},
32 .{"^a+", "baa", .UNANCHORED, .[]},
33 .{"^a+", "axaaa", .UNANCHORED, .["a"]},
34 .{"a+$", "ab", .UNANCHORED, .[]},
35 .{"a+$", "axaaa", .UNANCHORED, .["aaa"]},
36 .{"a[bc]?d", "abcd", .UNANCHORED, .[]},
37 .{"a[bc]?d", "ab", .UNANCHORED, .[]},
38 .{"a[bc]?d", "xadx", .UNANCHORED, .["ad"]},
39 .{"a[bc]?d", "xabdx", .UNANCHORED, .["abd"]},
40 .{"a[bc]?d", "xacdx", .UNANCHORED, .["acd"]},
41 .{"a[bc]{2}d", "xacdx", .UNANCHORED, .[]},
42 .{"a[bc]{2}d", "xacbdx", .UNANCHORED, .["acbd"]},
43 .{"a[bc]{2}d", "xacbcdx", .UNANCHORED, .[]},
44 .{"a[bc]{1,}d", "xacdx", .UNANCHORED, .["acd"]},
45 .{"a[bc]{1,}d", "xacbcdx", .UNANCHORED, .["acbcd"]},
46 .{"a[bc]{1,}d", "xacbcbdx", .UNANCHORED, .["acbcbd"]},
47 .{"a[bc]{1,3}d", "xacdx", .UNANCHORED, .["acd"]},
48 .{"a[bc]{1,3}d", "xacbcdx", .UNANCHORED, .["acbcd"]},
49 .{"a[bc]{1,3}d", "xacbcbdx", .UNANCHORED, .[]},
50 .{"a(?:bc)", "xabcx", .UNANCHORED, .["abc"]},
51 .{"a(:?bc)", "xabcx", .UNANCHORED, .["abc", "bc"]},
52 .{"^fo", "ofo", .UNANCHORED, .[]},
53 .{"^fo", "fo", .UNANCHORED, .["fo"]},
54 .{"^fo", "foooo", .UNANCHORED, .["fo"]},
55 .{"^fo(o+)", "foooo", .UNANCHORED, .["foooo", "ooo"]},
56 .{"^fo$", "foo", .UNANCHORED, .[]},
57 .{"^fo$", "ofo", .UNANCHORED, .[]},
58 .{"^fo$", "fo", .UNANCHORED, .["fo"]},
59 .{"^f(o+)$", "fo", .UNANCHORED, .["fo", "o"]},
60 .{"^f(o+)$", "foo", .UNANCHORED, .["foo", "oo"]},
61 .{"^f(o+)$", "foosball", .UNANCHORED, .[]},
62 .{"[^a]+", "some", .UNANCHORED, .["some"]},
63 .{"[^a]+", "ahem", .UNANCHORED, .["hem"]},
64 .{"[^a]+", "ahem", .ANCHOR_START, .[]},
65 .{".*", "something", .UNANCHORED, .["something"]},
66 .{"some(.*)thing", "something", .UNANCHORED, .["something", ""]},
67 .{"some(.*)thing", "some other thing", .UNANCHORED, .["some other thing", " other "]},
68 .{"beta", "xbxx", .UNANCHORED, .[]},
69 .{"beta", "bxxx", .UNANCHORED, .[]},
70];
71
72returns_all_matches_if_the_expression_matches :: (args: Match_Args) {
73 matched, matches := match(args.text, args.pattern, args.anchor);
74
75 assert_that(matched, is(args.expected_matches.count > 0));
76 if matched {
77 assert_that(matches, contains_items(..args.expected_matches));
78 }
79} @Test
80
Copyright 2026  E766CB298A6D1E64 | Git-Thing heavily inspired by cgit