Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit bd8bbb5

Browse files
committedFeb 24, 2025·
Port some of existing tests to gtest
1 parent 27f9cd1 commit bd8bbb5

File tree

6 files changed

+303
-965
lines changed

6 files changed

+303
-965
lines changed
 

‎test/cdd_tests.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ class WpcCddApiTest : public WpcTest
99

1010
// Stack should be stopped for factory reset, and it's not needed to be
1111
// started for these tests.
12-
const auto res = WPC_stop_stack();
13-
ASSERT_TRUE(APP_RES_OK == res || APP_RES_STACK_ALREADY_STOPPED == res);
12+
ASSERT_NO_FATAL_FAILURE(WpcTest::StopStack());
1413
ASSERT_EQ(APP_RES_OK, WPC_do_factory_reset());
1514
}
1615

‎test/general_tests.cpp

+286
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,286 @@
1+
#include "wpc_test.hpp"
2+
3+
class WpcGeneralTestStackOff : public WpcTest
4+
{
5+
public:
6+
static void SetUpTestSuite()
7+
{
8+
ASSERT_NO_FATAL_FAILURE(WpcTest::SetUpTestSuite());
9+
ASSERT_NO_FATAL_FAILURE(WpcTest::StopStack());
10+
}
11+
};
12+
13+
class WpcGeneralTestStackOn : public WpcTest
14+
{
15+
public:
16+
static void SetUpTestSuite()
17+
{
18+
ASSERT_NO_FATAL_FAILURE(WpcTest::SetUpTestSuite());
19+
20+
// Following parameters should be set in order to be able to start the
21+
// stack, and stack should be stopped in order to be able to set them.
22+
ASSERT_NO_FATAL_FAILURE(WpcTest::StopStack());
23+
ASSERT_EQ(APP_RES_OK, WPC_set_role(APP_ROLE_SINK));
24+
ASSERT_EQ(APP_RES_OK, WPC_set_node_address(1234));
25+
ASSERT_EQ(APP_RES_OK, WPC_set_network_address(0x654321));
26+
ASSERT_EQ(APP_RES_OK, WPC_set_network_channel(38));
27+
ASSERT_NO_FATAL_FAILURE(WpcTest::StartStack());
28+
}
29+
};
30+
31+
TEST_F(WpcGeneralTestStackOff, testFactoryReset)
32+
{
33+
ASSERT_EQ(APP_RES_OK, WPC_set_node_address(200));
34+
ASSERT_EQ(APP_RES_OK, WPC_set_network_address(0x12123));
35+
ASSERT_EQ(APP_RES_OK, WPC_set_network_channel(39));
36+
37+
ASSERT_EQ(APP_RES_OK, WPC_do_factory_reset());
38+
39+
app_addr_t node_address;
40+
ASSERT_EQ(APP_RES_ATTRIBUTE_NOT_SET, WPC_get_node_address(&node_address));
41+
42+
app_addr_t network_address;
43+
ASSERT_EQ(APP_RES_ATTRIBUTE_NOT_SET, WPC_get_network_address(&network_address));
44+
45+
net_channel_t network_channel;
46+
ASSERT_EQ(APP_RES_ATTRIBUTE_NOT_SET, WPC_get_network_channel(&network_channel));
47+
}
48+
49+
TEST_F(WpcGeneralTestStackOff, testSetCSAPAddressingAttributes)
50+
{
51+
const app_role_t TEST_ROLE = APP_ROLE_HEADNODE;
52+
const app_addr_t TEST_NODE_ADDRESS = 3211;
53+
const app_addr_t TEST_NETWORK_ADDRESS = 45457;
54+
const net_channel_t TEST_NETWORK_CHANNEL = 36;
55+
56+
ASSERT_EQ(APP_RES_OK, WPC_set_role(TEST_ROLE));
57+
ASSERT_EQ(APP_RES_OK, WPC_set_node_address(TEST_NODE_ADDRESS));
58+
ASSERT_EQ(APP_RES_OK, WPC_set_network_address(TEST_NETWORK_ADDRESS));
59+
ASSERT_EQ(APP_RES_OK, WPC_set_network_channel(TEST_NETWORK_CHANNEL));
60+
61+
app_role_t role;
62+
ASSERT_EQ(APP_RES_OK, WPC_get_role(&role));
63+
ASSERT_EQ(TEST_ROLE, role);
64+
65+
app_addr_t node_address;
66+
ASSERT_EQ(APP_RES_OK, WPC_get_node_address(&node_address));
67+
ASSERT_EQ(TEST_NODE_ADDRESS, node_address);
68+
69+
app_addr_t network_address;
70+
ASSERT_EQ(APP_RES_OK, WPC_get_network_address(&network_address));
71+
ASSERT_EQ(TEST_NETWORK_ADDRESS, network_address);
72+
73+
net_channel_t network_channel;
74+
ASSERT_EQ(APP_RES_OK, WPC_get_network_channel(&network_channel));
75+
ASSERT_EQ(TEST_NETWORK_CHANNEL, network_channel);
76+
}
77+
78+
TEST_F(WpcGeneralTestStackOff, dumpCSAPAttributes)
79+
{
80+
uint8_t mtu, pdus, scratch_seq, first_channel, last_channel, data_size;
81+
uint16_t firmware[4], api_v, hw_magic, stack_profile;
82+
83+
ASSERT_EQ(APP_RES_OK, WPC_get_mtu(&mtu));
84+
RecordProperty("mtu_size", (long) mtu);
85+
86+
ASSERT_EQ(APP_RES_OK, WPC_get_pdu_buffer_size(&pdus));
87+
RecordProperty("pdu_size", (long) pdus);
88+
89+
ASSERT_EQ(APP_RES_OK, WPC_get_scratchpad_sequence(&scratch_seq));
90+
RecordProperty("scratch_seq", (long) scratch_seq);
91+
92+
ASSERT_EQ(APP_RES_OK, WPC_get_mesh_API_version(&api_v));
93+
RecordProperty("api_v", (long) api_v);
94+
95+
ASSERT_EQ(APP_RES_OK, WPC_get_firmware_version(firmware));
96+
RecordProperty("firmware_v_major", (long) firmware[0]);
97+
RecordProperty("firmware_v_minor", (long) firmware[1]);
98+
RecordProperty("firmware_v_maintenance", (long) firmware[2]);
99+
RecordProperty("firmware_v_development", (long) firmware[3]);
100+
101+
ASSERT_EQ(APP_RES_OK, WPC_get_channel_limits(&first_channel, &last_channel));
102+
RecordProperty("first_channel", (long) first_channel);
103+
RecordProperty("last_channel", (long) last_channel);
104+
105+
ASSERT_EQ(APP_RES_OK, WPC_get_app_config_data_size(&data_size));
106+
RecordProperty("max_config_data_size", (long) data_size);
107+
108+
ASSERT_EQ(APP_RES_OK, WPC_get_hw_magic(&hw_magic));
109+
RecordProperty("hw_magic", (long) hw_magic);
110+
111+
ASSERT_EQ(APP_RES_OK, WPC_get_stack_profile(&stack_profile));
112+
RecordProperty("stack_profile", (long) stack_profile);
113+
}
114+
115+
TEST_F(WpcGeneralTestStackOff, testCipherKey)
116+
{
117+
bool key_set;
118+
119+
// Verify setting the key
120+
const uint8_t key[16] = {
121+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
122+
ASSERT_EQ(APP_RES_OK, WPC_set_cipher_key(key));
123+
124+
ASSERT_EQ(APP_RES_OK, WPC_is_cipher_key_set(&key_set));
125+
ASSERT_TRUE(key_set);
126+
127+
// Verify removing the key
128+
ASSERT_EQ(APP_RES_OK, WPC_remove_cipher_key());
129+
ASSERT_EQ(APP_RES_OK, WPC_is_cipher_key_set(&key_set));
130+
ASSERT_FALSE(key_set);
131+
}
132+
133+
TEST_F(WpcGeneralTestStackOff, testAuthenticationKey)
134+
{
135+
bool key_set;
136+
137+
// Verify setting the key
138+
const uint8_t key[16] = {
139+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
140+
ASSERT_EQ(APP_RES_OK, WPC_set_authentication_key(key));
141+
142+
ASSERT_EQ(APP_RES_OK, WPC_is_authentication_key_set(&key_set));
143+
ASSERT_TRUE(key_set);
144+
145+
// Verify removing the key
146+
ASSERT_EQ(APP_RES_OK, WPC_remove_authentication_key());
147+
ASSERT_EQ(APP_RES_OK, WPC_is_authentication_key_set(&key_set));
148+
ASSERT_FALSE(key_set);
149+
}
150+
151+
TEST_F(WpcGeneralTestStackOff, testScratchpadTarget)
152+
{
153+
ASSERT_EQ(APP_RES_OK, WPC_set_role(APP_ROLE_SINK));
154+
155+
ASSERT_EQ(APP_RES_OK, WPC_write_target_scratchpad(12, 0x1234, 2, 13));
156+
157+
uint8_t target_seq;
158+
uint16_t target_crc;
159+
uint8_t action;
160+
uint8_t param;
161+
ASSERT_EQ(APP_RES_OK, WPC_read_target_scratchpad(&target_seq, &target_crc, &action, &param));
162+
163+
EXPECT_EQ(12, target_seq);
164+
EXPECT_EQ(0x1234, target_crc);
165+
EXPECT_EQ(2, action);
166+
EXPECT_EQ(13, param);
167+
}
168+
169+
TEST_F(WpcGeneralTestStackOff, gettingAppConfigShouldFailIfBufferIsTooSmall)
170+
{
171+
uint8_t max_size;
172+
ASSERT_EQ(APP_RES_OK, WPC_get_app_config_data_size(&max_size));
173+
ASSERT_GT(max_size, 1);
174+
175+
uint8_t seq;
176+
uint16_t interval;
177+
uint8_t config[UINT8_MAX];
178+
ASSERT_EQ(APP_RES_INVALID_VALUE, WPC_get_app_config_data(&seq, &interval, config, max_size - 1));
179+
}
180+
181+
TEST_F(WpcGeneralTestStackOff, settingAppConfigShouldFailIfConfigTooLarge)
182+
{
183+
ASSERT_EQ(APP_RES_OK, WPC_set_role(APP_ROLE_SINK));
184+
185+
uint8_t max_size;
186+
ASSERT_EQ(APP_RES_OK, WPC_get_app_config_data_size(&max_size));
187+
ASSERT_LT(max_size, UINT8_MAX);
188+
189+
const uint8_t config[UINT8_MAX] = {0};
190+
ASSERT_EQ(APP_RES_INVALID_VALUE, WPC_set_app_config_data(1, 30, config, max_size + 1));
191+
}
192+
193+
TEST_F(WpcGeneralTestStackOff, testSettingAppConfigDataWithInvalidInterval)
194+
{
195+
ASSERT_EQ(APP_RES_OK, WPC_set_role(APP_ROLE_SINK));
196+
197+
const uint8_t INVALID_INTERVAL = 62;
198+
const uint8_t config[1] = {0};
199+
ASSERT_EQ(APP_RES_INVALID_DIAG_INTERVAL, WPC_set_app_config_data(1, INVALID_INTERVAL, config, sizeof(config)));
200+
}
201+
202+
TEST_F(WpcGeneralTestStackOff, testSettingAppConfigData)
203+
{
204+
ASSERT_EQ(APP_RES_OK, WPC_set_role(APP_ROLE_SINK));
205+
206+
uint8_t max_size;
207+
ASSERT_EQ(APP_RES_OK, WPC_get_app_config_data_size(&max_size));
208+
209+
uint8_t existing_seq;
210+
uint16_t existing_interval;
211+
uint8_t existing_config[UINT8_MAX];
212+
ASSERT_EQ(APP_RES_OK,
213+
WPC_get_app_config_data(&existing_seq,
214+
&existing_interval,
215+
existing_config,
216+
sizeof(existing_config)));
217+
218+
uint8_t new_config[UINT8_MAX] = {0};
219+
for (uint8_t i = 0; i < sizeof(new_config); i++) {
220+
new_config[i] = i;
221+
}
222+
const uint16_t new_interval = 1800;
223+
// Set new app config. On recent stack releases, sequence is ignored.
224+
ASSERT_EQ(APP_RES_OK, WPC_set_app_config_data(100, new_interval, new_config, max_size));
225+
226+
{
227+
uint8_t seq;
228+
uint16_t interval;
229+
uint8_t config[UINT8_MAX];
230+
ASSERT_EQ(APP_RES_OK, WPC_get_app_config_data(&seq, &interval, config, sizeof(config)));
231+
ASSERT_EQ(new_interval, interval);
232+
ASSERT_EQ_ARRAY(new_config, config, max_size);
233+
}
234+
}
235+
236+
237+
TEST_F(WpcGeneralTestStackOff, testSettingAccesCycleRange)
238+
{
239+
const uint16_t RANGE_MIN = 2000;
240+
const uint16_t RANGE_MAX = 4000;
241+
242+
ASSERT_EQ(APP_RES_OK, WPC_set_access_cycle_range(RANGE_MIN, RANGE_MAX));
243+
244+
{
245+
uint16_t min, max;
246+
ASSERT_EQ(APP_RES_OK, WPC_get_access_cycle_range(&min, &max));
247+
ASSERT_EQ(RANGE_MIN, min);
248+
ASSERT_EQ(RANGE_MAX, max);
249+
}
250+
251+
{
252+
uint16_t min, max = 0;
253+
ASSERT_EQ(APP_RES_OK, WPC_get_access_cycle_limits(&min, &max));
254+
ASSERT_NE(0, min);
255+
ASSERT_NE(0, max);
256+
}
257+
}
258+
259+
TEST_F(WpcGeneralTestStackOn, testReadMSAPAttributes)
260+
{
261+
uint8_t res8;
262+
uint16_t res16;
263+
uint32_t res32;
264+
265+
ASSERT_EQ(APP_RES_OK, WPC_get_stack_status(&res8));
266+
RecordProperty("stack_status", (long) res8);
267+
268+
ASSERT_EQ(APP_RES_OK, WPC_get_PDU_buffer_usage(&res8));
269+
RecordProperty("pdu_buffer_usage", (long) res8);
270+
271+
ASSERT_EQ(APP_RES_OK, WPC_get_PDU_buffer_capacity(&res8));
272+
RecordProperty("pdu_buffer_capacity", (long) res8);
273+
274+
ASSERT_EQ(APP_RES_OK, WPC_get_autostart(&res8));
275+
RecordProperty("autostart", (long) res8);
276+
277+
ASSERT_EQ(APP_RES_OK, WPC_get_route_count(&res8));
278+
RecordProperty("route_count", (long) res8);
279+
280+
ASSERT_EQ(APP_RES_OK, WPC_get_system_time(&res32));
281+
RecordProperty("system_time", (long) res32);
282+
283+
ASSERT_EQ(APP_RES_OK, WPC_get_current_access_cycle(&res16));
284+
RecordProperty("current_access_cycle", (long) res16);
285+
}
286+

‎test/makefile_gtest

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ SOURCES := $(SOURCEPREFIX)test_main.cpp
3939
# Test cases
4040
CFLAGS += -I$(SOURCEPREFIX)
4141
SOURCES += $(SOURCEPREFIX)wpc_test.cpp \
42+
$(SOURCEPREFIX)general_tests.cpp \
4243
$(SOURCEPREFIX)cdd_tests.cpp
4344

4445
OBJECTS := $(patsubst $(SOURCEPREFIX)%, \

‎test/test.c

-963
This file was deleted.

‎test/wpc_test.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,15 @@ void WpcTest::SetUpTestSuite()
4949
ASSERT_TRUE(WpcTestEnvironment::IsInitialized()) << "Environment is not initialized";
5050
}
5151

52+
void WpcTest::StartStack()
53+
{
54+
const auto res = WPC_start_stack();
55+
ASSERT_TRUE(APP_RES_OK == res || APP_RES_STACK_ALREADY_STARTED == res);
56+
}
57+
58+
void WpcTest::StopStack()
59+
{
60+
const auto res = WPC_stop_stack();
61+
ASSERT_TRUE(APP_RES_OK == res || APP_RES_STACK_ALREADY_STOPPED == res);
62+
}
63+

‎test/wpc_test.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,8 @@ class WpcTest : public testing::Test
2626
{
2727
public:
2828
static void SetUpTestSuite();
29+
protected:
30+
static void StartStack();
31+
static void StopStack();
2932
};
3033

0 commit comments

Comments
 (0)
Please sign in to comment.