GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_structs.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 43 43 100.0%
Functions: 11 11 100.0%
Branches: 62 155 40.0%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/strings.hpp"
3 #include "gate/structs.hpp"
4
5 using namespace gate;
6
7 struct GATE_CORE_CPP_API TestStruct
8 {
9 gate::int8_t char_member;
10 gate::int16_t short_member;
11 gate::int32_t int_member;
12 gate::int64_t long_member;
13 gate::real32_t real_member;
14 gate::String string_member;
15
16 1 TestStruct()
17 1 : char_member(0),
18 short_member(0),
19 int_member(0),
20 long_member(0),
21 1 real_member(0.0f)
22 {
23 1 }
24 };
25
26 namespace gate
27 {
28 template<>
29 struct StructDescriptor<TestStruct> : public DynStructDescriptorBase<TestStruct>
30 {
31 1 StructDescriptor()
32 1 : DynStructDescriptorBase<TestStruct>("TestStruct")
33 {
34
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::char_member, "char_member");
35
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::short_member, "short_member");
36
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::int_member, "int_member");
37
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::long_member, "long_member");
38
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::real_member, "real_member");
39
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->addMember(&TestStruct::string_member, "string_member");
40
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 this->updateDescriptor();
41 1 }
42 };
43 }
44
45 12 template<class T> void check_member(gate::ConstStruct const& s, gate::size_t index, String const& name, T const& expectedValue)
46 {
47 14 T value = T();
48
1/2
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
12 result_t result = s.getMember(index, value);
49
4/12
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 6 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
12 GATEXX_TEST_CHECK_OK(result);
50
6/16
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
12 GATEXX_TEST_CHECK_EQUAL(value, expectedValue);
51
52 12 value = T();
53
1/2
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
12 result = s.getMember(name, value);
54
4/12
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 6 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
12 GATEXX_TEST_CHECK_OK(result);
55
6/16
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
12 GATEXX_TEST_CHECK_EQUAL(value, expectedValue);
56 12 }
57
58
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(Struct)
59 {
60
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
4 gate::Struct<TestStruct> s;
61 2 s.char_member = 1;
62 2 s.short_member = 2000;
63 2 s.int_member = 3000000;
64 2 s.long_member = 4000000000;
65 2 s.real_member = 56.789f;
66
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 s.string_member = "Hello";
67
68 2 gate::ConstStruct cs(s);
69
70
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_EQUAL(cs.getMemberCount(), 6U);
71
6/16
✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
2 GATEXX_TEST_CHECK_EQUAL(cs.getStructName(), "TestStruct");
72
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_EQUAL(cs.getStructSize(), sizeof(s));
73
74
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 check_member<gate::int8_t>(cs, 0, "char_member", 1);
75
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 check_member<gate::int16_t>(cs, 1, "short_member", 2000);
76
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 check_member<gate::int32_t>(cs, 2, "int_member", 3000000);
77
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 check_member<gate::int64_t>(cs, 3, "long_member", 4000000000);
78
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 check_member<gate::real32_t>(cs, 4, "real_member", 56.789f);
79
3/6
✓ 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.
2 check_member<gate::String>(cs, 5, "string_member", "Hello");
80 2 }
81
82