Skip to content

Commit 8035af8

Browse files
polldopennam
authored andcommitted
[CI] Improve unit tests
- improve test failures readability - add const qualifiers to golden data for improving safety
1 parent 1340d09 commit 8035af8

File tree

5 files changed

+157
-82
lines changed

5 files changed

+157
-82
lines changed

extras/test/src/test_advertising_data/test_advertising_data.cpp

+39-19
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ TEST_CASE("Test flags override", "[ArduinoBLE::BLEAdvertisingData]")
3030
// Mocking advertisement packet
3131
BLEAdvertisingData advData;
3232
// Expected results
33-
uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06};
34-
uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported};
33+
const uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06};
34+
const uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported};
3535

3636
WHEN("Default options for flags")
3737
{
@@ -74,9 +74,9 @@ TEST_CASE("Set default flags in an already full advertising data packet", "[Ardu
7474
const uint8_t manufacturerData[24] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
7575
17, 18, 19, 20, 21, 22, 23};
7676

77-
uint8_t defaultFlags[3] = {0x02, 0x01, 0x06};
77+
const uint8_t defaultFlags[3] = {0x02, 0x01, 0x06};
7878

79-
uint8_t goldenData[31] = {
79+
const uint8_t goldenData[31] = {
8080
(sizeof(manufacturerData) + 1), BLEFieldManufacturerData, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
8181
17, 18, 19, 20, 21, 22, 23,
8282
((uint8_t)(strlen(name) + 1)), BLEFieldCompleteLocalName, 't', 'e', 's'
@@ -109,22 +109,36 @@ TEST_CASE("BLE overwrite a full internal advertising data with an external built
109109
BLE.setLocalName("test");
110110
BLE.setAdvertisedServiceUuid("1818");
111111
BLE.advertise();
112-
//WARN("data length: " << BLE.getAdvertisingData().dataLength());
113-
verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2)));
114-
REQUIRE(verify);
115-
verify = (BLE.getScanResponseData().dataLength() == (4+2));
116-
REQUIRE(verify);
117112

113+
THEN("Check that BLE advertising data has been set")
114+
{
115+
verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2)));
116+
REQUIRE(verify);
117+
}
118+
119+
THEN("Check that BLE scan response data has been set")
120+
{
121+
verify = (BLE.getScanResponseData().dataLength() == (4+2));
122+
REQUIRE(verify);
123+
}
124+
125+
// Copy external empty adv data into advertising data
118126
BLE.setAdvertisingData(advData);
119127
BLE.advertise();
120-
//WARN(BLE.getAdvertisingData().dataLength());
121-
verify = (BLE.getAdvertisingData().dataLength() == 3);
122-
REQUIRE(verify);
128+
THEN("BLE advertising data should be erased")
129+
{
130+
verify = (BLE.getAdvertisingData().dataLength() == 3);
131+
REQUIRE(verify);
132+
}
123133

134+
// Copy external empty adv data into scan response data
124135
BLE.setScanResponseData(advData);
125136
BLE.advertise();
126-
verify = (BLE.getScanResponseData().dataLength() == 0);
127-
REQUIRE(verify);
137+
THEN("BLE scan response data should be erased")
138+
{
139+
verify = (BLE.getScanResponseData().dataLength() == 0);
140+
REQUIRE(verify);
141+
}
128142
}
129143

130144
// Clear BLE advertising data
@@ -139,29 +153,35 @@ TEST_CASE("BLE test raw data", "[ArduinoBLE::BLEAdvertisingData]")
139153

140154
WHEN("Set too large raw data")
141155
{
142-
uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
156+
const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
143157
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
144158
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
145159
retVal = advData.setRawData(data, sizeof(data));
146-
REQUIRE(!retVal);
160+
THEN("Set raw data should return false. The parameter should not be set")
161+
{
162+
REQUIRE(!retVal);
163+
}
147164
advData.clear();
148165
}
149166

150167
WHEN("Set correct raw data")
151168
{
152-
uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
169+
const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
153170
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
154171
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
155172
retVal = advData.setRawData(data, sizeof(data));
156-
REQUIRE(retVal);
173+
THEN("Set raw data should return true. The parameter should be correctly set")
174+
{
175+
REQUIRE(retVal);
176+
}
157177
advData.updateData();
158178
REQUIRE( 0 == memcmp(data, advData.data(), sizeof(data)) );
159179
advData.clear();
160180
}
161181

162182
WHEN("Hide other parameters by setting raw data")
163183
{
164-
uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
184+
const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
165185
advData.setLocalName("test");
166186
advData.setRawData(data, sizeof(data));
167187

extras/test/src/test_advertising_data/test_local_name.cpp

+28-15
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]")
3535
{
3636
const char* name = "test";
3737
retVal = advData.setLocalName(name);
38-
REQUIRE(retVal);
39-
REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
38+
THEN("Set local name should return true. The name parameter should be correctly set")
39+
{
40+
REQUIRE(retVal);
41+
}
42+
43+
THEN("Check the exact number of bytes occupied by the name just set")
44+
{
45+
REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
46+
}
4047
oldRemainingLength = advData.remainingLength();
4148

4249
advData.updateData();
@@ -47,30 +54,36 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]")
4754
{
4855
const char* name = "way too long local name (len 32)";
4956
retVal = advData.setLocalName(name);
50-
REQUIRE(!retVal);
51-
REQUIRE( oldRemainingLength == advData.remainingLength() );
52-
advData.updateData();
53-
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
57+
THEN("Set local name should return false. The name parameter should not be set")
58+
{
59+
REQUIRE(!retVal);
60+
REQUIRE( oldRemainingLength == advData.remainingLength() );
61+
advData.updateData();
62+
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
63+
}
5464
}
5565

5666
WHEN("Overwrite local name with a name as long as max data length")
5767
{
5868
const char* name = "local name with full length ";
5969
retVal = advData.setLocalName(name);
60-
REQUIRE(retVal);
61-
REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
62-
oldRemainingLength = advData.remainingLength();
70+
THEN("The name parameter should be correctly overwritten. The remaining length should be 0")
71+
{
72+
REQUIRE(retVal);
73+
REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
74+
oldRemainingLength = advData.remainingLength();
6375

64-
advData.updateData();
65-
REQUIRE(advData.dataLength() == (strlen(name) + 2));
66-
// advData should be full now
67-
REQUIRE( 0 == advData.remainingLength() );
68-
REQUIRE( 0 == advData.availableForWrite() );
76+
advData.updateData();
77+
REQUIRE(advData.dataLength() == (strlen(name) + 2));
78+
// advData should be full now
79+
REQUIRE( 0 == advData.remainingLength() );
80+
REQUIRE( 0 == advData.availableForWrite() );
81+
}
6982
}
7083

7184
WHEN("Check consistency when setting the external advertising data")
7285
{
73-
auto goldenData = advData.data();
86+
const auto goldenData = advData.data();
7487
BLE.setAdvertisingData(advData);
7588
BLE.advertise();
7689
REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );

extras/test/src/test_advertising_data/test_manufacturer.cpp

+54-27
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
2929
{
3030
BLEAdvertisingData advData;
3131
int oldRemainingLength = advData.remainingLength();
32-
uint16_t companyId = 0x1100;
32+
const uint16_t companyId = 0x1100;
3333
bool retVal;
3434

3535
WHEN("Set correct manufacturer data without id")
@@ -38,8 +38,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
3838
const uint8_t goldenData[] = {(sizeof(data) + 1), BLEFieldManufacturerData,
3939
0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
4040
retVal = advData.setManufacturerData(data, sizeof(data));
41-
REQUIRE(retVal);
42-
REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) );
41+
THEN("Check that the manufacturer data has been correctly set")
42+
{
43+
REQUIRE(retVal);
44+
REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) );
45+
}
4346
oldRemainingLength = advData.remainingLength();
4447

