GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_regex.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 49 49 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 7 static void check_pattern(char const* content, char const* pattern, gate::index_t expected_match_pos, gate::index_t expected_match_len)
7 {
8 14 String const c = String::createStatic(content);
9 14 String const p = String::createStatic(pattern);
10
1/2
✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
14 RegEx r(p);
11 7 gate_size_t len = 0;
12
1/2
✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
7 gate::index_t pos = r.match(c, &len);
13
4/12
✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 7 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
7 GATEXX_TEST_CHECK_EQUAL(pos, expected_match_pos);
14
4/12
✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 7 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
7 GATEXX_TEST_CHECK_EQUAL(len, expected_match_len);
15 7 }
16
17 4 static void check_pattern(char const* content, char const* pattern, bool_t expected_match_found)
18 {
19 8 String const c = String::createStatic(content);
20 8 String const p = String::createStatic(pattern);
21
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
8 RegEx r(p);
22 4 gate::size_t pos = 0;
23 4 gate::size_t len = 0;
24
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 bool_t match_found = r.match(c, pos, len);
25
4/12
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
4 GATEXX_TEST_CHECK_EQUAL(match_found, expected_match_found);
26 4 }
27
28
2/7
✓ Branch 2 taken 1 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.
6 GATEXX_TEST_UNIT(RegexPatterns)
29 {
30 {
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 2 }
45
46
47
2/7
✓ Branch 2 taken 1 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.
6 GATEXX_TEST_UNIT(Regex)
48 {
49
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static String const content = String::createStaticFrom("abcdefghi");
50
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static String const pattern = String::createStaticFrom("def");
51
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 RegEx r(pattern);
52
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);
53 2 gate::size_t pos = 0, len = 0;
54
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));
55
56
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 RegEx r2(r);
57
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 RegEx r3("xyz");
58
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx2 = r2.match(content);
59
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);
60
61
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx3 = r3.match(content);
62
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);
63
64
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 r3 = r;
65
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::index_t ndx3b = r3.match(content);
66
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);
67 2 }
68
69