1 //
2 // Copyright (C) 2025 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 #include "nfa_rw_api.cc"
18 #include <gtest/gtest.h>
19 #include <gmock/gmock.h>
20
21 class NfaRwDetectNDefTest : public ::testing::Test {
22 protected:
SetUp()23 void SetUp() override {
24 }
25 };
26
TEST_F(NfaRwDetectNDefTest,DetectNDef_Success)27 TEST_F(NfaRwDetectNDefTest, DetectNDef_Success) {
28 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
29 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
30 p_msg->op = NFA_RW_OP_DETECT_NDEF;
31 tNFA_STATUS status = NFA_RwDetectNDef();
32 EXPECT_EQ(status, NFA_STATUS_OK);
33 delete p_msg;
34 }
35
36 //NFA_RwFormatTag
37
TEST_F(NfaRwDetectNDefTest,DetectFormatTagNDef_Success)38 TEST_F(NfaRwDetectNDefTest, DetectFormatTagNDef_Success) {
39 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
40 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
41 p_msg->op = NFA_RW_OP_DETECT_NDEF;
42 tNFA_STATUS status = NFA_RwFormatTag();
43 EXPECT_EQ(status, NFA_STATUS_OK);
44 delete p_msg;
45 }
46
47 class NFA_RwI93GetMultiBlockSecurityStatusTest : public :: testing::Test{
48 protected:
SetUp()49 void SetUp() override {
50 }
51 };
52
TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest,TestWRONG_PROTOCOL)53 TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest, TestWRONG_PROTOCOL){
54 tNFA_RW_OPERATION* p_msg;
55 uint8_t first_block_number = 0x01;
56 uint16_t number_blocks = 0x10;
57 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
58 tNFA_STATUS status = NFA_RwI93GetMultiBlockSecurityStatus(0x01, 0X10);
59 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
60 }
61
TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest,DetectFormatTagNDef_Success)62 TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest, DetectFormatTagNDef_Success) {
63 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
64 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
65 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
66 p_msg->op = NFA_RW_OP_I93_GET_MULTI_BLOCK_STATUS;
67 uint8_t first_block_number = 0x01;
68 uint16_t number_blocks = 0x10;
69 p_msg->params.i93_cmd.first_block_number = first_block_number;
70 p_msg->params.i93_cmd.number_blocks = number_blocks;
71 tNFA_STATUS status = NFA_RwI93GetMultiBlockSecurityStatus(0x01,0x10);
72 EXPECT_EQ(status, NFA_STATUS_OK);
73 delete p_msg;
74 }
75
76 void* (*GKI_getbuf_ptr)(uint16_t) = GKI_getbuf;
77
TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest,MemoryAllocationFailure)78 TEST_F(NFA_RwI93GetMultiBlockSecurityStatusTest, MemoryAllocationFailure) {
79 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
80 auto original_GKI_getbuf = GKI_getbuf_ptr;
81 GKI_getbuf_ptr = [](uint16_t size) -> void* {
82 (void)size;
83 return nullptr; };
84 uint8_t first_block_number = 5;
85 uint16_t number_blocks = 3;
86 tNFA_STATUS status = NFA_RwI93GetMultiBlockSecurityStatus(first_block_number, number_blocks);
87 EXPECT_EQ(status, NFA_STATUS_OK);
88 GKI_getbuf_ptr = original_GKI_getbuf;
89 }
90
91 class NFA_RwI93GetSysInfoTest : public ::testing::Test {
92 protected:
SetUp()93 void SetUp() override {
94 }
95 };
96
TEST_F(NFA_RwI93GetSysInfoTest,TestWrongProtocol)97 TEST_F(NFA_RwI93GetSysInfoTest, TestWrongProtocol) {
98 tNFA_RW_OPERATION* p_msg;
99 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
100 uint8_t p_uid[10] = {0};
101 tNFA_STATUS status = NFA_RwI93GetSysInfo(p_uid);
102 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
103 }
104
TEST_F(NFA_RwI93GetSysInfoTest,TestSuccessWithoutUID)105 TEST_F(NFA_RwI93GetSysInfoTest, TestSuccessWithoutUID) {
106 tNFA_RW_OPERATION* p_msg = nullptr;
107 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
108 p_msg->op = NFA_RW_OP_I93_GET_SYS_INFO;
109 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
110 uint8_t* p_uid = nullptr;
111 tNFA_STATUS status = NFA_RwI93GetSysInfo(p_uid);
112 EXPECT_EQ(status, NFA_STATUS_OK);
113 }
114
TEST_F(NFA_RwI93GetSysInfoTest,TestMemoryAllocationFailure)115 TEST_F(NFA_RwI93GetSysInfoTest, TestMemoryAllocationFailure) {
116 auto original_GKI_getbuf = GKI_getbuf_ptr;
117 GKI_getbuf_ptr = [](uint16_t size) -> void* {
118 (void)size;
119 return nullptr; };
120 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
121 uint8_t p_uid[10] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10};
122 tNFA_STATUS status = NFA_RwI93GetSysInfo(p_uid);
123 EXPECT_EQ(status, NFA_STATUS_OK);
124 GKI_getbuf_ptr = original_GKI_getbuf;
125 }
126
127 class NFA_RwI93InventoryTest : public :: testing :: Test{
128 protected:
129
130 };
131
TEST_F(NFA_RwI93InventoryTest,TestWRONG_PROTOCOL)132 TEST_F(NFA_RwI93InventoryTest, TestWRONG_PROTOCOL){
133 tNFA_RW_OPERATION* p_msg;
134 uint8_t afi = 0x01;
135 uint8_t* p_uid = nullptr;
136 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
137 tNFA_STATUS status = NFA_RwI93Inventory(true,afi,p_uid);
138 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
139 }
140
TEST_F(NFA_RwI93InventoryTest,TestRequestSuccess)141 TEST_F(NFA_RwI93InventoryTest, TestRequestSuccess){
142 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
143 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
144 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
145 p_msg->op = NFA_RW_OP_I93_INVENTORY;
146 p_msg->params.i93_cmd.afi_present = true;
147 p_msg->params.i93_cmd.afi = 0x01;
148 uint8_t* p_uid = nullptr;
149 tNFA_STATUS status = NFA_RwI93Inventory(true, 0x01, p_uid);
150 EXPECT_EQ(status, NFA_STATUS_OK);
151 }
152
TEST_F(NFA_RwI93InventoryTest,TestValidCaseWithoutUID)153 TEST_F(NFA_RwI93InventoryTest, TestValidCaseWithoutUID) {
154 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
155 uint8_t* uid = nullptr;
156 void* mock_buffer = malloc(sizeof(tNFA_RW_OPERATION));
157 ASSERT_NE(mock_buffer, nullptr);
158 tNFA_STATUS result = NFA_RwI93Inventory(false, 0x01, uid);
159 EXPECT_EQ(result, NFA_STATUS_OK);
160 free(mock_buffer);
161 }
162
163 class NFA_RwI93LockAFITest : public :: testing :: Test{
164 protected:
165 };
166
TEST_F(NFA_RwI93LockAFITest,TestWrongProtocol)167 TEST_F(NFA_RwI93LockAFITest, TestWrongProtocol){
168 tNFA_RW_OPERATION* p_msg;
169 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
170 tNFA_STATUS status = NFA_RwI93LockAFI();
171 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
172 }
173
TEST_F(NFA_RwI93LockAFITest,DetectNDef_Success)174 TEST_F(NFA_RwI93LockAFITest, DetectNDef_Success) {
175 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
176 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
177 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
178 p_msg->op = NFA_RW_OP_I93_LOCK_AFI;
179 tNFA_STATUS status = NFA_RwI93LockAFI();
180 EXPECT_EQ(status, NFA_STATUS_OK);
181 delete p_msg;
182 }
183
TEST_F(NFA_RwI93LockAFITest,TestValidCaseWithoutUID)184 TEST_F(NFA_RwI93LockAFITest, TestValidCaseWithoutUID) {
185 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
186 void* mock_buffer = malloc(sizeof(tNFA_RW_OPERATION));
187 ASSERT_NE(mock_buffer, nullptr);
188 tNFA_STATUS result = NFA_RwI93LockAFI();
189 EXPECT_EQ(result, NFA_STATUS_OK);
190 free(mock_buffer);
191 }
192
193 class NFA_RwI93LockBlockTest : public :: testing :: Test{
194 protected:
195 };
196
TEST_F(NFA_RwI93LockBlockTest,TestWrongProtocol)197 TEST_F(NFA_RwI93LockBlockTest, TestWrongProtocol){
198 tNFA_RW_OPERATION* p_msg;
199 uint8_t block_number = 0x01;
200 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
201 tNFA_STATUS status = NFA_RwI93LockBlock(block_number);
202 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
203 }
204
TEST_F(NFA_RwI93LockBlockTest,DetectNDef_Success)205 TEST_F(NFA_RwI93LockBlockTest, DetectNDef_Success) {
206 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
207 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
208 uint8_t block_number = 0xFF;
209 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
210 p_msg->op = NFA_RW_OP_I93_LOCK_BLOCK;
211 p_msg->params.i93_cmd.first_block_number = block_number;
212 tNFA_STATUS status = NFA_RwI93LockBlock(block_number);
213 EXPECT_EQ(status, NFA_STATUS_OK);
214 delete p_msg;
215 }
216
TEST_F(NFA_RwI93LockBlockTest,TestValidCaseWithoutUID)217 TEST_F(NFA_RwI93LockBlockTest, TestValidCaseWithoutUID) {
218 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
219 uint8_t block_number = 0x01;
220 void* mock_buffer = malloc(sizeof(tNFA_RW_OPERATION));
221 ASSERT_NE(mock_buffer, nullptr);
222 tNFA_STATUS result = NFA_RwI93LockBlock(block_number);
223 EXPECT_EQ(result, NFA_STATUS_OK);
224 free(mock_buffer);
225 }
226
227 class NFA_RwI93LockDSFIDTest : public :: testing :: Test{
228 protected:
229 };
230
TEST_F(NFA_RwI93LockDSFIDTest,TestWrongProtocol)231 TEST_F(NFA_RwI93LockDSFIDTest, TestWrongProtocol){
232 tNFA_RW_OPERATION* p_msg;
233 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
234 tNFA_STATUS status = NFA_RwI93LockDSFID();
235 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
236 }
237
TEST_F(NFA_RwI93LockDSFIDTest,DetectNDef_Success)238 TEST_F(NFA_RwI93LockDSFIDTest, DetectNDef_Success) {
239 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
240 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
241 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
242 p_msg->op = NFA_RW_OP_I93_LOCK_BLOCK;
243 tNFA_STATUS status = NFA_RwI93LockDSFID();
244 EXPECT_EQ(status, NFA_STATUS_OK);
245 delete p_msg;
246 }
247
TEST_F(NFA_RwI93LockDSFIDTest,TestValidCaseWithoutUID)248 TEST_F(NFA_RwI93LockDSFIDTest, TestValidCaseWithoutUID) {
249 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
250 void* mock_buffer = malloc(sizeof(tNFA_RW_OPERATION));
251 ASSERT_NE(mock_buffer, nullptr);
252 tNFA_STATUS result = NFA_RwI93LockDSFID();
253 EXPECT_EQ(result, NFA_STATUS_OK);
254 free(mock_buffer);
255 }
256
257 class NFA_RwI93ReadMultipleBlocksTest : public :: testing::Test{
258 protected:
SetUp()259 void SetUp() override {
260 }
261 };
262
TEST_F(NFA_RwI93ReadMultipleBlocksTest,TestWRONG_PROTOCOL)263 TEST_F(NFA_RwI93ReadMultipleBlocksTest, TestWRONG_PROTOCOL){
264 tNFA_RW_OPERATION* p_msg;
265 uint8_t block_number = 0x01;
266 uint16_t number_blocks = 0x10;
267 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
268 tNFA_STATUS status = NFA_RwI93ReadMultipleBlocks(0x01, 0X10);
269 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
270 }
271
TEST_F(NFA_RwI93ReadMultipleBlocksTest,DetectFormatTagNDef_Success)272 TEST_F(NFA_RwI93ReadMultipleBlocksTest, DetectFormatTagNDef_Success) {
273 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
274 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
275 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
276 p_msg->op = NFA_RW_OP_I93_READ_MULTI_BLOCK;
277 uint8_t block_number = 0x01;
278 uint16_t number_blocks = 0x10;
279 p_msg->params.i93_cmd.first_block_number = block_number;
280 p_msg->params.i93_cmd.number_blocks = number_blocks;
281 tNFA_STATUS status = NFA_RwI93ReadMultipleBlocks(block_number,number_blocks);
282 EXPECT_EQ(status, NFA_STATUS_OK);
283 delete p_msg;
284 }
285
TEST_F(NFA_RwI93ReadMultipleBlocksTest,MemoryAllocationFailure)286 TEST_F(NFA_RwI93ReadMultipleBlocksTest, MemoryAllocationFailure) {
287 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
288 auto original_GKI_getbuf = GKI_getbuf_ptr;
289 GKI_getbuf_ptr = [](uint16_t size) -> void* {
290 (void)size;
291 return nullptr; };
292 uint8_t block_number = 5;
293 uint16_t number_blocks = 3;
294 tNFA_STATUS status = NFA_RwI93ReadMultipleBlocks(block_number, number_blocks);
295 EXPECT_EQ(status, NFA_STATUS_OK);
296 GKI_getbuf_ptr = original_GKI_getbuf;
297 }
298
299 class NFA_RwI93ReadSingleBlockTest : public :: testing::Test{
300 protected:
SetUp()301 void SetUp() override {
302 }
303 };
304
TEST_F(NFA_RwI93ReadSingleBlockTest,TestWRONG_PROTOCOL)305 TEST_F(NFA_RwI93ReadSingleBlockTest, TestWRONG_PROTOCOL){
306 tNFA_RW_OPERATION* p_msg;
307 uint8_t block_number = 0x01;
308 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
309 tNFA_STATUS status = NFA_RwI93ReadSingleBlock(0x01);
310 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
311 }
312
TEST_F(NFA_RwI93ReadSingleBlockTest,DetectFormatTagNDef_Success)313 TEST_F(NFA_RwI93ReadSingleBlockTest, DetectFormatTagNDef_Success) {
314 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
315 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
316 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
317 p_msg->op = NFA_RW_OP_I93_READ_SINGLE_BLOCK;
318 uint8_t block_number = 0x01;
319 p_msg->params.i93_cmd.first_block_number = block_number;
320 tNFA_STATUS status = NFA_RwI93ReadSingleBlock(block_number);
321 EXPECT_EQ(status, NFA_STATUS_OK);
322 delete p_msg;
323 }
324
TEST_F(NFA_RwI93ReadSingleBlockTest,MemoryAllocationFailure)325 TEST_F(NFA_RwI93ReadSingleBlockTest, MemoryAllocationFailure) {
326 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
327 auto original_GKI_getbuf = GKI_getbuf_ptr;
328 GKI_getbuf_ptr = [](uint16_t size) -> void* {
329 (void)size;
330 return nullptr; };
331 uint8_t block_number = 5;
332 tNFA_STATUS status = NFA_RwI93ReadSingleBlock(block_number);
333 EXPECT_EQ(status, NFA_STATUS_OK);
334 GKI_getbuf_ptr = original_GKI_getbuf;
335 }
336
337 class NFA_RwI93ResetToReadyTest : public :: testing :: Test{
338 protected:
339 };
340
TEST_F(NFA_RwI93ResetToReadyTest,TestWrongProtocol)341 TEST_F(NFA_RwI93ResetToReadyTest, TestWrongProtocol){
342 tNFA_RW_OPERATION* p_msg;
343 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
344 tNFA_STATUS status = NFA_RwI93ResetToReady();
345 EXPECT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
346 }
347
TEST_F(NFA_RwI93ResetToReadyTest,DetectNDef_Success)348 TEST_F(NFA_RwI93ResetToReadyTest, DetectNDef_Success) {
349 tNFA_RW_OPERATION* p_msg = new tNFA_RW_OPERATION;
350 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
351 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
352 p_msg->op = NFA_RW_OP_I93_RESET_TO_READY;
353 tNFA_STATUS status = NFA_RwI93ResetToReady();
354 EXPECT_EQ(status, NFA_STATUS_OK);
355 delete p_msg;
356 }
357
TEST_F(NFA_RwI93ResetToReadyTest,TestValidCaseWithoutUID)358 TEST_F(NFA_RwI93ResetToReadyTest, TestValidCaseWithoutUID) {
359 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
360 void* mock_buffer = malloc(sizeof(tNFA_RW_OPERATION));
361 ASSERT_NE(mock_buffer, nullptr);
362 tNFA_STATUS result = NFA_RwI93ResetToReady();
363 EXPECT_EQ(result, NFA_STATUS_OK);
364 free(mock_buffer);
365 }
366
367 class NFA_RwI93SelectTest : public ::testing::Test {
368 protected:
369 };
370
TEST_F(NFA_RwI93SelectTest,TestCorrectProtocol)371 TEST_F(NFA_RwI93SelectTest, TestCorrectProtocol) {
372 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
373 uint8_t p_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
374 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(
375 sizeof(tNFA_RW_OPERATION) + I93_UID_BYTE_LEN);
376 ASSERT_NE(p_msg, nullptr);
377 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
378 p_msg->op = NFA_RW_OP_I93_SELECT;
379 p_msg->params.i93_cmd.p_data = (uint8_t*)(p_msg + 1);
380 memcpy(p_msg->params.i93_cmd.p_data, p_uid, I93_UID_BYTE_LEN);
381 tNFA_STATUS status = NFA_RwI93Select(p_uid);
382 ASSERT_EQ(status, NFA_STATUS_OK);
383 free(p_msg);
384 }
385
TEST_F(NFA_RwI93SelectTest,TestWrongProtocol)386 TEST_F(NFA_RwI93SelectTest, TestWrongProtocol) {
387 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
388 uint8_t p_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
389 tNFA_STATUS status = NFA_RwI93Select(p_uid);
390 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
391 }
392
TEST_F(NFA_RwI93SelectTest,TestSuccessfulMemoryAllocation)393 TEST_F(NFA_RwI93SelectTest, TestSuccessfulMemoryAllocation) {
394 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
395 uint8_t p_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
396 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(
397 sizeof(tNFA_RW_OPERATION) + I93_UID_BYTE_LEN);
398 ASSERT_NE(p_msg, nullptr);
399 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
400 p_msg->op = NFA_RW_OP_I93_SELECT;
401 p_msg->params.i93_cmd.p_data = (uint8_t*)(p_msg + 1);
402 memcpy(p_msg->params.i93_cmd.p_data, p_uid, I93_UID_BYTE_LEN);
403 tNFA_STATUS status = NFA_RwI93Select(p_uid);
404 ASSERT_EQ(status, NFA_STATUS_OK);
405 free(p_msg);
406 }
407
408 class NFA_RwI93SetAddressingModeTest : public ::testing::Test {
409 protected:
410 };
411
TEST_F(NFA_RwI93SetAddressingModeTest,TestCorrectProtocol)412 TEST_F(NFA_RwI93SetAddressingModeTest, TestCorrectProtocol) {
413 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
414 bool mode = true;
415 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
416 ASSERT_NE(p_msg, nullptr);
417 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
418 p_msg->op = NFA_RW_OP_I93_SET_ADDR_MODE;
419 p_msg->params.i93_cmd.addr_mode = mode;
420 tNFA_STATUS status = NFA_RwI93SetAddressingMode(mode);
421 ASSERT_EQ(status, NFA_STATUS_OK);
422 free(p_msg);
423 }
424
TEST_F(NFA_RwI93SetAddressingModeTest,TestWrongProtocol)425 TEST_F(NFA_RwI93SetAddressingModeTest, TestWrongProtocol) {
426 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
427 bool mode = true;
428 tNFA_STATUS status = NFA_RwI93SetAddressingMode(mode);
429 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
430 }
431
TEST_F(NFA_RwI93SetAddressingModeTest,TestSuccessfulMemoryAllocation)432 TEST_F(NFA_RwI93SetAddressingModeTest, TestSuccessfulMemoryAllocation) {
433 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
434 bool mode = false;
435 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
436 ASSERT_NE(p_msg, nullptr);
437 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
438 p_msg->op = NFA_RW_OP_I93_SET_ADDR_MODE;
439 p_msg->params.i93_cmd.addr_mode = mode;
440 tNFA_STATUS status = NFA_RwI93SetAddressingMode(mode);
441 ASSERT_EQ(status, NFA_STATUS_OK);
442 free(p_msg);
443 }
444
445 class NFA_RwI93StayQuietTest : public testing::Test {
446 protected:
SetUp()447 void SetUp() override {
448 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
449 }
450 };
451
TEST_F(NFA_RwI93StayQuietTest,TestCorrectProtocol)452 TEST_F(NFA_RwI93StayQuietTest, TestCorrectProtocol) {
453 uint8_t test_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
454 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
455 ASSERT_NE(p_msg, nullptr);
456 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
457 p_msg->op = NFA_RW_OP_I93_STAY_QUIET;
458 p_msg->params.i93_cmd.uid_present = true;
459 memcpy(p_msg->params.i93_cmd.uid, test_uid, I93_UID_BYTE_LEN);
460 tNFA_STATUS status = NFA_RwI93StayQuiet(test_uid);
461 ASSERT_EQ(status, NFA_STATUS_OK);
462 free(p_msg);
463 }
464
TEST_F(NFA_RwI93StayQuietTest,TestWrongProtocol)465 TEST_F(NFA_RwI93StayQuietTest, TestWrongProtocol) {
466 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
467 uint8_t test_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
468 tNFA_STATUS status = NFA_RwI93StayQuiet(test_uid);
469 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
470 }
471
TEST_F(NFA_RwI93StayQuietTest,TestSuccessfulMemoryAllocation)472 TEST_F(NFA_RwI93StayQuietTest, TestSuccessfulMemoryAllocation) {
473 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
474 uint8_t test_uid[I93_UID_BYTE_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
475 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
476 ASSERT_NE(p_msg, nullptr);
477 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
478 p_msg->op = NFA_RW_OP_I93_STAY_QUIET;
479 p_msg->params.i93_cmd.uid_present = true;
480 memcpy(p_msg->params.i93_cmd.uid, test_uid, I93_UID_BYTE_LEN);
481 tNFA_STATUS status = NFA_RwI93StayQuiet(test_uid);
482 ASSERT_EQ(status, NFA_STATUS_OK);
483 free(p_msg);
484 }
485
486 class NFA_RwI93WriteAFITest : public testing::Test {
487 protected:
SetUp()488 void SetUp() override {
489 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
490 }
491 };
492
TEST_F(NFA_RwI93WriteAFITest,TestCorrectProtocol)493 TEST_F(NFA_RwI93WriteAFITest, TestCorrectProtocol) {
494 uint8_t afi = 0x12;
495 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
496 ASSERT_NE(p_msg, nullptr);
497 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
498 p_msg->op = NFA_RW_OP_I93_WRITE_AFI;
499 p_msg->params.i93_cmd.afi = afi;
500 tNFA_STATUS status = NFA_RwI93WriteAFI(afi);
501 ASSERT_EQ(status, NFA_STATUS_OK);
502 free(p_msg);
503 }
504
TEST_F(NFA_RwI93WriteAFITest,TestWrongProtocol)505 TEST_F(NFA_RwI93WriteAFITest, TestWrongProtocol) {
506 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
507 uint8_t afi = 0x12;
508 tNFA_STATUS status = NFA_RwI93WriteAFI(afi);
509 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
510 }
511
TEST_F(NFA_RwI93WriteAFITest,TestSuccessfulMemoryAllocation)512 TEST_F(NFA_RwI93WriteAFITest, TestSuccessfulMemoryAllocation) {
513 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
514 uint8_t afi = 0x12;
515 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
516 ASSERT_NE(p_msg, nullptr);
517 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
518 p_msg->op = NFA_RW_OP_I93_WRITE_AFI;
519 p_msg->params.i93_cmd.afi = afi;
520 tNFA_STATUS status = NFA_RwI93WriteAFI(afi);
521 ASSERT_EQ(status, NFA_STATUS_OK);
522 free(p_msg);
523 }
524
525 class NFA_RwI93WriteDSFIDTest : public testing::Test {
526 protected:
SetUp()527 void SetUp() override {
528 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
529 }
530 };
531
TEST_F(NFA_RwI93WriteDSFIDTest,TestCorrectProtocol)532 TEST_F(NFA_RwI93WriteDSFIDTest, TestCorrectProtocol) {
533 uint8_t dsfid = 0x34;
534 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
535 ASSERT_NE(p_msg, nullptr);
536 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
537 p_msg->op = NFA_RW_OP_I93_WRITE_DSFID;
538 p_msg->params.i93_cmd.dsfid = dsfid;
539 tNFA_STATUS status = NFA_RwI93WriteDSFID(dsfid);
540 ASSERT_EQ(status, NFA_STATUS_OK);
541 free(p_msg);
542 }
543
TEST_F(NFA_RwI93WriteDSFIDTest,TestWrongProtocol)544 TEST_F(NFA_RwI93WriteDSFIDTest, TestWrongProtocol) {
545 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
546 uint8_t dsfid = 0x34;
547 tNFA_STATUS status = NFA_RwI93WriteDSFID(dsfid);
548 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
549 }
550
TEST_F(NFA_RwI93WriteDSFIDTest,TestSuccessfulMemoryAllocation)551 TEST_F(NFA_RwI93WriteDSFIDTest, TestSuccessfulMemoryAllocation) {
552 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
553 uint8_t test_dsfid = 0x34;
554 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
555 ASSERT_NE(p_msg, nullptr);
556 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
557 p_msg->op = NFA_RW_OP_I93_WRITE_DSFID;
558 p_msg->params.i93_cmd.dsfid = test_dsfid;
559 tNFA_STATUS status = NFA_RwI93WriteDSFID(test_dsfid);
560 ASSERT_EQ(status, NFA_STATUS_OK);
561 free(p_msg);
562 }
563
564 class NFA_RwI93WriteMultipleBlocksTest : public testing::Test {
565 protected:
SetUp()566 void SetUp() override {
567 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
568 nfa_rw_cb.i93_block_size = 4;
569 nfa_rw_cb.i93_num_block = 16;
570 }
571 };
572
TEST_F(NFA_RwI93WriteMultipleBlocksTest,TestCorrectProtocol)573 TEST_F(NFA_RwI93WriteMultipleBlocksTest, TestCorrectProtocol) {
574 uint8_t first_block_number = 1;
575 uint16_t number_blocks = 3;
576 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
577 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 };
578 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION) + 12);
579 ASSERT_NE(p_msg, nullptr);
580 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
581 p_msg->op = NFA_RW_OP_I93_WRITE_MULTI_BLOCK;
582 p_msg->params.i93_cmd.first_block_number = first_block_number;
583 p_msg->params.i93_cmd.number_blocks = number_blocks;
584 p_msg->params.i93_cmd.p_data = (uint8_t*)(p_msg + 1);
585 memcpy(p_msg->params.i93_cmd.p_data, test_data, 12);
586 tNFA_STATUS status = NFA_RwI93WriteMultipleBlocks(first_block_number, number_blocks, test_data);
587 ASSERT_EQ(status, NFA_STATUS_OK);
588 free(p_msg);
589 }
590
TEST_F(NFA_RwI93WriteMultipleBlocksTest,TestWrongProtocol)591 TEST_F(NFA_RwI93WriteMultipleBlocksTest, TestWrongProtocol) {
592 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
593 uint8_t first_block_number = 1;
594 uint16_t number_blocks = 3;
595 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04 };
596 tNFA_STATUS status = NFA_RwI93WriteMultipleBlocks(first_block_number, number_blocks, test_data);
597 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
598 }
599
TEST_F(NFA_RwI93WriteMultipleBlocksTest,TestInvalidBlockSizeOrNumber)600 TEST_F(NFA_RwI93WriteMultipleBlocksTest, TestInvalidBlockSizeOrNumber) {
601 nfa_rw_cb.i93_block_size = 0;
602 nfa_rw_cb.i93_num_block = 16;
603 uint8_t first_block_number = 1;
604 uint16_t number_blocks = 3;
605 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04 };
606 tNFA_STATUS status = NFA_RwI93WriteMultipleBlocks(first_block_number, number_blocks, test_data);
607 ASSERT_EQ(status, NFA_STATUS_FAILED);
608 nfa_rw_cb.i93_block_size = 4;
609 nfa_rw_cb.i93_num_block = 0;
610 status = NFA_RwI93WriteMultipleBlocks(first_block_number, number_blocks, test_data);
611 ASSERT_EQ(status, NFA_STATUS_FAILED);
612 }
613
614 class NFA_RwI93WriteSingleBlockTest : public testing::Test {
615 protected:
SetUp()616 void SetUp() override {
617 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
618 nfa_rw_cb.i93_block_size = 4;
619 nfa_rw_cb.i93_num_block = 16;
620 }
621 };
622
TEST_F(NFA_RwI93WriteSingleBlockTest,TestCorrectProtocol)623 TEST_F(NFA_RwI93WriteSingleBlockTest, TestCorrectProtocol) {
624 uint8_t block_number = 1;
625 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04 };
626 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION) + 4);
627 ASSERT_NE(p_msg, nullptr);
628 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
629 p_msg->op = NFA_RW_OP_I93_WRITE_SINGLE_BLOCK;
630 p_msg->params.i93_cmd.first_block_number = block_number;
631 p_msg->params.i93_cmd.p_data = (uint8_t*)(p_msg + 1);
632 memcpy(p_msg->params.i93_cmd.p_data, test_data, 4);
633 tNFA_STATUS status = NFA_RwI93WriteSingleBlock(block_number, test_data);
634 ASSERT_EQ(status, NFA_STATUS_OK);
635 free(p_msg);
636 }
637
TEST_F(NFA_RwI93WriteSingleBlockTest,TestWrongProtocol)638 TEST_F(NFA_RwI93WriteSingleBlockTest, TestWrongProtocol) {
639 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
640 uint8_t block_number = 1;
641 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04 };
642 tNFA_STATUS status = NFA_RwI93WriteSingleBlock(block_number, test_data);
643 ASSERT_EQ(status, NFA_STATUS_WRONG_PROTOCOL);
644 }
645
TEST_F(NFA_RwI93WriteSingleBlockTest,TestInvalidBlockSizeOrNumber)646 TEST_F(NFA_RwI93WriteSingleBlockTest, TestInvalidBlockSizeOrNumber) {
647 nfa_rw_cb.i93_block_size = 0;
648 nfa_rw_cb.i93_num_block = 16;
649 uint8_t block_number = 1;
650 uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04 };
651 tNFA_STATUS status = NFA_RwI93WriteSingleBlock(block_number, test_data);
652 ASSERT_EQ(status, NFA_STATUS_FAILED);
653 nfa_rw_cb.i93_block_size = 4;
654 nfa_rw_cb.i93_num_block = 0;
655 status = NFA_RwI93WriteSingleBlock(block_number, test_data);
656 ASSERT_EQ(status, NFA_STATUS_FAILED);
657 }
658
659 class NFA_RwLocateTlvTest : public testing::Test {
660 protected:
661 tNFA_RW_OPERATION* p_msg;
SetUp()662 void SetUp() override {
663 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
664 }
665 };
666
TEST_F(NFA_RwLocateTlvTest,TestCorrectTlvType)667 TEST_F(NFA_RwLocateTlvTest, TestCorrectTlvType) {
668 uint8_t tlv_type = TAG_LOCK_CTRL_TLV;
669 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
670 ASSERT_NE(p_msg, nullptr);
671 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
672 p_msg->op = NFA_RW_OP_DETECT_LOCK_TLV;
673 tNFA_STATUS status = NFA_RwLocateTlv(tlv_type);
674 ASSERT_EQ(status, NFA_STATUS_OK);
675 free(p_msg);
676 }
677
TEST_F(NFA_RwLocateTlvTest,TestInvalidTlvType)678 TEST_F(NFA_RwLocateTlvTest, TestInvalidTlvType) {
679 uint8_t tlv_type = 0xFF;
680 tNFA_STATUS status = NFA_RwLocateTlv(tlv_type);
681 ASSERT_EQ(status, NFA_STATUS_FAILED);
682 }
683
TEST_F(NFA_RwLocateTlvTest,TestMemCtrlTlvType)684 TEST_F(NFA_RwLocateTlvTest, TestMemCtrlTlvType) {
685 uint8_t tlv_type = TAG_MEM_CTRL_TLV;
686 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
687 ASSERT_NE(p_msg, nullptr);
688 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
689 p_msg->op = NFA_RW_OP_DETECT_MEM_TLV;
690 tNFA_STATUS status = NFA_RwLocateTlv(tlv_type);
691 ASSERT_EQ(status, NFA_STATUS_OK);
692 free(p_msg);
693 }
694
TEST_F(NFA_RwLocateTlvTest,TestNdefTlvType)695 TEST_F(NFA_RwLocateTlvTest, TestNdefTlvType) {
696 uint8_t tlv_type = TAG_NDEF_TLV;
697 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
698 ASSERT_NE(p_msg, nullptr);
699 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
700 p_msg->op = NFA_RW_OP_DETECT_NDEF;
701 tNFA_STATUS status = NFA_RwLocateTlv(tlv_type);
702 ASSERT_EQ(status, NFA_STATUS_OK);
703 free(p_msg);
704 }
705
706 class NFA_RwReadNDefTest : public testing::Test {
707 protected:
708 };
709
TEST_F(NFA_RwReadNDefTest,TestValidOperation)710 TEST_F(NFA_RwReadNDefTest, TestValidOperation) {
711 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
712 ASSERT_NE(p_msg, nullptr);
713 tNFA_STATUS status = NFA_RwReadNDef();
714 ASSERT_EQ(status, NFA_STATUS_OK);
715 free(p_msg);
716 }
717
TEST_F(NFA_RwReadNDefTest,TestMessageSent)718 TEST_F(NFA_RwReadNDefTest, TestMessageSent) {
719 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
720 ASSERT_NE(p_msg, nullptr);
721 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
722 p_msg->op = NFA_RW_OP_READ_NDEF;
723 tNFA_STATUS status = NFA_RwReadNDef();
724 ASSERT_EQ(status, NFA_STATUS_OK);
725 free(p_msg);
726 }
727
728 class NFA_RwSetTagReadOnlyTest : public testing::Test {
729 protected:
SetUp()730 void SetUp() override {
731 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
732 }
733 };
734
TEST_F(NFA_RwSetTagReadOnlyTest,TestHardLockOnT5T)735 TEST_F(NFA_RwSetTagReadOnlyTest, TestHardLockOnT5T) {
736 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
737 bool b_hard_lock = true;
738 tNFA_STATUS status = NFA_RwSetTagReadOnly(b_hard_lock);
739 ASSERT_EQ(status, NFA_STATUS_OK);
740 }
741
TEST_F(NFA_RwSetTagReadOnlyTest,TestSoftLockOnT5T)742 TEST_F(NFA_RwSetTagReadOnlyTest, TestSoftLockOnT5T) {
743 nfa_rw_cb.protocol = NFC_PROTOCOL_T5T;
744 bool b_hard_lock = false;
745 tNFA_STATUS status = NFA_RwSetTagReadOnly(b_hard_lock);
746 ASSERT_EQ(status, NFA_STATUS_REJECTED);
747 }
748
TEST_F(NFA_RwSetTagReadOnlyTest,TestSoftLockOnISO_DEP)749 TEST_F(NFA_RwSetTagReadOnlyTest, TestSoftLockOnISO_DEP) {
750 nfa_rw_cb.protocol = NFC_PROTOCOL_ISO_DEP;
751 bool b_hard_lock = false;
752 tNFA_STATUS status = NFA_RwSetTagReadOnly(b_hard_lock);
753 ASSERT_EQ(status, NFA_STATUS_OK);
754 }
755
TEST_F(NFA_RwSetTagReadOnlyTest,TestHardLockOnISO_DEP)756 TEST_F(NFA_RwSetTagReadOnlyTest, TestHardLockOnISO_DEP) {
757 nfa_rw_cb.protocol = NFC_PROTOCOL_ISO_DEP;
758 bool b_hard_lock = true;
759 tNFA_STATUS status = NFA_RwSetTagReadOnly(b_hard_lock);
760 ASSERT_EQ(status, NFA_STATUS_REJECTED);
761 }
762
TEST_F(NFA_RwSetTagReadOnlyTest,TestSoftLockOnT1T)763 TEST_F(NFA_RwSetTagReadOnlyTest, TestSoftLockOnT1T) {
764 nfa_rw_cb.protocol = NFC_PROTOCOL_T1T;
765 bool b_hard_lock = false;
766 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
767 ASSERT_NE(p_msg, nullptr);
768 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
769 p_msg->op = NFA_RW_OP_SET_TAG_RO;
770 p_msg->params.set_readonly.b_hard_lock = b_hard_lock;
771 tNFA_STATUS status = NFA_RwSetTagReadOnly(b_hard_lock);
772 ASSERT_EQ(status, NFA_STATUS_OK);
773 free(p_msg);
774 }
775
776 class NFA_RwT1tReadTest : public :: testing :: Test{
777 protected:
778 };
779
TEST_F(NFA_RwT1tReadTest,TestT1T_READSuccess)780 TEST_F(NFA_RwT1tReadTest, TestT1T_READSuccess){
781 uint8_t block_number = 0x01;
782 uint8_t index = 2;
783 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
784 ASSERT_NE(p_msg, nullptr);
785 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
786 p_msg->op = NFA_RW_OP_T1T_READ;
787 tNFA_STATUS status = NFA_RwT1tRead(block_number, index);
788 p_msg->params.t1t_read.block_number = block_number;
789 p_msg->params.t1t_read.index = index;
790 ASSERT_EQ(status, NFA_STATUS_OK);
791 }
792
793 // NFA_RwT1tRead8
794
TEST_F(NFA_RwT1tReadTest,TestT1T_READ8Success)795 TEST_F(NFA_RwT1tReadTest, TestT1T_READ8Success){
796 uint8_t block_number = 0x01;
797 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
798 ASSERT_NE(p_msg, nullptr);
799 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
800 p_msg->op = NFA_RW_OP_T1T_READ8;
801 tNFA_STATUS status = NFA_RwT1tRead8(block_number);
802 p_msg->params.t1t_read.block_number = block_number;
803 ASSERT_EQ(status, NFA_STATUS_OK);
804 }
805
806 // NFA_RwT1tReadAll
807
TEST_F(NFA_RwT1tReadTest,TestT1T_READALLSuccess)808 TEST_F(NFA_RwT1tReadTest, TestT1T_READALLSuccess){
809 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
810 ASSERT_NE(p_msg, nullptr);
811 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
812 p_msg->op = NFA_RW_OP_T1T_RALL;
813 tNFA_STATUS status = NFA_RwT1tReadAll();
814 ASSERT_EQ(status, NFA_STATUS_OK);
815 }
816
817 // NFA_RwT1tReadSeg
818
TEST_F(NFA_RwT1tReadTest,TestCorrectProtocol)819 TEST_F(NFA_RwT1tReadTest, TestCorrectProtocol) {
820 uint8_t segment_number = 1;
821 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
822 ASSERT_NE(p_msg, nullptr);
823 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
824 p_msg->op = NFA_RW_OP_T1T_RSEG;
825 p_msg->params.t1t_read.segment_number = segment_number;
826 tNFA_STATUS status = NFA_RwT1tReadSeg(segment_number);
827 ASSERT_EQ(status, NFA_STATUS_OK);
828 free(p_msg);
829 }
830
831 // NFA_RwT1tRid
832
TEST_F(NFA_RwT1tReadTest,TestNFA_RwT1tRidSuccess)833 TEST_F(NFA_RwT1tReadTest, TestNFA_RwT1tRidSuccess){
834 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
835 ASSERT_NE(p_msg, nullptr);
836 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
837 p_msg->op = NFA_RW_OP_T1T_RID;
838 tNFA_STATUS status = NFA_RwT1tRid();
839 ASSERT_EQ(status, NFA_STATUS_OK);
840 }
841
842 class NFA_RwT1tWriteTest : public testing::Test {
843 protected:
844 };
845
TEST_F(NFA_RwT1tWriteTest,TestCorrectProtocol)846 TEST_F(NFA_RwT1tWriteTest, TestCorrectProtocol) {
847 uint8_t block_number = 1;
848 uint8_t index = 0;
849 uint8_t data = 0x10;
850 bool b_erase = false;
851 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
852 ASSERT_NE(p_msg, nullptr);
853 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
854 p_msg->op = NFA_RW_OP_T1T_WRITE;
855 p_msg->params.t1t_write.block_number = block_number;
856 p_msg->params.t1t_write.index = index;
857 p_msg->params.t1t_write.p_block_data[0] = data;
858 p_msg->params.t1t_write.b_erase = b_erase;
859 tNFA_STATUS status = NFA_RwT1tWrite(block_number, index, data, b_erase);
860 ASSERT_EQ(status, NFA_STATUS_OK);
861 free(p_msg);
862 }
863
TEST_F(NFA_RwT1tWriteTest,TestWriteWithErase)864 TEST_F(NFA_RwT1tWriteTest, TestWriteWithErase) {
865 uint8_t block_number = 1;
866 uint8_t index = 0;
867 uint8_t data = 0x20;
868 bool b_erase = true;
869 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
870 ASSERT_NE(p_msg, nullptr);
871 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
872 p_msg->op = NFA_RW_OP_T1T_WRITE;
873 p_msg->params.t1t_write.block_number = block_number;
874 p_msg->params.t1t_write.index = index;
875 p_msg->params.t1t_write.p_block_data[0] = data;
876 p_msg->params.t1t_write.b_erase = b_erase;
877 tNFA_STATUS status = NFA_RwT1tWrite(block_number, index, data, b_erase);
878 ASSERT_EQ(status, NFA_STATUS_OK);
879 free(p_msg);
880 }
881
882 // NFA_RwT1tWrite8
883
TEST_F(NFA_RwT1tWriteTest,Test8CorrectProtocol)884 TEST_F(NFA_RwT1tWriteTest, Test8CorrectProtocol) {
885 uint8_t block_number = 1;
886 uint8_t data[8] = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80 };
887 bool b_erase = false;
888 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
889 ASSERT_NE(p_msg, nullptr);
890 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
891 p_msg->op = NFA_RW_OP_T1T_WRITE8;
892 p_msg->params.t1t_write.block_number = block_number;
893 p_msg->params.t1t_write.b_erase = b_erase;
894 memcpy(p_msg->params.t1t_write.p_block_data, data, 8);
895 tNFA_STATUS status = NFA_RwT1tWrite8(block_number, data, b_erase);
896 ASSERT_EQ(status, NFA_STATUS_OK);
897 free(p_msg);
898 }
899
TEST_F(NFA_RwT1tWriteTest,TestWrite8WithErase)900 TEST_F(NFA_RwT1tWriteTest, TestWrite8WithErase) {
901 uint8_t block_number = 1;
902 uint8_t data[8] = { 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90 };
903 bool b_erase = true;
904 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
905 ASSERT_NE(p_msg, nullptr);
906 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
907 p_msg->op = NFA_RW_OP_T1T_WRITE8;
908 p_msg->params.t1t_write.block_number = block_number;
909 p_msg->params.t1t_write.b_erase = b_erase;
910 memcpy(p_msg->params.t1t_write.p_block_data, data, 8);
911 tNFA_STATUS status = NFA_RwT1tWrite8(block_number, data, b_erase);
912 ASSERT_EQ(status, NFA_STATUS_OK);
913 free(p_msg);
914 }
915
916 class NFA_RwT2tReadTest : public testing::Test {
917 protected:
SetUp()918 void SetUp() override {
919 nfa_rw_cb.protocol = NFC_PROTOCOL_T2T;
920 }
921 };
922
TEST_F(NFA_RwT2tReadTest,TestCorrectProtocol)923 TEST_F(NFA_RwT2tReadTest, TestCorrectProtocol) {
924 uint8_t block_number = 1;
925 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
926 ASSERT_NE(p_msg, nullptr);
927 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
928 p_msg->op = NFA_RW_OP_T2T_READ;
929 p_msg->params.t2t_read.block_number = block_number;
930 tNFA_STATUS status = NFA_RwT2tRead(block_number);
931 ASSERT_EQ(status, NFA_STATUS_OK);
932 free(p_msg);
933 }
934
935 // NFA_RwT2tReadDynLockBytes
936
TEST_F(NFA_RwT2tReadTest,TestWithRead_locks)937 TEST_F(NFA_RwT2tReadTest, TestWithRead_locks) {
938 bool read_dyn_locks = true;
939 tNFA_RW_OPERATION* p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
940 ASSERT_NE(p_msg, nullptr);
941 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
942 p_msg->op = NFA_RW_OP_T2T_READ_DYN_LOCKS;
943 p_msg->params.t2t_read_dyn_locks.read_dyn_locks = read_dyn_locks;
944 tNFA_STATUS status = NFA_RwT2tReadDynLockBytes(read_dyn_locks);
945 ASSERT_EQ(status, NFA_STATUS_OK);
946 free(p_msg);
947 }
948
TEST_F(NFA_RwT2tReadTest,TestWithoutRead_Dyn_locks)949 TEST_F(NFA_RwT2tReadTest, TestWithoutRead_Dyn_locks){
950 bool read_dyn_locks = false;
951 tNFA_RW_OPERATION*p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
952 ASSERT_NE(p_msg, nullptr);
953 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
954 p_msg->op = NFA_RW_OP_T2T_READ_DYN_LOCKS;
955 p_msg->params.t2t_read_dyn_locks.read_dyn_locks = read_dyn_locks;
956 tNFA_STATUS status = NFA_RwT2tReadDynLockBytes(read_dyn_locks);
957 ASSERT_EQ(status, NFA_STATUS_OK);
958 free(p_msg);
959 }
960
961 // NFA_RwT2tSectorSelect
962
TEST_F(NFA_RwT2tReadTest,TestNFA_RwT2tSectorSelectSuccess)963 TEST_F(NFA_RwT2tReadTest, TestNFA_RwT2tSectorSelectSuccess){
964 uint8_t sector_number = 0x01;
965 tNFA_RW_OPERATION*p_msg = (tNFA_RW_OPERATION*)malloc(sizeof(tNFA_RW_OPERATION));
966 ASSERT_NE(p_msg, nullptr);
967 p_msg->hdr.event = NFA_RW_OP_REQUEST_EVT;
968 p_msg->op = NFA_RW_OP_T2T_READ_DYN_LOCKS;
969 p_msg->params.t2t_sector_select.sector_number = sector_number;
970 tNFA_STATUS status = NFA_RwT2tSectorSelect(sector_number);
971 ASSERT_EQ(status, NFA_STATUS_OK);
972 free(p_msg);
973 }