1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include <gtest/gtest.h>
16 #include <thread>
17
18 #include "nfcc_host.h"
19 #include "nfc_service.h"
20 #include "tag_host.h"
21
22 namespace OHOS {
23 namespace NFC {
24 namespace TEST {
25 using namespace testing::ext;
26 using namespace OHOS::NFC::NCI;
27
28 enum EmNfcForumType {
29 NFC_FORUM_TYPE_UNKNOWN = 0,
30 NFC_FORUM_TYPE_1 = 1,
31 NFC_FORUM_TYPE_2 = 2,
32 NFC_FORUM_TYPE_3 = 3,
33 NFC_FORUM_TYPE_4 = 4,
34 MIFARE_CLASSIC = 101,
35 ICODE_SLI = 102
36 };
37
38 class NfccHostTest : public testing::Test {
39 public:
SetUpTestCase()40 static void SetUpTestCase() {}
TearDownTestCase()41 static void TearDownTestCase() {}
42 void SetUp();
43 void TearDown();
44
45 std::shared_ptr<NCI::NfccHost> nfccHostTest_ {};
46 std::shared_ptr<NfcService> nfcService_;
47 };
48
SetUp()49 void NfccHostTest::SetUp()
50 {
51 std::shared_ptr<NfcService> nfcService_ = std::make_shared<NfcService>();
52 nfccHostTest_ = std::make_shared<NFC::NCI::NfccHost>(nfcService_);
53 }
54
TearDown()55 void NfccHostTest::TearDown()
56 {
57 nfccHostTest_ = nullptr;
58 nfcService_ = nullptr;
59 }
60
61 /**
62 * @tc.name: SendRawFrameTest001
63 * @tc.desc: Test SendRawFrame
64 * @tc.type: FUNC
65 */
66 HWTEST_F(NfccHostTest, SendRawFrameTest001, TestSize.Level1)
67 {
68 std::string getCplc = "80CA9F7F00";
69 nfccHostTest_->SendRawFrame(getCplc);
70 EXPECT_TRUE(nfccHostTest_->GetNciVersion() >= 0);
71 }
72
73 /**
74 * @tc.name: SetSecureNfcTest001
75 * @tc.desc: Test SetSecureNfc
76 * @tc.type: FUNC
77 */
78 HWTEST_F(NfccHostTest, SetSecureNfcTest001, TestSize.Level1)
79 {
80 EXPECT_TRUE(nfccHostTest_->GetIsoDepMaxTransceiveLength() >= 0);
81 EXPECT_TRUE(nfccHostTest_->SetSecureNfc(false));
82 EXPECT_EQ(nfccHostTest_->GetLfT3tMax(), 0);
83 EXPECT_EQ(nfccHostTest_->GetLastError(), 0);
84 nfccHostTest_->Abort();
85 nfccHostTest_->Dump(0);
86 nfccHostTest_->FactoryReset();
87 nfccHostTest_->Shutdown();
88 }
89
90 /**
91 * @tc.name: RegisterT3tIdentifierTest001
92 * @tc.desc: Test RegisterT3tIdentifier
93 * @tc.type: FUNC
94 */
95 HWTEST_F(NfccHostTest, RegisterT3tIdentifierTest001, TestSize.Level1)
96 {
97 std::string identfier = "t3t";
98 nfccHostTest_->RegisterT3tIdentifier(identfier);
99 nfccHostTest_->DeregisterT3tIdentifier(identfier);
100 nfccHostTest_->ClearT3tIdentifiersCache();
101 identfier = "";
102 nfccHostTest_->RegisterT3tIdentifier(identfier);
103 }
104
105 /**
106 * @tc.name: AddAidRoutingTest001
107 * @tc.desc: Test AddAidRouting
108 * @tc.type: FUNC
109 */
110 HWTEST_F(NfccHostTest, AddAidRoutingTest001, TestSize.Level1)
111 {
112 std::string aid = "A0000001150000";
113 int route = 0;
114 int aidInfo = 0;
115 EXPECT_TRUE(nfccHostTest_->AddAidRouting(aid, route, aidInfo));
116 EXPECT_TRUE(nfccHostTest_->RemoveAidRouting(aid));
117 EXPECT_TRUE(nfccHostTest_->ClearAidTable());
118 }
119
120 /**
121 * @tc.name: CommitRoutingTest001
122 * @tc.desc: Test CommitRouting
123 * @tc.type: FUNC
124 */
125 HWTEST_F(NfccHostTest, CommitRoutingTest001, TestSize.Level1)
126 {
127 EXPECT_EQ(nfccHostTest_->GetAidRoutingTableSize(), 0);
128 EXPECT_EQ(nfccHostTest_->GetDefaultRoute(), 0);
129 EXPECT_EQ(nfccHostTest_->GetDefaultOffHostRoute(), 0);
130 EXPECT_EQ(nfccHostTest_->GetAidMatchingMode(), 0);
131 EXPECT_EQ(nfccHostTest_->GetRemainRoutingTableSize(), 0);
132 EXPECT_EQ(nfccHostTest_->GetDefaultIsoDepRouteDestination(), 0);
133 EXPECT_TRUE(nfccHostTest_->GetOffHostUiccRoute().empty());
134 EXPECT_TRUE(nfccHostTest_->GetOffHostEseRoute().empty());
135 EXPECT_TRUE(nfccHostTest_->CheckFirmware());
136 unsigned char screenStateMask = {0};
137 EXPECT_TRUE(nfccHostTest_->SetScreenStatus(screenStateMask));
138 nfccHostTest_->SetNciAdaptation(nullptr);
139 nfccHostTest_->EeUpdate();
140 std::string aid = "";
141 std::string data = "";
142 std::string seName = "";
143 nfccHostTest_->OffHostTransactionEvent(aid, data, seName);
144 nfccHostTest_->HostCardEmulationActivated(0);
145 std::string res = "";
146 nfccHostTest_->HostCardEmulationDataReceived(0, res);
147 nfccHostTest_->HostCardEmulationDeactivated(0);
148 }
149
150 /**
151 * @tc.name: CanMakeReadOnlyTest001
152 * @tc.desc: Test CanMakeReadOnly
153 * @tc.type: FUNC
154 */
155 HWTEST_F(NfccHostTest, CanMakeReadOnlyTest001, TestSize.Level1)
156 {
157 int ndefType = EmNfcForumType::NFC_FORUM_TYPE_1;
158 EXPECT_TRUE(nfccHostTest_->CanMakeReadOnly(ndefType));
159 ndefType = EmNfcForumType::NFC_FORUM_TYPE_3;
160 EXPECT_FALSE(nfccHostTest_->CanMakeReadOnly(ndefType));
161 }
162
163 /**
164 * @tc.name: TagDiscoveredTest001
165 * @tc.desc: Test TagDiscovered
166 * @tc.type: FUNC
167 */
168 HWTEST_F(NfccHostTest, TagDiscoveredTest001, TestSize.Level1)
169 {
170 std::shared_ptr<NCI::ITagHost> tagHost = nullptr;
171 nfccHostTest_->TagDiscovered(tagHost);
172 }
173
174 /**
175 * @tc.name: RemoteFieldActivatedTest001
176 * @tc.desc: Test RemoteFieldActivated
177 * @tc.type: FUNC
178 */
179 HWTEST_F(NfccHostTest, RemoteFieldActivatedTest001, TestSize.Level1)
180 {
181 std::shared_ptr<OHOS::NFC::NfcService> listener = nullptr;
182 nfccHostTest_->SetNfccHostListener(listener);
183 nfccHostTest_->RemoteFieldActivated();
184 nfccHostTest_->RemoteFieldDeactivated();
185
186 nfccHostTest_->SetNfccHostListener(nfcService_);
187 nfccHostTest_->RemoteFieldActivated();
188 nfccHostTest_->RemoteFieldDeactivated();
189 }
190 }
191 }
192 }
193