4548
advData.updateData();
@@ -53,8 +56,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
5356
const uint8_t goldenData[] = {(sizeof(data) + sizeof(companyId) + 1), BLEFieldManufacturerData,
5457
0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
5558
retVal = advData.setManufacturerData(companyId, data, sizeof(data));
56-
REQUIRE(retVal);
57-
REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) );
59+
THEN("Check that the manufacturer data has been correctly set")
60+
{
61+
REQUIRE(retVal);
62+
REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) );
63+
}
5864
oldRemainingLength = advData.remainingLength();
5965

6066
advData.updateData();
@@ -68,8 +74,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
6874
const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
6975
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27};
7076
retVal = advData.setManufacturerData(companyId, data, sizeof(data));
71-
REQUIRE(!retVal);
72-
REQUIRE( oldRemainingLength == advData.remainingLength() );
77+
THEN("Manufacturer data was too long, check that it has not been set")
78+
{
79+
REQUIRE(!retVal);
80+
REQUIRE( oldRemainingLength == advData.remainingLength() );
81+
}
7382
advData.updateData();
7483
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
7584
}
@@ -80,8 +89,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
8089
const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
8190
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
8291
retVal = advData.setManufacturerData(data, sizeof(data));
83-
REQUIRE(!retVal);
84-
REQUIRE( oldRemainingLength == advData.remainingLength() );
92+
THEN("Manufacturer data was too long, check that it has not been set")
93+
{
94+
REQUIRE(!retVal);
95+
REQUIRE( oldRemainingLength == advData.remainingLength() );
96+
}
8597
advData.updateData();
8698
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
8799
}
@@ -93,13 +105,19 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
93105
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
94106
const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
95107
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28};
96-
retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
97-
REQUIRE(retVal);
98-
retVal = advData.setManufacturerData(data, sizeof(data));
99-
REQUIRE(retVal);
100-
REQUIRE( 0 == advData.remainingLength() );
101-
advData.updateData();
102-
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) );
108+
THEN("Check that first insertion of manufacturer data given id is correctly done")
109+
{
110+
retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
111+
REQUIRE(retVal);
112+
}
113+
THEN("Check that the insertion of manufacturer data without after one with id is correctly done")
114+
{
115+
retVal = advData.setManufacturerData(data, sizeof(data));
116+
REQUIRE(retVal);
117+
REQUIRE( 0 == advData.remainingLength() );
118+
advData.updateData();
119+
REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) );
120+
}
103121
}
104122

105123
WHEN("Set manufacturer data given id after setting manufacturer data without id")
@@ -110,10 +128,16 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
110128
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27};
111129
const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
112130
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28};
113-
retVal = advData.setManufacturerData(data, sizeof(data));
114-
REQUIRE(retVal);
115-
retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
116-
REQUIRE(!retVal);
131+
THEN("Check that first insertion of manufacturer data WITHOUT id is correctly done")
132+
{
133+
retVal = advData.setManufacturerData(data, sizeof(data));
134+
REQUIRE(retVal);
135+
}
136+
THEN("Check that the insertion of manufacturer data given id after one without id is correctly done")
137+
{
138+
retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
139+
REQUIRE(!retVal);
140+
}
117141
}
118142

119143
WHEN("Overwrite manufacturer data with one as long as max data length")
@@ -124,17 +148,20 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
124148
0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
125149
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
126150
retVal = advData.setManufacturerData(companyId, data, sizeof(data));
127-
REQUIRE(retVal);
128-
129-
advData.updateData();
130-
REQUIRE( 0 == advData.remainingLength() );
131-
REQUIRE( 0 == advData.availableForWrite() );
132-
REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
151+
THEN("Manufacturer data should be set correctly")
152+
{
153+
REQUIRE(retVal);
154+
155+
advData.updateData();
156+
REQUIRE( 0 == advData.remainingLength() );
157+
REQUIRE( 0 == advData.availableForWrite() );
158+
REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
159+
}
133160
}
134161

135162
WHEN("Check consistency when setting the external advertising data")
136163
{
137-
auto goldenData = advData.data();
164+
const auto goldenData = advData.data();
138165
BLE.setAdvertisingData(advData);
139166
BLE.advertise();
140167
REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );

0 commit comments

Comments
 (0)