• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }