<<
path:
root/public/blog.git/html/modules/uniform/tests/050_parse.spec.jai
blob: fa8d36fd7fcc5f53a2bdb5afde53da8432d900bd
[raw]
[clear marker]
0Parse_Regexp_Args :: struct {
2 flags := ParseFlags.NoParseFlags;
3 status := Status.{.Success, ""};
6parses_simple_patterns_correctly_params :: Parse_Regexp_Args.[
10 .{p="ab(cd", status = .{.MissingParen, "ab(cd"}},
12 .{p="ab[cx", status = .{.MissingBracket, "[cx"}},
23 .{p="(?:foo)?bar", status = .{.RepeatArgument, "?"}},
24 .{p="(?:foo)?bar", flags = .LikePerl},
25 .{p="\\bbar\\B", status = .{.BadEscape, "\\b"}},
26 .{p="\\bbar\\B", flags = .LikePerl},
27 .{p="foo\\sbar", status = .{.BadEscape, "\\s"}},
33parses_simple_patterns_correctly :: (args: Parse_Regexp_Args) {
34 result, status, pool := parse(args.p, args.flags);
37 if args.status.code == .Success {
38 assert_that(status, is(Status.{.Success, ""}, equal_status));
39 assert_that(result, is_not(null));
40 stringified := to_string(result);
41 defer free(stringified);
42 assert_that(stringified, is(args.p));
44 assert_that(result, is(null));
45 assert_that(status, is(args.status, equal_status));
49simplifies_char_classes_if_possible_params :: Stringify_Test_Args.[
51 .{p="[ac]", e="[ac]"},
52 .{p="[ab]", e="[a-b]"},
53 .{p="[abcdefg]", e="[a-g]"},
54 .{p="[aefbcdg]", e="[a-g]"},
55 .{p="\\s", e="[\\t-\\n\\f-\\r ]", flags = .LikePerl},
58simplifies_char_classes_if_possible :: (args: Stringify_Test_Args) {
59 result, status, pool := parse(args.p, args.flags);
62 assert_that(result, is_not(null));
63 stringified := to_string(result);
64 defer free(stringified);
65 assert_that(stringified, is(args.e));
70equal_status :: (a: Status, b: Status) -> bool {
71 return a.code == b.code && a.error_arg == b.error_arg;
74Stringify_Test_Args :: struct {
76 flags := ParseFlags.NoParseFlags;