GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_regex.cpp
Date: 2026-10-19 17:06:30
Exec Total Coverage
Lines: 60 60 100.0%
Functions: 8 8 100.0%
Branches: 54 146 37.0%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/regexpressions.hpp"
3
4 using namespace gate;
5
6 15 static void check_pattern(char const* content, char const* pattern, gate::index_t expected_match_pos, gate::index_t expected_match_len)
7 {
8 30 String const c = String::createStatic(content);
9 30 String const p = String::createStatic(pattern);
10
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
30 RegEx r(p);
11 15 gate_size_t len = 0;
12
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
15 gate::index_t pos = r.match(c, &len);
13
4/12
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 15 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 15 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
15 GATEXX_TEST_CHECK_EQUAL(pos, expected_match_pos);
14
4/12
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 15 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 15 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
15 GATEXX_TEST_CHECK_EQUAL(len, expected_match_len);
15 15 }
16
17 5 static void check_pattern(char const* content, char const* pattern, bool_t expected_match_found)
18 {
19 10 String const c = String::createStatic(content);
20 10 String const p = String::createStatic(pattern);
21
1/2
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
10 RegEx r(p);
22 5 gate::size_t pos = 0;
23 5 gate::size_t len = 0;
24
1/2
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
5 bool_t match_found = r.match(c, pos, len);
25
4/12
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 5 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
5 GATEXX_TEST_CHECK_EQUAL(match_found, expected_match_found);
26 5 }
27
28
2/7
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
10 GATEXX_TEST_UNIT(RegexPatterns)
29 {
30 { // check wildcards
31 2 char const* content = "abcdefghi";
32 2 check_pattern(content, "^abc", 0, 3);
33 2 check_pattern(content, "^abc$", false);
34 2 check_pattern(content, "ghi$", 6, 3);
35 2 check_pattern(content, "^ghi$", false);
36 2 check_pattern(content, "def", 3, 3);
37 2 check_pattern(content, "^def", false);
38 2 check_pattern(content, "def$", false);
39 2 check_pattern(content, "de?", 3, 2);
40 2 check_pattern(content, "de+", 3, 2);
41 2 check_pattern(content, "de*", 3, 2);
42 2 check_pattern(content, "^abc.*i$", 0, 9);
43 }
44
45 { // check numbers
46 2 char const* content = "abc123def";
47 2 check_pattern(content, "[1-3]", 3, 1);
48 2 check_pattern(content, "[2-3]", 4, 1);
49 2 check_pattern(content, "[4-9]", false);
50 2 check_pattern(content, "\\d", 3, 1);
51 2 check_pattern(content, "\\D", 0, 1);
52 }
53
54 {
55 2 char const* content = " a b";
56 2 check_pattern(content, "\\w", 1, 1);
57 2 check_pattern(content, "\\W", 0, 1);
58 2 check_pattern(content, "\\s", 0, 1);
59 2 check_pattern(content, "\\S", 1, 1);
60 }
61 2 }
62
63
64
2/7
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
10 GATEXX_TEST_UNIT(Regex)
65 {
66
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static StaticString const content = "abcdefghi";
67
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static StaticString const pattern = "def";
68
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 RegEx r(pattern);
69
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(r.c_impl() != NULL);
70 2 gate::size_t pos = 0, len = 0;
71
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(r.match(content, pos, len));
72
73
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 RegEx r2(r);
74
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 RegEx r3("xyz");
75
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx2 = r2.match(content);
76
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ndx2 > -1);
77
78
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx3 = r3.match(content);
79
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ndx3 <= -1);
80
81
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 r3 = r;
82
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx3b = r3.match(content);
83
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ndx3b > -1);
84 2 }
85
86