1 /*
2 * Copyright (c) 2022 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
16 #include "work_record_test.h"
17
18 #include "string_ex.h"
19
20 #include "message_parcel.h"
21
22 #include "common_utils.h"
23 #include "work_record.h"
24
25 using namespace testing::ext;
26 namespace OHOS {
27 namespace Location {
28 const int WRONG_UID = 1001;
SetUp()29 void WorkRecordTest::SetUp()
30 {
31 }
32
TearDown()33 void WorkRecordTest::TearDown()
34 {
35 }
36
VerifyMarshalling(std::unique_ptr<WorkRecord> & workrecord)37 void WorkRecordTest::VerifyMarshalling(std::unique_ptr<WorkRecord>& workrecord)
38 {
39 MessageParcel parcel;
40 workrecord->Marshalling(parcel);
41 EXPECT_EQ(1, parcel.ReadInt32()); // num
42 EXPECT_EQ(SYSTEM_UID, parcel.ReadInt32()); // uid
43 EXPECT_EQ(0, parcel.ReadInt32()); // pid
44 EXPECT_EQ("name", parcel.ReadString());
45 EXPECT_EQ(0, parcel.ReadInt32()); // time interval
46 EXPECT_EQ("uuid", parcel.ReadString());
47 EXPECT_EQ("deviceId", parcel.ReadString());
48 }
49
50 HWTEST_F(WorkRecordTest, AddAndRemoveWorkRecord001, TestSize.Level1)
51 {
52 GTEST_LOG_(INFO)
53 << "WorkRecordTest, AddAndRemoveWorkRecord001, TestSize.Level1";
54 LBSLOGI(LOCATOR, "[WorkRecordTest] AddAndRemoveWorkRecord001 begin");
55 std::unique_ptr<WorkRecord> emptyWorkrecord = std::make_unique<WorkRecord>();
56 EXPECT_EQ(false, emptyWorkrecord->Remove("emptyRecord"));
57 EXPECT_EQ(false, emptyWorkrecord->Remove(SYSTEM_UID, 0, "emptyRecord", "10000"));
58
59 MessageParcel parcel;
60 parcel.WriteInt32(1); // workrecord size
61 parcel.WriteInt32(SYSTEM_UID); // uid
62 parcel.WriteInt32(0); // pid
63 parcel.WriteString("name"); // name
64 parcel.WriteInt32(0); // time interval
65 parcel.WriteString("uuid"); // uuid
66 parcel.WriteString("deviceId"); // uuid
67 std::unique_ptr<WorkRecord> workrecord = WorkRecord::Unmarshalling(parcel);
68 VerifyMarshalling(workrecord);
69 EXPECT_EQ(1, workrecord->Size());
70 EXPECT_EQ(false, workrecord->Remove("WrongName"));
71 EXPECT_EQ(1, workrecord->Size());
72 EXPECT_EQ(true, workrecord->Remove("name"));
73 EXPECT_EQ(0, workrecord->Size()); // remove successfully
74
75 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "name", 1, "0"));
76 EXPECT_EQ(1, workrecord->Size());
77 EXPECT_EQ(false, workrecord->Remove(SYSTEM_UID, 0, "WrongName", "0"));
78 EXPECT_EQ(1, workrecord->Size());
79 EXPECT_EQ(false, workrecord->Remove(999, 0, "name", "0"));
80 EXPECT_EQ(1, workrecord->Size());
81 EXPECT_EQ(false, workrecord->Remove(999, 0, "WrongName", "0"));
82 EXPECT_EQ(1, workrecord->Size());
83 EXPECT_EQ(false, workrecord->Remove(999, 1, "name", "0"));
84 EXPECT_EQ(1, workrecord->Size());
85 EXPECT_EQ(false, workrecord->Remove(999, 1, "WrongName", "0"));
86 EXPECT_EQ(1, workrecord->Size());
87 EXPECT_EQ(false, workrecord->Remove(SYSTEM_UID, 1, "WrongName", "0"));
88 EXPECT_EQ(1, workrecord->Size());
89
90 EXPECT_EQ(true, workrecord->Remove(SYSTEM_UID, 0, "name", "0"));
91 EXPECT_EQ(0, workrecord->Size()); // remove successfully
92 LBSLOGI(LOCATOR, "[WorkRecordTest] AddAndRemoveWorkRecord001 end");
93 }
94
95 HWTEST_F(WorkRecordTest, FindWorkRecord001, TestSize.Level1)
96 {
97 GTEST_LOG_(INFO)
98 << "WorkRecordTest, FindWorkRecord001, TestSize.Level1";
99 LBSLOGI(LOCATOR, "[WorkRecordTest] FindWorkRecord001 begin");
100 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
101 EXPECT_EQ(false, workrecord->Find(SYSTEM_UID, "name", "0"));
102 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "name", 1, "0"));
103 EXPECT_EQ("name", workrecord->GetName(0));
104 EXPECT_EQ("", workrecord->GetName(1)); // out of range
105 EXPECT_EQ("", workrecord->GetName(-1)); // out of range
106 EXPECT_EQ(SYSTEM_UID, workrecord->GetUid(0));
107 EXPECT_EQ(-1, workrecord->GetUid(1)); // out of range
108 EXPECT_EQ(-1, workrecord->GetUid(-1)); // out of range
109 EXPECT_EQ(0, workrecord->GetPid(0));
110 EXPECT_EQ(-1, workrecord->GetPid(1)); // out of range
111 EXPECT_EQ(-1, workrecord->GetPid(-1)); // out of range
112 EXPECT_EQ(false, workrecord->Find(999, "name", "0"));
113 EXPECT_EQ(false, workrecord->Find(999, "WrongName", "0"));
114 EXPECT_EQ(true, workrecord->Find(SYSTEM_UID, "name", "0"));
115 EXPECT_EQ(false, workrecord->Find(SYSTEM_UID, "WrongName", "0"));
116 LBSLOGI(LOCATOR, "[WorkRecordTest] FindWorkRecord001 end");
117 }
118
119 HWTEST_F(WorkRecordTest, ClearWorkRecord001, TestSize.Level1)
120 {
121 GTEST_LOG_(INFO)
122 << "WorkRecordTest, ClearWorkRecord001, TestSize.Level1";
123 LBSLOGI(LOCATOR, "[WorkRecordTest] ClearWorkRecord001 begin");
124 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
125 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "name", 1, "0"));
126 EXPECT_EQ(false, workrecord->IsEmpty());
127 workrecord->Clear();
128 EXPECT_EQ(true, workrecord->IsEmpty());
129 LBSLOGI(LOCATOR, "[WorkRecordTest] ClearWorkRecord001 end");
130 }
131
132 HWTEST_F(WorkRecordTest, SetDeviceId001, TestSize.Level1)
133 {
134 GTEST_LOG_(INFO)
135 << "WorkRecordTest, SetDeviceId001, TestSize.Level1";
136 LBSLOGI(LOCATOR, "[WorkRecordTest] SetDeviceId001 begin");
137 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
138 workrecord->SetDeviceId("deviceId");
139 EXPECT_EQ("deviceId", workrecord->GetDeviceId());
140 LBSLOGI(LOCATOR, "[WorkRecordTest] SetDeviceId001 end");
141 }
142
143 HWTEST_F(WorkRecordTest, WorkRecordToString001, TestSize.Level1)
144 {
145 GTEST_LOG_(INFO)
146 << "WorkRecordTest, WorkRecordToString001, TestSize.Level1";
147 LBSLOGI(LOCATOR, "[WorkRecordTest] WorkRecordToString001 begin");
148 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
149 EXPECT_EQ("[]", workrecord->ToString());
150 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "name", 1, "0"));
151 EXPECT_NE("", workrecord->ToString());
152 LBSLOGI(LOCATOR, "[WorkRecordTest] WorkRecordToString001 end");
153 }
154
155 HWTEST_F(WorkRecordTest, MarshallingWorkRecord001, TestSize.Level1)
156 {
157 GTEST_LOG_(INFO)
158 << "WorkRecordTest, MarshallingWorkRecord001, TestSize.Level1";
159 LBSLOGI(LOCATOR, "[WorkRecordTest] MarshallingWorkRecord001 begin");
160 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
161 workrecord->Add(SYSTEM_UID, 0, "name1", 1, "0");
162 workrecord->Add(WRONG_UID, 0, "name2", 1, "0");
163 MessageParcel parcel;
164 workrecord->MarshallingWorkRecord(parcel);
165
166 EXPECT_EQ(2, parcel.ReadInt32()); // number
167 EXPECT_EQ(2, parcel.ReadInt32()); // uids number
168 EXPECT_EQ(SYSTEM_UID, parcel.ReadInt32());
169 EXPECT_EQ(WRONG_UID, parcel.ReadInt32());
170 EXPECT_EQ(2, parcel.ReadInt32()); // names number
171 EXPECT_EQ("name1", Str16ToStr8(parcel.ReadString16()));
172 EXPECT_EQ("name2", Str16ToStr8(parcel.ReadString16()));
173 LBSLOGI(LOCATOR, "[WorkRecordTest] MarshallingWorkRecord001 end");
174 }
175
176 HWTEST_F(WorkRecordTest, AddWorkRecord001, TestSize.Level1)
177 {
178 GTEST_LOG_(INFO)
179 << "WorkRecordTest, AddWorkRecord001, TestSize.Level1";
180 LBSLOGI(LOCATOR, "[WorkRecordTest] AddWorkRecord001 begin");
181 std::unique_ptr<WorkRecord> workrecord = std::make_unique<WorkRecord>();
182 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID + 1, 0, "name", 1, "0"));
183 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "name", 1, "0")); // diff uid, add to record
184 EXPECT_EQ(true, workrecord->Add(SYSTEM_UID, 0, "DiffName", 1, "0")); // diff name, add to record
185 LBSLOGI(LOCATOR, "[WorkRecordTest] AddWorkRecord001 end");
186 }
187 } // namespace Location
188 } // namespace OHOS