Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /** | |||
2 | * @file test_util.c | |||
3 | * | |||
4 | * @date Dec 8, 2013 | |||
5 | * @author Andrey Belomutskiy, (c) 2012-2020 | |||
6 | */ | |||
7 | ||||
8 | #include "pch.h" | |||
9 | ||||
10 | #include <cstring> | |||
11 | ||||
12 | #include "histogram.h" | |||
13 | ||||
14 | #include "malfunction_central.h" | |||
15 | #include "cli_registry.h" | |||
16 | ||||
17 | #include "nmea.h" | |||
18 | #include "fl_stack.h" | |||
19 | ||||
20 | using namespace rusefi::stringutil; | |||
21 | ||||
22 | 4 | TEST(util, testitoa) { | ||
23 | 1 | char buffer[12]; | ||
24 |
1/1✓ Branch 1 taken 1 time.
|
1 | itoa10(buffer, 239); | |
25 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_TRUE(strEqual(buffer, "239")); | |
26 | } | |||
27 | ||||
28 | 4 | TEST(util, negativeZero) { | ||
29 |
2/8✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_TRUE(IS_NEGATIVE_ZERO(-0.0)); | |
30 | ||||
31 |
2/8✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_FALSE(IS_NEGATIVE_ZERO(-10.0)); | |
32 |
2/8✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_FALSE(IS_NEGATIVE_ZERO(10.0)); | |
33 |
2/8✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_FALSE(IS_NEGATIVE_ZERO(0.0)); | |
34 | } | |||
35 | ||||
36 | 4 | TEST(util, crc8) { | ||
37 | 1 | const uint8_t crc8_tab[] = {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38}; | ||
38 | ||||
39 |
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(0xB, crc8(crc8_tab, 8)); | |
40 | } | |||
41 | ||||
42 | 4 | TEST(util, crc) { | ||
43 |
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, efiRound(4.4, 1)); | |
44 |
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_FLOAT_EQ(1.2, efiRound(1.2345, 0.1)); | |
45 |
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_FLOAT_EQ(0.2, efiRound(0.2345, 0.1)); | |
46 | ||||
47 | 1 | const char * A = "A"; | ||
48 | ||||
49 | 1 | uint32_t c = crc32(A, 1); | ||
50 | 1 | printf("crc32(A)=%x\r\n", c); | ||
51 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(0xd3d99e8b, c, EPS4D) << "crc32 1"; | |
52 | ||||
53 | 1 | const char * line = "AbcDEFGF"; | ||
54 | 1 | c = crc32(line, 8); | ||
55 | 1 | printf("crc32(line)=%x\r\n", c); | ||
56 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(0x4775a7b1, c, EPS4D) << "crc32 line"; | |
57 | ||||
58 | 1 | c = crc32(line, 1); | ||
59 | 1 | c = crc32inc(line + 1, c, 8 - 1); | ||
60 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(0x4775a7b1, c, EPS4D) << "crc32 line inc"; | |
61 | } | |||
62 | ||||
63 | 4 | TEST(util, histogram) { | ||
64 |
1/1✓ Branch 1 taken 1 time.
|
1 | initHistogramsModule(); | |
65 | ||||
66 |
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(80, histogramGetIndex(239)); | |
67 |
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(223, histogramGetIndex(239239)); | |
68 |
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(364, histogramGetIndex(239239239)); | |
69 | ||||
70 | 1 | histogram_s h; | ||
71 | ||||
72 |
1/1✓ Branch 1 taken 1 time.
|
1 | initHistogram(&h, "test"); | |
73 | ||||
74 | 1 | int result[5]; | ||
75 |
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, hsReport(&h, result)); | |
76 | ||||
77 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 10); | |
78 |
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(1, hsReport(&h, result)); | |
79 |
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(10, result[0]); | |
80 | ||||
81 | // let's add same value one more time | |||
82 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 10); | |
83 |
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, hsReport(&h, result)); | |
84 |
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(10, result[0]); | |
85 |
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(10, result[1]); | |
86 | ||||
87 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 10); | |
88 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 10); | |
89 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 10); | |
90 | ||||
91 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 1000); | |
92 |
1/1✓ Branch 1 taken 1 time.
|
1 | hsAdd(&h, 100); | |
93 | ||||
94 |
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(5, hsReport(&h, result)); | |
95 | ||||
96 |
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(5, result[0]); | |
97 |
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(10, result[1]); | |
98 |
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(10, result[2]); | |
99 |
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(100, result[3]); | |
100 | // values are not expected to be exactly the same, it's the shape what matters | |||
101 |
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(1011, result[4]); | |
102 | } | |||
103 | ||||
104 | 1 | static void testMalfunctionCentralRemoveNonExistent() { | ||
105 | 1 | clearWarnings(); | ||
106 | ||||
107 | // this should not crash | |||
108 | 1 | removeError(ObdCode::OBD_TPS1_Correlation); | ||
109 | 1 | } | ||
110 | ||||
111 | 1 | static void testMalfunctionCentralSameElementAgain() { | ||
112 |
1/1✓ Branch 1 taken 1 time.
|
1 | clearWarnings(); | |
113 | 1 | error_codes_set_s localCopy; | ||
114 | ||||
115 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(ObdCode::OBD_TPS1_Correlation); | |
116 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(ObdCode::OBD_TPS1_Correlation); | |
117 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
118 |
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, localCopy.count); | |
119 | } | |||
120 | ||||
121 | 1 | static void testMalfunctionCentralRemoveFirstElement() { | ||
122 |
1/1✓ Branch 1 taken 1 time.
|
1 | clearWarnings(); | |
123 | 1 | error_codes_set_s localCopy; | ||
124 | ||||
125 | 1 | ObdCode firstElement = ObdCode::OBD_TPS1_Correlation; | ||
126 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(firstElement); | |
127 | ||||
128 | 1 | ObdCode secondElement = ObdCode::OBD_TPS2_Correlation; | ||
129 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(secondElement); | |
130 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
131 |
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, localCopy.count); | |
132 | ||||
133 | // let's remove first element - code | |||
134 |
1/1✓ Branch 1 taken 1 time.
|
1 | removeError(firstElement); | |
135 | ||||
136 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
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, localCopy.count); | |
138 |
3/8✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
|
1 | ASSERT_EQ(secondElement, localCopy.error_codes[0]); | |
139 | } | |||
140 | ||||
141 | 4 | TEST(misc, testMalfunctionCentral) { | ||
142 |
1/1✓ Branch 1 taken 1 time.
|
1 | testMalfunctionCentralRemoveNonExistent(); | |
143 |
1/1✓ Branch 1 taken 1 time.
|
1 | testMalfunctionCentralSameElementAgain(); | |
144 |
1/1✓ Branch 1 taken 1 time.
|
1 | testMalfunctionCentralRemoveFirstElement(); | |
145 | ||||
146 |
1/1✓ Branch 1 taken 1 time.
|
1 | clearWarnings(); | |
147 | ||||
148 | 1 | error_codes_set_s localCopy; | ||
149 | ||||
150 | // on start-up error storage should be empty | |||
151 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
152 |
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(0, localCopy.count); | |
153 | ||||
154 | 1 | ObdCode code = ObdCode::OBD_TPS1_Correlation; | ||
155 | // let's add one error and validate | |||
156 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(code); | |
157 | ||||
158 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
159 |
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, localCopy.count) << "count #1"; | |
160 |
3/8✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
|
1 | ASSERT_EQ(code, localCopy.error_codes[0]); | |
161 | ||||
162 | // let's remove value which is not in the collection | |||
163 |
1/1✓ Branch 1 taken 1 time.
|
1 | removeError((ObdCode) 22); | |
164 | // element not present - nothing to removed | |||
165 |
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, localCopy.count); | |
166 |
3/8✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
|
1 | ASSERT_EQ(code, localCopy.error_codes[0]); | |
167 | ||||
168 | 1 | code = ObdCode::OBD_TPS2_Correlation; | ||
169 |
1/1✓ Branch 1 taken 1 time.
|
1 | addError(code); | |
170 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
171 | // todo: ASSERT_EQ(2, localCopy.count); | |||
172 | ||||
173 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 time.
|
2/2✓ Decision 'true' taken 100 times.
✓ Decision 'false' taken 1 time.
|
101 | for (int code = 0; code < 100; code++) { |
174 |
1/1✓ Branch 1 taken 100 times.
|
100 | addError((ObdCode) code); | |
175 | } | |||
176 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
177 |
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(MAX_ERROR_CODES_COUNT, localCopy.count); | |
178 | ||||
179 | // now we have full array and code below present | |||
180 |
1/1✓ Branch 1 taken 1 time.
|
1 | removeError(code); | |
181 |
1/1✓ Branch 1 taken 1 time.
|
1 | getErrorCodes(&localCopy); | |
182 |
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(MAX_ERROR_CODES_COUNT - 1, localCopy.count); | |
183 | } | |||
184 | ||||
185 | static int lastInteger = -1; | |||
186 | static int lastInteger2 = -1; | |||
187 | ||||
188 | 2 | static void testEchoI(int param) { | ||
189 | 2 | lastInteger = param; | ||
190 | 2 | } | ||
191 | ||||
192 | 2 | static void testEchoII(int param, int param2) { | ||
193 | 2 | lastInteger = param; | ||
194 | 2 | lastInteger2 = param2; | ||
195 | 2 | } | ||
196 | ||||
197 | static const char *lastFirst = NULL; | |||
198 | static const char *lastThird = NULL; | |||
199 | ||||
200 | 2 | static void testEchoSSS(const char *first, const char *second, const char *third) { | ||
201 | 2 | lastFirst = first; | ||
202 | 2 | lastThird = third; | ||
203 | 2 | } | ||
204 | ||||
205 | static float fFirst; | |||
206 | static float fSecond; | |||
207 | static float fThird; | |||
208 | ||||
209 | 1 | static void testEchoFFF(float first, float second, float third) { | ||
210 | 1 | fFirst = first; | ||
211 | 1 | fSecond = second; | ||
212 | 1 | fThird = third; | ||
213 | 1 | } | ||
214 | ||||
215 | #define UNKNOWN_COMMAND "dfadasdasd" | |||
216 | ||||
217 | static loc_t GPSdata; | |||
218 | ||||
219 | static char nmeaMessage[1000]; | |||
220 | ||||
221 | 4 | TEST(misc, testGpsParser) { | ||
222 | 1 | strcpy(nmeaMessage, ""); | ||
223 | 1 | gps_location(&GPSdata, nmeaMessage); | ||
224 | ||||
225 | // we need to pass a mutable string, not a constant because the parser would be modifying the string | |||
226 | 1 | strcpy(nmeaMessage, "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69"); | ||
227 | 1 | gps_location(&GPSdata, nmeaMessage); | ||
228 |
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, GPSdata.quality) << "1 valid"; | |
229 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(3349.896, GPSdata.latitude, EPS3D) << "1 latitude"; | |
230 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(11808.521, GPSdata.longitude, EPS3D) << "1 longitude"; | |
231 | ||||
232 |
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, GPSdata.speed) << "1 speed"; | |
233 | // ASSERT_EQ( 0, GPSdata.altitude) << "1 altitude"; // GPRMC not overwrite altitude | |||
234 |
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( 360, GPSdata.course) << "1 course"; | |
235 | ||||
236 | 1 | strcpy(nmeaMessage, "$GPGGA,111609.14,5001.27,N,3613.06,E,3,08,0.0,10.2,M,0.0,M,0.0,0000*70"); | ||
237 | 1 | gps_location(&GPSdata, nmeaMessage); | ||
238 |
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, GPSdata.quality) << "2 valid"; // see field details | |
239 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(50.0212, GPSdata.latitude, EPS3D) << "2 latitude"; | |
240 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(36.2177, GPSdata.longitude, EPS3D) << "2 longitude"; | |
241 |
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, GPSdata.speed) << "2 speed"; | |
242 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(10.2, GPSdata.altitude, EPS3D) << "2 altitude"; | |
243 | // ASSERT_EQ( 0, GPSdata.course) << "2 course"; // GPGGA not overwrite course | |||
244 | ||||
245 | 1 | strcpy(nmeaMessage, "$GPRMC,111609.14,A,5001.27,N,3613.06,E,11.2,0.0,261206,0.0,E*50"); | ||
246 | 1 | gps_location(&GPSdata, nmeaMessage); | ||
247 |
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, GPSdata.quality) << "3 valid"; | |
248 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(5001.27, GPSdata.latitude, EPS3D) << "3 latitude"; | |
249 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(3613.06, GPSdata.longitude, EPS3D) << "3 longitude"; | |
250 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(11.2, GPSdata.speed, EPS3D) << "3 speed"; | |
251 | // ASSERT_EQ( 0, GPSdata.altitude) << "3 altitude"; // GPRMC not overwrite altitude | |||
252 |
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, GPSdata.course) << "3 course"; | |
253 |
3/9✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ( 2006u, GPSdata.time.year + 1900u) << "3 GPS yy"; | |
254 |
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( 12u, GPSdata.time.month) << "3 GPS mm"; | |
255 |
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( 26u, GPSdata.time.day) << "3 GPS dd"; | |
256 |
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( 11u, GPSdata.time.hour) << "3 GPS hh"; | |
257 |
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( 16u, GPSdata.time.minute) << "3 GPS mm"; | |
258 |
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( 9u, GPSdata.time.second) << "3 GPS ss"; | |
259 | ||||
260 | // check again first one | |||
261 | // we need to pass a mutable string, not a constant because the parser would be modifying the string | |||
262 | 1 | strcpy(nmeaMessage, "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69"); | ||
263 | 1 | gps_location(&GPSdata, nmeaMessage); | ||
264 |
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, GPSdata.quality) << "4 valid"; | |
265 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(3349.896, GPSdata.latitude, EPS3D) << "4 latitude"; | |
266 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(11808.521, GPSdata.longitude, EPS3D) << "4 longitude"; | |
267 |
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, GPSdata.speed) << "4 speed"; | |
268 |
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( 360, GPSdata.course) << "4 course"; | |
269 | } | |||
270 | ||||
271 | // this buffer is needed because on Unix you would not be able to change static char constants | |||
272 | static char buffer[300]; | |||
273 | ||||
274 | 4 | TEST(misc, testConsoleLogic) { | ||
275 | 1 | resetConsoleActions(); | ||
276 | ||||
277 | 1 | helpCommand(); | ||
278 | ||||
279 | 1 | const char * cmd = "he ha"; | ||
280 |
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, findEndOfToken(cmd)); | |
281 | ||||
282 | 1 | cmd = "\"hee\" ha"; | ||
283 |
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(5, findEndOfToken(cmd)); | |
284 | ||||
285 | 1 | cmd = "\"h e\" ha"; | ||
286 |
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(5, findEndOfToken(cmd)); | |
287 | ||||
288 | 1 | strcpy(buffer, "echo"); | ||
289 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 36 taken 1 time.
✗ Branch 37 not taken.
|
1 | ASSERT_TRUE(strEqual("echo", unquote(buffer))); | |
290 | ||||
291 | 1 | strcpy(buffer, "\"echo\""); | ||
292 |
4/11✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 39 taken 1 time.
✗ Branch 40 not taken.
|
1 | ASSERT_TRUE(strEqual("echo", unquote(buffer))) << "unquote quoted"; | |
293 | ||||
294 |
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(10, tokenLength(UNKNOWN_COMMAND)); | |
295 | ||||
296 | // handling invalid token should work | |||
297 | 1 | strcpy(buffer, "sdasdafasd asd"); | ||
298 | 1 | handleConsoleLine(buffer); | ||
299 | ||||
300 | 1 | printf("\r\naddConsoleActionI\r\n"); | ||
301 | 1 | addConsoleActionI("echoi", testEchoI); | ||
302 | 1 | strcpy(buffer, "echoi 239"); | ||
303 | 1 | handleConsoleLine(buffer); | ||
304 |
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(239, lastInteger); | |
305 | ||||
306 | 1 | printf("\r\naddConsoleActionI 240 with two spaces\r\n"); | ||
307 | 1 | strcpy(buffer, "echoi 240"); | ||
308 | 1 | handleConsoleLine(buffer); | ||
309 |
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(240, lastInteger); | |
310 | ||||
311 | ||||
312 | 1 | printf("\r\naddConsoleActionII\r\n"); | ||
313 | 1 | addConsoleActionII("echoii", testEchoII); | ||
314 | 1 | strcpy(buffer, "echoii 22 239"); | ||
315 | 1 | handleConsoleLine(buffer); | ||
316 |
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(22, lastInteger); | |
317 |
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(239, lastInteger2); | |
318 | ||||
319 | 1 | printf("\r\naddConsoleActionII three spaces\r\n"); | ||
320 | 1 | strcpy(buffer, "echoii 21 220"); | ||
321 | 1 | handleConsoleLine(buffer); | ||
322 |
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(21, lastInteger); | |
323 |
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(220, lastInteger2); | |
324 | ||||
325 | 1 | printf("\r\addConsoleActionSSS\r\n"); | ||
326 | 1 | addConsoleActionSSS("echosss", testEchoSSS); | ||
327 | 1 | strcpy(buffer, "echosss 111 222 333"); | ||
328 | 1 | handleConsoleLine(buffer); | ||
329 |
3/8✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_EQ(111, atoi(lastFirst)); | |
330 |
3/8✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_EQ(333, atoi(lastThird)); | |
331 | ||||
332 | 1 | strcpy(buffer, "echosss \" 1\" 222 333"); | ||
333 | 1 | handleConsoleLine(buffer); | ||
334 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_TRUE(strEqual("\" 1\"", lastFirst)); | |
335 | ||||
336 | 1 | printf("\r\addConsoleActionFFF\r\n"); | ||
337 | 1 | addConsoleActionFFF("echofff", testEchoFFF); | ||
338 | 1 | strcpy(buffer, "echofff 1.0 2 00003.0"); | ||
339 | 1 | handleConsoleLine(buffer); | ||
340 | ||||
341 |
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.0, fFirst); | |
342 |
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.0, fSecond); | |
343 |
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(3.0, fThird); | |
344 | ||||
345 | //addConsoleActionSSS("GPS", testGpsParser); | |||
346 | } | |||
347 | ||||
348 | 4 | TEST(misc, testFLStack) { | ||
349 |
1/1✓ Branch 2 taken 1 time.
|
1 | FLStack<int, 4> stack; | |
350 |
3/8✓ Branch 5 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(0, stack.size()); | |
351 | ||||
352 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(123); | |
353 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(234); | |
354 |
3/8✓ Branch 5 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(2, stack.size()); | |
355 | ||||
356 |
1/1✓ Branch 2 taken 1 time.
|
1 | int v = stack.pop(); | |
357 |
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(234, v); | |
358 |
3/8✓ Branch 5 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(1, stack.size()); | |
359 |
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(123, stack.get(0)); | |
360 | ||||
361 |
1/1✓ Branch 1 taken 1 time.
|
1 | v = stack.pop(); | |
362 |
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(123, v); | |
363 |
3/8✓ Branch 5 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(0, stack.size()); | |
364 | ||||
365 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(123); | |
366 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(234); | |
367 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(345); | |
368 |
1/1✓ Branch 1 taken 1 time.
|
1 | stack.push(456); | |
369 |
3/8✓ Branch 5 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(4, stack.size()); | |
370 | ||||
371 | 1 | stack.remove(123); | ||
372 |
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(456, stack.get(0)); | |
373 |
3/8✓ Branch 5 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(3, stack.size()); | |
374 | } | |||
375 | ||||
376 | static char buff[32]; | |||
377 | ||||
378 | 4 | TEST(misc, testMisc) { | ||
379 | 1 | strcpy(buff, " ab "); | ||
380 | // we need a mutable array here | |||
381 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 36 taken 1 time.
✗ Branch 37 not taken.
|
1 | ASSERT_TRUE(strEqual("ab", efiTrim(buff))); | |
382 | ||||
383 | ||||
384 | { | |||
385 | 1 | float v = atoff("1.0"); | ||
386 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(1.0, v, EPS4D) << "atoff"; | |
387 | } | |||
388 | { | |||
389 | 1 | float v = atoff("nan"); | ||
390 |
2/9✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
|
1 | ASSERT_TRUE(std::isnan(v)) << "NaN atoff"; | |
391 | } | |||
392 | { | |||
393 | 1 | float v = atoff("N"); | ||
394 |
2/9✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
|
1 | ASSERT_TRUE(std::isnan(v)) << "NaN atoff"; | |
395 | } | |||
396 | ||||
397 | // ASSERT_EQ(true, strEqual("spa3", getPinName(SPARKOUT_3_OUTPUT))); | |||
398 | // ASSERT_EQ(SPARKOUT_12_OUTPUT, getPinByName("spa12")); | |||
399 | } | |||
400 | ||||
401 | 522954 | int getRusEfiVersion() { | ||
402 | 522954 | return 123123; | ||
403 | } | |||
404 | ||||
405 | 4 | TEST(util, PeakDetect) { | ||
406 | 1 | constexpr int startTime = 50; | ||
407 | 1 | constexpr int timeout = 100; | ||
408 | 1 | PeakDetect<int, timeout> dut; | ||
409 | ||||
410 | // Set a peak | |||
411 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(dut.detect(1000, startTime), 1000); | |
412 | ||||
413 | // Smaller value at the same time is ignored | |||
414 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(dut.detect(500, startTime), 1000); | |
415 | ||||
416 | // Larger value at the same time raises the peak | |||
417 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(dut.detect(1500, startTime), 1500); | |
418 | ||||
419 | // Small value at almost the timeout is ignored | |||
420 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(dut.detect(500, startTime + timeout - 1), 1500); | |
421 | ||||
422 | // Small value past the timeout is used | |||
423 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(dut.detect(500, startTime + timeout + 1), 500); | |
424 | 1 | } | ||
425 | ||||
426 | 4 | TEST(util, isInRange) { | ||
427 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_FALSE(isInRange(5, 4, 10)); | |
428 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_TRUE(isInRange(5, 5, 10)); | |
429 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_TRUE(isInRange(5, 7, 10)); | |
430 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_TRUE(isInRange(5, 10, 10)); | |
431 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_FALSE(isInRange(5, 11, 10)); | |
432 | 1 | } | ||
433 | ||||
434 | 4 | TEST(util, wrapAngle) { | ||
435 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
436 | ||||
437 | // Test within range | |||
438 |
3/7✓ 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.
|
1 | EXPECT_EQ(0, wrapAngleMethod(0)); | |
439 |
3/7✓ 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.
|
1 | EXPECT_EQ(20, wrapAngleMethod(20)); | |
440 |
3/7✓ 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.
|
1 | EXPECT_EQ(710, wrapAngleMethod(710)); | |
441 | ||||
442 | // Test off the top of the range | |||
443 |
3/7✓ 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.
|
1 | EXPECT_EQ(1, wrapAngleMethod(721)); | |
444 |
3/7✓ 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.
|
1 | EXPECT_EQ(20, wrapAngleMethod(740)); | |
445 |
3/7✓ 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.
|
1 | EXPECT_EQ(719, wrapAngleMethod(720 + 719)); | |
446 |
3/7✓ 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.
|
1 | EXPECT_EQ(0, wrapAngleMethod(720 + 720)); | |
447 |
3/7✓ 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.
|
1 | EXPECT_EQ(5, wrapAngleMethod(10 * 720 + 5)); | |
448 | ||||
449 | // Test off the bottom of the range | |||
450 |
3/7✓ 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.
|
1 | EXPECT_EQ(719, wrapAngleMethod(-1)); | |
451 |
3/7✓ 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.
|
1 | EXPECT_EQ(360, wrapAngleMethod(-360)); | |
452 |
3/7✓ 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.
|
1 | EXPECT_EQ(1, wrapAngleMethod(-719)); | |
453 | 2 | } | ||
454 |