GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/test_event_queue.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 135 0 135
Functions: 100.0% 23 0 23
Branches: 46.8% 184 0 393
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /**
2 * @file test_signal_executor.cpp
3 *
4 * @date Nov 28, 2013
5 * @author Andrey Belomutskiy, (c) 2012-2020
6 */
7
8 #include "pch.h"
9
10 #include "event_queue.h"
11
12 static int callbackCounter = 0;
13
14 12 static void callback() {
15 12 callbackCounter++;
16 12 }
17
18 namespace {
19 auto const callbackAction{ action_s::make<callback>() };
20 }
21
22 static int complexTestNow;
23
24 struct TestPwm {
25 2 TestPwm(EventQueue *eventQueue) {
26 2 this->eventQueue = eventQueue;
27 2 }
28 scheduling_s s;
29 int period;
30 EventQueue *eventQueue;
31 };
32
33 4 static void complexCallback(TestPwm *testPwm) {
34 4 callbackCounter++;
35
36
1/1
✓ Branch 2 taken 4 times.
8 testPwm->eventQueue->insertTask(&testPwm->s, complexTestNow + testPwm->period,
37 8 action_s::make<complexCallback>(testPwm));
38 4 }
39
40 4 TEST(EventQueue, testSignalExecutor2) {
41
1/1
✓ Branch 2 taken 1 time.
1 EventQueue eq;
42 1 TestPwm p1(&eq);
43 1 TestPwm p2(&eq);
44 1 p1.period = 2;
45 1 p2.period = 3;
46
47 1 complexTestNow = 0;
48 1 callbackCounter = 0;
49
1/1
✓ Branch 3 taken 1 time.
1 eq.insertTask(&p1.s, 0, action_s::make<complexCallback>(&p1));
50
1/1
✓ Branch 3 taken 1 time.
1 eq.insertTask(&p2.s, 0, action_s::make<complexCallback>(&p2));
51
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(complexTestNow);
52
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 2, callbackCounter) << "callbackCounter #1";
53
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(2, eq.size());
54
55
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(complexTestNow = 2);
56
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 3, callbackCounter) << "callbackCounter #2";
57
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(2, eq.size());
58
59
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(complexTestNow = 3);
60
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 4, callbackCounter) << "callbackCounter #3";
61
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(2, eq.size());
62
63 }
64
65 static uintptr_t prevValue = 0;
66
67 3 static void orderCallback(uintptr_t a) {
68 3 uintptr_t value = a;
69
70 3 printf("value=%d prevValue=%d\r\n", value, prevValue);
71
2/9
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 3 times.
✗ Branch 34 not taken.
3 ASSERT_TRUE(value > prevValue) << "orderCallback";
72
73 3 prevValue = value;
74 }
75
76 4 TEST(EventQueue, simple) {
77
1/1
✓ Branch 2 taken 1 time.
1 EventQueue eq;
78
79 1 scheduling_s s1;
80 1 scheduling_s s2;
81 1 scheduling_s s3;
82
83
1/1
✓ Branch 3 taken 1 time.
1 eq.insertTask(&s1, 10, action_s::make<orderCallback>(uintptr_t{1}));
84
1/1
✓ Branch 3 taken 1 time.
1 eq.insertTask(&s2, 11, action_s::make<orderCallback>(uintptr_t{2}));
85
1/1
✓ Branch 3 taken 1 time.
1 eq.insertTask(&s3, 12, action_s::make<orderCallback>(uintptr_t{3}));
86
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(100);
87 1 }
88
89 4 TEST(EventQueue, complex) {
90
1/1
✓ Branch 2 taken 1 time.
1 EventQueue eq;
91
4/9
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ(eq.getNextEventTime(0), unexpected);
92 1 scheduling_s s1;
93 1 scheduling_s s2;
94 1 scheduling_s s3;
95 1 scheduling_s s4;
96
97
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s1, 10, callbackAction);
98
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s4, 10, callbackAction);
99
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s3, 12, callbackAction);
100
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s2, 11, callbackAction);
101
102
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(4, eq.size());
103
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(10, eq.getHead()->getMomentNt());
104
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(10, eq.getHead()->nextScheduling_s->getMomentNt());
105
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(11, eq.getHead()->nextScheduling_s->nextScheduling_s->getMomentNt());
106
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(12, eq.getHead()->nextScheduling_s->nextScheduling_s->nextScheduling_s->getMomentNt());
107
108 1 callbackCounter = 0;
109
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(10);
110
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 2, callbackCounter) << "callbackCounter/2";
111 1 callbackCounter = 0;
112
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(11);
113
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 1, callbackCounter) << "callbackCounter/1#1";
114
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(100);
115
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0, eq.size());
116
117
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s1, 12, callbackAction);
118
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s2, 11, callbackAction);
119
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s3, 10, callbackAction);
120 1 callbackCounter = 0;
121
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(10);
122
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 1, callbackCounter) << "callbackCounter/1#2";
123 1 callbackCounter = 0;
124
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(11);
125
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_EQ(1, callbackCounter);
126
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(100);
127
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0, eq.size());
128
129 1 callbackCounter = 0;
130
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s1, 10, callbackAction);
131
4/9
✓ Branch 4 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(10, eq.getNextEventTime(0).value_or(-1));
132
133
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(1);
134
3/9
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ( 0, callbackCounter) << "callbacks not expected";
135
136
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(11);
137
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_EQ(1, callbackCounter);
138
139
4/9
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ(eq.getNextEventTime(0), unexpected);
140
141
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s1, 10, callbackAction);
142
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s2, 13, callbackAction);
143
4/9
✓ Branch 4 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(10, eq.getNextEventTime(0).value_or(-1));
144
145
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(1);
146
4/9
✓ Branch 4 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(10, eq.getNextEventTime(0).value_or(-1));
147
148
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(100);
149
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0, eq.size());
150 1 callbackCounter = 0;
151 // both events are scheduled for the same time
152
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s1, 10, callbackAction);
153
1/1
✓ Branch 1 taken 1 time.
1 eq.insertTask(&s2, 10, callbackAction);
154
155
1/1
✓ Branch 1 taken 1 time.
1 eq.executeAll(11);
156
157
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_EQ(2, callbackCounter);
158 }
159
160 class EventQueueRemoveTest : public ::testing::Test {
161 protected:
162 EventQueue dut;
163 scheduling_s s1, s2, s3;
164
165 4 void SetUp() override {
166 4 dut.insertTask(&s1, 100, callbackAction);
167 4 dut.insertTask(&s2, 200, callbackAction);
168 4 dut.insertTask(&s3, 300, callbackAction);
169
170 // Check that things are assembled as we think
171
4/9
✓ Branch 3 taken 4 times.
✓ Branch 7 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 32 not taken.
4 ASSERT_EQ(&s1, dut.getElementAtIndexForUnitText(0));
172
4/9
✓ Branch 3 taken 4 times.
✓ Branch 7 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 32 not taken.
4 ASSERT_EQ(&s2, dut.getElementAtIndexForUnitText(1));
173
4/9
✓ Branch 3 taken 4 times.
✓ Branch 7 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 32 not taken.
4 ASSERT_EQ(&s3, dut.getElementAtIndexForUnitText(2));
174
4/9
✓ Branch 2 taken 4 times.
✓ Branch 5 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 4 times.
✗ Branch 28 not taken.
4 ASSERT_EQ(nullptr, dut.getElementAtIndexForUnitText(3));
175 }
176 };
177
178 4 TEST_F(EventQueueRemoveTest, removeHead) {
179 // Remove the element at the head
180 1 dut.remove(&s1);
181
182 // Check that it's gone
183
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s2, dut.getElementAtIndexForUnitText(0));
184
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s3, dut.getElementAtIndexForUnitText(1));
185
4/9
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
1 ASSERT_EQ(nullptr, dut.getElementAtIndexForUnitText(2));
186 }
187
188 4 TEST_F(EventQueueRemoveTest, removeMiddle) {
189 // Remove the element in the middle
190 1 dut.remove(&s2);
191
192 // Check that it's gone
193
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s1, dut.getElementAtIndexForUnitText(0));
194
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s3, dut.getElementAtIndexForUnitText(1));
195
4/9
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
1 ASSERT_EQ(nullptr, dut.getElementAtIndexForUnitText(2));
196 }
197
198 4 TEST_F(EventQueueRemoveTest, removeEnd) {
199 // Remove the element at the end
200 1 dut.remove(&s3);
201
202 // Check that it's gone
203
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s1, dut.getElementAtIndexForUnitText(0));
204
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(&s2, dut.getElementAtIndexForUnitText(1));
205
4/9
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
1 ASSERT_EQ(nullptr, dut.getElementAtIndexForUnitText(2));
206 }
207
208 TEST_F(EventQueueRemoveTest, removeNotPresent) {
209 scheduling_s s4;
210
211 // Remove an element not already in the list - shouldn't fail
212 EXPECT_NO_THROW(dut.remove(&s4));
213
214 // Check that the list didn't change
215 ASSERT_EQ(&s1, dut.getElementAtIndexForUnitText(0));
216 ASSERT_EQ(&s2, dut.getElementAtIndexForUnitText(1));
217 ASSERT_EQ(&s3, dut.getElementAtIndexForUnitText(2));
218 ASSERT_EQ(nullptr, dut.getElementAtIndexForUnitText(3));
219 }
220