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