| 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 | 531078 | int getRusEfiVersion() { | ||
| 402 | 531078 | 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 |