Skip to content

Commit 55879b4

Browse files
LG-73 Add test for CDD item indication
1 parent f29e656 commit 55879b4

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

test/callback_tests.cpp

+55
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,27 @@ class WpcCallbackTest : public WpcTest
128128
uint8_t expected_dst_ep;
129129
};
130130

131+
struct ConfigDataItemCb : public BaseCallbackHandler
132+
{
133+
void reset()
134+
{
135+
std::lock_guard<std::mutex> lock(mutex);
136+
callback_called = false;
137+
payload.clear();
138+
expected_endpoint = 0;
139+
}
140+
141+
std::vector<uint8_t> payload;
142+
143+
uint16_t expected_endpoint;
144+
};
145+
131146
inline static StackStatusCb stack_status_cb;
132147
inline static ScanNeighborsCb scan_neighbors_cb;
133148
inline static AppConfigCb app_config_cb;
134149
inline static DataSentCb data_sent_cb;
135150
inline static DataReceivedCb data_received_cb;
151+
inline static ConfigDataItemCb config_data_item_cb;
136152

137153
static void onStackStatusReceived(uint8_t status)
138154
{
@@ -195,13 +211,29 @@ class WpcCallbackTest : public WpcTest
195211
return true;
196212
}
197213

214+
static void onConfigDataItemReceived(const uint16_t endpoint,
215+
const uint8_t* const payload,
216+
const uint8_t size)
217+
{
218+
if (endpoint != config_data_item_cb.expected_endpoint) {
219+
return;
220+
}
221+
222+
std::lock_guard<std::mutex> lock(config_data_item_cb.mutex);
223+
config_data_item_cb.callback_called = true;
224+
225+
config_data_item_cb.payload.resize(size);
226+
std::memcpy(config_data_item_cb.payload.data(), payload, size);
227+
}
228+
198229
void SetUp() override
199230
{
200231
stack_status_cb.reset();
201232
scan_neighbors_cb.reset();
202233
app_config_cb.reset();
203234
data_sent_cb.reset();
204235
data_received_cb.reset();
236+
config_data_item_cb.reset();
205237
}
206238

207239
void TearDown() override
@@ -210,6 +242,7 @@ class WpcCallbackTest : public WpcTest
210242
WPC_unregister_from_scan_neighbors_done();
211243
WPC_unregister_from_app_config_data();
212244
WPC_unregister_for_data();
245+
WPC_unregister_from_config_data_item();
213246
}
214247
};
215248

@@ -376,3 +409,25 @@ TEST_F(WpcCallbackTest, testSendFragmentedDataWithReceiveCallback)
376409
}
377410
}
378411

412+
TEST_F(WpcCallbackTest, testConfigDataItemCallback)
413+
{
414+
const uint16_t TEST_ENDPOINT = 0x4156;
415+
const uint8_t TEST_DATA[] = { 0x95, 0x85, 0x75 };
416+
417+
{
418+
std::lock_guard<std::mutex> lock(data_received_cb.mutex);
419+
config_data_item_cb.expected_endpoint = TEST_ENDPOINT;
420+
}
421+
422+
ASSERT_EQ(APP_RES_OK, WPC_register_for_config_data_item(onConfigDataItemReceived));
423+
424+
ASSERT_EQ(APP_RES_OK, WPC_set_config_data_item(TEST_ENDPOINT, TEST_DATA, sizeof(TEST_DATA)));
425+
426+
ASSERT_NO_FATAL_FAILURE(config_data_item_cb.WaitForCallback());
427+
428+
{
429+
std::lock_guard<std::mutex> lock(config_data_item_cb.mutex);
430+
ASSERT_EQ(sizeof(TEST_DATA), config_data_item_cb.payload.size());
431+
ASSERT_EQ_ARRAY(TEST_DATA, (uint8_t*)config_data_item_cb.payload.data(), sizeof(TEST_DATA));
432+
}
433+
}

0 commit comments

Comments
 (0)