1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License.
5115cd2caSopenharmony_ci * You may obtain a copy of the License at
6115cd2caSopenharmony_ci *
7115cd2caSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8115cd2caSopenharmony_ci *
9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and
13115cd2caSopenharmony_ci * limitations under the License.
14115cd2caSopenharmony_ci */
15115cd2caSopenharmony_ci
16115cd2caSopenharmony_ci#include "calllogability_test.h"
17115cd2caSopenharmony_ci
18115cd2caSopenharmony_ci#include "data_ability_operation_builder.h"
19115cd2caSopenharmony_ci#include "random_number_utils.h"
20115cd2caSopenharmony_ci
21115cd2caSopenharmony_ciusing namespace OHOS::Contacts;
22115cd2caSopenharmony_ci
23115cd2caSopenharmony_cinamespace Contacts {
24115cd2caSopenharmony_cinamespace Test {
25115cd2caSopenharmony_ciCalllogAbilityTest::CalllogAbilityTest()
26115cd2caSopenharmony_ci{
27115cd2caSopenharmony_ci}
28115cd2caSopenharmony_ci
29115cd2caSopenharmony_ciCalllogAbilityTest::~CalllogAbilityTest()
30115cd2caSopenharmony_ci{
31115cd2caSopenharmony_ci}
32115cd2caSopenharmony_ci
33115cd2caSopenharmony_ciint64_t CalllogAbilityTest::CalllogInsert(std::string phoneNumber)
34115cd2caSopenharmony_ci{
35115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
36115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket calllogValues;
37115cd2caSopenharmony_ci    calllogValues.Put("phone_number", phoneNumber);
38115cd2caSopenharmony_ci    int64_t code = calllogAbility.Insert(uriCalllog, calllogValues);
39115cd2caSopenharmony_ci    calllogValues.Clear();
40115cd2caSopenharmony_ci    return code;
41115cd2caSopenharmony_ci}
42115cd2caSopenharmony_ci
43115cd2caSopenharmony_ciint CalllogAbilityTest::CalllogUpdate(
44115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues, OHOS::DataShare::DataSharePredicates predicates)
45115cd2caSopenharmony_ci{
46115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
47115cd2caSopenharmony_ci    int code = calllogAbility.Update(uriCalllog, predicates, updateValues);
48115cd2caSopenharmony_ci    return code;
49115cd2caSopenharmony_ci}
50115cd2caSopenharmony_ci
51115cd2caSopenharmony_ciint CalllogAbilityTest::CalllogDelete(OHOS::DataShare::DataSharePredicates predicates)
52115cd2caSopenharmony_ci{
53115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
54115cd2caSopenharmony_ci    int code = calllogAbility.Delete(uriCalllog, predicates);
55115cd2caSopenharmony_ci    return code;
56115cd2caSopenharmony_ci}
57115cd2caSopenharmony_ci
58115cd2caSopenharmony_cistd::shared_ptr<OHOS::DataShare::DataShareResultSet> CalllogAbilityTest::CalllogQuery(
59115cd2caSopenharmony_ci    std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)
60115cd2caSopenharmony_ci{
61115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
62115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
63115cd2caSopenharmony_ci        calllogAbility.Query(uriCalllog, predicates, columns);
64115cd2caSopenharmony_ci    return resultSet;
65115cd2caSopenharmony_ci}
66115cd2caSopenharmony_ci
67115cd2caSopenharmony_ciint64_t CalllogAbilityTest::CalllogInsertValues(OHOS::DataShare::DataShareValuesBucket &values)
68115cd2caSopenharmony_ci{
69115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
70115cd2caSopenharmony_ci    int64_t code = calllogAbility.Insert(uriCalllog, values);
71115cd2caSopenharmony_ci    return code;
72115cd2caSopenharmony_ci}
73115cd2caSopenharmony_ci
74115cd2caSopenharmony_ciint64_t CalllogAbilityTest::CalllogInsertValue(std::string displayName, OHOS::DataShare::DataShareValuesBucket &values)
75115cd2caSopenharmony_ci{
76115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
77115cd2caSopenharmony_ci    values.Put("display_name", displayName);
78115cd2caSopenharmony_ci    int64_t code = calllogAbility.Insert(uriCalllog, values);
79115cd2caSopenharmony_ci    return code;
80115cd2caSopenharmony_ci}
81115cd2caSopenharmony_ci
82115cd2caSopenharmony_civoid CalllogAbilityTest::GetAllValuesColumn(std::vector<std::string> &column)
83115cd2caSopenharmony_ci{
84115cd2caSopenharmony_ci    column.push_back("slot_id");
85115cd2caSopenharmony_ci    column.push_back("phone_number");
86115cd2caSopenharmony_ci    column.push_back("display_name");
87115cd2caSopenharmony_ci    column.push_back("call_direction");
88115cd2caSopenharmony_ci    column.push_back("voicemail_uri");
89115cd2caSopenharmony_ci    column.push_back("sim_type");
90115cd2caSopenharmony_ci    column.push_back("is_hd");
91115cd2caSopenharmony_ci    column.push_back("is_read");
92115cd2caSopenharmony_ci    column.push_back("ring_duration");
93115cd2caSopenharmony_ci    column.push_back("talk_duration");
94115cd2caSopenharmony_ci    column.push_back("format_number");
95115cd2caSopenharmony_ci    column.push_back("quicksearch_key");
96115cd2caSopenharmony_ci    column.push_back("number_type");
97115cd2caSopenharmony_ci    column.push_back("number_type_name");
98115cd2caSopenharmony_ci    column.push_back("begin_time");
99115cd2caSopenharmony_ci    column.push_back("end_time");
100115cd2caSopenharmony_ci    column.push_back("answer_state");
101115cd2caSopenharmony_ci    column.push_back("create_time");
102115cd2caSopenharmony_ci    column.push_back("number_location");
103115cd2caSopenharmony_ci    column.push_back("photo_id");
104115cd2caSopenharmony_ci    column.push_back("photo_uri");
105115cd2caSopenharmony_ci    column.push_back("country_iso_code");
106115cd2caSopenharmony_ci    column.push_back("extra1");
107115cd2caSopenharmony_ci    column.push_back("extra2");
108115cd2caSopenharmony_ci    column.push_back("extra3");
109115cd2caSopenharmony_ci    column.push_back("extra4");
110115cd2caSopenharmony_ci    column.push_back("extra5");
111115cd2caSopenharmony_ci    column.push_back("extra6");
112115cd2caSopenharmony_ci}
113115cd2caSopenharmony_ci
114115cd2caSopenharmony_ci/**
115115cd2caSopenharmony_ci * @brief get ValuesBucket
116115cd2caSopenharmony_ci * @params columnsStart column start index
117115cd2caSopenharmony_ci * @params columnsEnd column end index
118115cd2caSopenharmony_ci * @return ValuesBucket
119115cd2caSopenharmony_ci */
120115cd2caSopenharmony_ciOHOS::DataShare::DataShareValuesBucket CalllogAbilityTest::GetCallLogValues(
121115cd2caSopenharmony_ci    int columnsStart, int columnsEnd, std::vector<std::string> &columns)
122115cd2caSopenharmony_ci{
123115cd2caSopenharmony_ci    std::string callLogTestStringValue = std::to_string(ContactsRand());
124115cd2caSopenharmony_ci    int number = 6;
125115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
126115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(number);
127115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
128115cd2caSopenharmony_ci    valuesBucket.Put("slot_id", ContactsRand());
129115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber + callLogTestStringValue);
130115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "name");
131115cd2caSopenharmony_ci    valuesBucket.Put("call_direction", ContactsRand());
132115cd2caSopenharmony_ci    valuesBucket.Put("voicemail_uri", "uri::voicemail_uri" + callLogTestStringValue);
133115cd2caSopenharmony_ci    valuesBucket.Put("sim_type", ContactsRand());
134115cd2caSopenharmony_ci    valuesBucket.Put("is_hd", ContactsRand());
135115cd2caSopenharmony_ci    valuesBucket.Put("is_read", ContactsRand());
136115cd2caSopenharmony_ci    valuesBucket.Put("ring_duration", ContactsRand());
137115cd2caSopenharmony_ci    valuesBucket.Put("talk_duration", ContactsRand());
138115cd2caSopenharmony_ci    valuesBucket.Put("format_number", "154 121" + callLogTestStringValue);
139115cd2caSopenharmony_ci    valuesBucket.Put("quicksearch_key", "1");
140115cd2caSopenharmony_ci    valuesBucket.Put("number_type", ContactsRand());
141115cd2caSopenharmony_ci    valuesBucket.Put("number_type_name", "numberType" + callLogTestStringValue);
142115cd2caSopenharmony_ci    valuesBucket.Put("begin_time", ContactsRand());
143115cd2caSopenharmony_ci    valuesBucket.Put("end_time", ContactsRand());
144115cd2caSopenharmony_ci    valuesBucket.Put("answer_state", ContactsRand());
145115cd2caSopenharmony_ci    valuesBucket.Put("create_time", ContactsRand());
146115cd2caSopenharmony_ci    valuesBucket.Put("number_location", "location" + callLogTestStringValue);
147115cd2caSopenharmony_ci    valuesBucket.Put("photo_id", ContactsRand());
148115cd2caSopenharmony_ci    valuesBucket.Put("photo_uri", "uri::photo_uri" + callLogTestStringValue);
149115cd2caSopenharmony_ci    valuesBucket.Put("country_iso_code", ContactsRand());
150115cd2caSopenharmony_ci    valuesBucket.Put("extra1", "extra1" + callLogTestStringValue);
151115cd2caSopenharmony_ci    valuesBucket.Put("extra2", "extra2" + callLogTestStringValue);
152115cd2caSopenharmony_ci    valuesBucket.Put("extra3", "extra3" + callLogTestStringValue);
153115cd2caSopenharmony_ci    valuesBucket.Put("extra4", "extra4" + callLogTestStringValue);
154115cd2caSopenharmony_ci    valuesBucket.Put("extra5", "extra5" + callLogTestStringValue);
155115cd2caSopenharmony_ci    valuesBucket.Put("extra6", "extra6" + callLogTestStringValue);
156115cd2caSopenharmony_ci    std::vector<std::string> columnsTemp;
157115cd2caSopenharmony_ci    GetAllValuesColumn(columnsTemp);
158115cd2caSopenharmony_ci    int allSize = columnsTemp.size();
159115cd2caSopenharmony_ci    for (int i = 0; i < allSize; i++) {
160115cd2caSopenharmony_ci        if (i >= columnsStart && i < columnsEnd) {
161115cd2caSopenharmony_ci            columns.push_back(columnsTemp[i]);
162115cd2caSopenharmony_ci        } else {
163115cd2caSopenharmony_ci            valuesBucket.Put(columnsTemp[i], "");
164115cd2caSopenharmony_ci        }
165115cd2caSopenharmony_ci    }
166115cd2caSopenharmony_ci    return valuesBucket;
167115cd2caSopenharmony_ci}
168115cd2caSopenharmony_ci
169115cd2caSopenharmony_civoid CalllogAbilityTest::ClearCallLog()
170115cd2caSopenharmony_ci{
171115cd2caSopenharmony_ci    // clear all callLog data
172115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
173115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
174115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
175115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
176115cd2caSopenharmony_ci}
177115cd2caSopenharmony_ci
178115cd2caSopenharmony_ci/*
179115cd2caSopenharmony_ci * @tc.number  calllog_Insert_test_100
180115cd2caSopenharmony_ci * @tc.name    Add a single contact data and verify whether the insertion is successful
181115cd2caSopenharmony_ci * @tc.desc    Added ability to call record
182115cd2caSopenharmony_ci * @tc.level   Level1
183115cd2caSopenharmony_ci * @tc.size    MediumTest
184115cd2caSopenharmony_ci * @tc.type    Function
185115cd2caSopenharmony_ci */
186115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Insert_test_100, testing::ext::TestSize.Level1)
187115cd2caSopenharmony_ci{
188115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Insert_test_100 is starting! ---");
189115cd2caSopenharmony_ci    std::vector<std::string> columns;
190115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
191115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
192115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
193115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
194115cd2caSopenharmony_ci    columns.push_back("phone_number");
195115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
196115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
197115cd2caSopenharmony_ci
198115cd2caSopenharmony_ci    // query insert data
199115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
200115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
201115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery = CalllogQuery(columns, predicates);
202115cd2caSopenharmony_ci    // resultSet count 1
203115cd2caSopenharmony_ci    int rowCount = 0;
204115cd2caSopenharmony_ci    resultSetDeleteQuery->GetRowCount(rowCount);
205115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
206115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetDeleteQuery, "calllog_Insert_test_100");
207115cd2caSopenharmony_ci    ClearCallLog();
208115cd2caSopenharmony_ci}
209115cd2caSopenharmony_ci
210115cd2caSopenharmony_ci/*
211115cd2caSopenharmony_ci * @tc.number  calllog_Insert_test_200
212115cd2caSopenharmony_ci * @tc.name    Add full field data to the callog table and verify that the insertion was successful
213115cd2caSopenharmony_ci * @tc.desc    Added ability to call record
214115cd2caSopenharmony_ci * @tc.level   Level1
215115cd2caSopenharmony_ci * @tc.size    MediumTest
216115cd2caSopenharmony_ci * @tc.type    Function
217115cd2caSopenharmony_ci */
218115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Insert_test_200, testing::ext::TestSize.Level1)
219115cd2caSopenharmony_ci{
220115cd2caSopenharmony_ci    HILOG_INFO("-----calllog_Insert_test_200 is starting!-----");
221115cd2caSopenharmony_ci    std::vector<std::string> columns;
222115cd2caSopenharmony_ci    GetAllValuesColumn(columns);
223115cd2caSopenharmony_ci    int columnsSize = 27;
224115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetCallLogValues(0, columnsSize, columns);
225115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
226115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
227115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
228115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
229115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
230115cd2caSopenharmony_ci    // resultSet count 1
231115cd2caSopenharmony_ci    int rowCount = 0;
232115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
233115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
234115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSet, "calllog_Insert_test_200");
235115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
236115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(rawId));
237115cd2caSopenharmony_ci    // test end delete data
238115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates2);
239115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
240115cd2caSopenharmony_ci    ClearCallLog();
241115cd2caSopenharmony_ci}
242115cd2caSopenharmony_ci
243115cd2caSopenharmony_ci/*
244115cd2caSopenharmony_ci * @tc.number  calllog_Update_test_300
245115cd2caSopenharmony_ci * @tc.name    Update single contact data and verify whether the update is successful
246115cd2caSopenharmony_ci * @tc.desc    Support single call record update capability
247115cd2caSopenharmony_ci * @tc.level   Level1
248115cd2caSopenharmony_ci * @tc.size    MediumTest
249115cd2caSopenharmony_ci * @tc.type    Function
250115cd2caSopenharmony_ci */
251115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Update_test_300, testing::ext::TestSize.Level1)
252115cd2caSopenharmony_ci{
253115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Update_test_300 is starting! ---");
254115cd2caSopenharmony_ci    std::vector<std::string> columns;
255115cd2caSopenharmony_ci    columns.push_back("phone_number");
256115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
257115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
258115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(12);
259115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
260115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
261115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
262115cd2caSopenharmony_ci
263115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
264115cd2caSopenharmony_ci    std::string phoneNumber_test = randomNumberUtils.Generating(10);
265115cd2caSopenharmony_ci    updateValues.Put("phone_number", phoneNumber_test);
266115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
267115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
268115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(updateValues, predicates);
269115cd2caSopenharmony_ci    EXPECT_EQ(0, updateCode);
270115cd2caSopenharmony_ci
271115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery = CalllogQuery(columns, predicates);
272115cd2caSopenharmony_ci    // resultSet count 1
273115cd2caSopenharmony_ci    int rowCount = 0;
274115cd2caSopenharmony_ci    resultSetDeleteQuery->GetRowCount(rowCount);
275115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
276115cd2caSopenharmony_ci    CheckResultSet(updateValues, resultSetDeleteQuery, "calllog_Update_test_300");
277115cd2caSopenharmony_ci    ClearCallLog();
278115cd2caSopenharmony_ci}
279115cd2caSopenharmony_ci
280115cd2caSopenharmony_ci/*
281115cd2caSopenharmony_ci * @tc.number  calllog_Update_test_400
282115cd2caSopenharmony_ci * @tc.name    Update the data of all fields of callog table and verify whether the update is successful
283115cd2caSopenharmony_ci * @tc.desc    Support all call log update capability
284115cd2caSopenharmony_ci * @tc.level   Level1
285115cd2caSopenharmony_ci * @tc.size    MediumTest
286115cd2caSopenharmony_ci * @tc.type    Function
287115cd2caSopenharmony_ci */
288115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Update_test_400, testing::ext::TestSize.Level1)
289115cd2caSopenharmony_ci{
290115cd2caSopenharmony_ci    HILOG_INFO("-----calllog_Update_test_400 is starting!-----");
291115cd2caSopenharmony_ci    std::vector<std::string> columns;
292115cd2caSopenharmony_ci    GetAllValuesColumn(columns);
293115cd2caSopenharmony_ci    int columnsSize = 27;
294115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetCallLogValues(0, columnsSize, columns);
295115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
296115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
297115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
298115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket upDateValuesBucket = GetCallLogValues(0, columnsSize, columns);
299115cd2caSopenharmony_ci    int upDateCode = CalllogUpdate(upDateValuesBucket, predicates);
300115cd2caSopenharmony_ci    EXPECT_EQ(upDateCode, 0);
301115cd2caSopenharmony_ci
302115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
303115cd2caSopenharmony_ci    int rowCount = 0;
304115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
305115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
306115cd2caSopenharmony_ci
307115cd2caSopenharmony_ci    CheckResultSet(upDateValuesBucket, resultSet, "calllog_Update_test_400");
308115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
309115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(rawId));
310115cd2caSopenharmony_ci    // test end delete data
311115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates2);
312115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
313115cd2caSopenharmony_ci    ClearCallLog();
314115cd2caSopenharmony_ci}
315115cd2caSopenharmony_ci
316115cd2caSopenharmony_ci/*
317115cd2caSopenharmony_ci * @tc.number  calllog_Update_test_500
318115cd2caSopenharmony_ci * @tc.name    Update all call records and verify that the update is successful
319115cd2caSopenharmony_ci * @tc.desc    Support all call log update capability
320115cd2caSopenharmony_ci * @tc.level   Level1
321115cd2caSopenharmony_ci * @tc.size    MediumTest
322115cd2caSopenharmony_ci * @tc.type    Function
323115cd2caSopenharmony_ci */
324115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Update_test_500, testing::ext::TestSize.Level1)
325115cd2caSopenharmony_ci{
326115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Update_test_500 is starting! ---");
327115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
328115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
329115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
330115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
331115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "testName");
332115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
333115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
334115cd2caSopenharmony_ci    int rawCount = 2;
335115cd2caSopenharmony_ci    std::vector<std::string> columns;
336115cd2caSopenharmony_ci    columns.push_back("ring_duration");
337115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
338115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
339115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetQuery = CalllogQuery(columns, predicates);
340115cd2caSopenharmony_ci    int rowCurrentCount = 0;
341115cd2caSopenharmony_ci    resultSetQuery->GetRowCount(rowCurrentCount);
342115cd2caSopenharmony_ci    resultSetQuery->Close();
343115cd2caSopenharmony_ci    EXPECT_EQ(rowCurrentCount, rawCount);
344115cd2caSopenharmony_ci
345115cd2caSopenharmony_ci    // update database current data
346115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
347115cd2caSopenharmony_ci    updateValues.Put("ring_duration", 500);
348115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
349115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(updateValues, predicates);
350115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
351115cd2caSopenharmony_ci    // check update data or dataBase
352115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetUpDateQuery = CalllogQuery(columns, predicates);
353115cd2caSopenharmony_ci    int rowUpDateCount = 0;
354115cd2caSopenharmony_ci    resultSetUpDateQuery->GetRowCount(rowUpDateCount);
355115cd2caSopenharmony_ci    EXPECT_EQ(rowCurrentCount, rowUpDateCount);
356115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> upValues;
357115cd2caSopenharmony_ci    upValues.push_back(updateValues);
358115cd2caSopenharmony_ci    upValues.push_back(updateValues);
359115cd2caSopenharmony_ci    CheckResultSetList(upValues, resultSetUpDateQuery, "calllog_Update_test_500");
360115cd2caSopenharmony_ci    ClearCallLog();
361115cd2caSopenharmony_ci}
362115cd2caSopenharmony_ci
363115cd2caSopenharmony_ci/*
364115cd2caSopenharmony_ci * @tc.number  calllog_Query_test_600
365115cd2caSopenharmony_ci * @tc.name    Add call record data, query the data according to the returned ID and return the query result
366115cd2caSopenharmony_ci * @tc.desc    Support single call record query capability
367115cd2caSopenharmony_ci * @tc.level   Level1
368115cd2caSopenharmony_ci * @tc.size    MediumTest
369115cd2caSopenharmony_ci * @tc.type    Function
370115cd2caSopenharmony_ci */
371115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Query_test_600, testing::ext::TestSize.Level1)
372115cd2caSopenharmony_ci{
373115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Query_test_600 is starting! ---");
374115cd2caSopenharmony_ci    std::vector<std::string> columns;
375115cd2caSopenharmony_ci    columns.push_back("phone_number");
376115cd2caSopenharmony_ci    columns.push_back("display_name");
377115cd2caSopenharmony_ci    columns.push_back("id");
378115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
379115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
380115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
381115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
382115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "testName");
383115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
384115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
385115cd2caSopenharmony_ci    // query insert data
386115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
387115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
388115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery = CalllogQuery(columns, predicates);
389115cd2caSopenharmony_ci    // resultSet count 1
390115cd2caSopenharmony_ci    int rowCount = 0;
391115cd2caSopenharmony_ci    resultSetDeleteQuery->GetRowCount(rowCount);
392115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
393115cd2caSopenharmony_ci    valuesBucket.Put("id", rawId);
394115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetDeleteQuery, "calllog_Query_test_600");
395115cd2caSopenharmony_ci    ClearCallLog();
396115cd2caSopenharmony_ci}
397115cd2caSopenharmony_ci
398115cd2caSopenharmony_ci/*
399115cd2caSopenharmony_ci * @tc.number  calllog_Query_test_800
400115cd2caSopenharmony_ci * @tc.name    Query the call record according to the combination conditions and return the query results
401115cd2caSopenharmony_ci * @tc.desc    Support combination condition query call record ability
402115cd2caSopenharmony_ci * @tc.level   Level1
403115cd2caSopenharmony_ci * @tc.size    MediumTest
404115cd2caSopenharmony_ci * @tc.type    Function
405115cd2caSopenharmony_ci */
406115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Query_test_800, testing::ext::TestSize.Level1)
407115cd2caSopenharmony_ci{
408115cd2caSopenharmony_ci    HILOG_INFO("-----calllog_Query_test_800 is starting!-----");
409115cd2caSopenharmony_ci    int ringDuration = 9121215;
410115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
411115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
412115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
413115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
414115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "testName");
415115cd2caSopenharmony_ci    valuesBucket.Put("ring_duration", ringDuration);
416115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
417115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
418115cd2caSopenharmony_ci
419115cd2caSopenharmony_ci    std::vector<std::string> columns;
420115cd2caSopenharmony_ci    columns.push_back("phone_number");
421115cd2caSopenharmony_ci    columns.push_back("display_name");
422115cd2caSopenharmony_ci    columns.push_back("ring_duration");
423115cd2caSopenharmony_ci    columns.push_back("id");
424115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
425115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
426115cd2caSopenharmony_ci    predicates.And();
427115cd2caSopenharmony_ci    predicates.EqualTo("ring_duration", std::to_string(ringDuration));
428115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
429115cd2caSopenharmony_ci    // resultSet count 1
430115cd2caSopenharmony_ci    int rowCount = 0;
431115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
432115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
433115cd2caSopenharmony_ci    // add id check
434115cd2caSopenharmony_ci    valuesBucket.Put("id", rawId);
435115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSet, "calllog_Query_test_800");
436115cd2caSopenharmony_ci    ClearCallLog();
437115cd2caSopenharmony_ci}
438115cd2caSopenharmony_ci
439115cd2caSopenharmony_ci/*
440115cd2caSopenharmony_ci * @tc.number  calllog_Query_test_900
441115cd2caSopenharmony_ci * @tc.name    Query all call records and return query results
442115cd2caSopenharmony_ci * @tc.desc    Query all call records
443115cd2caSopenharmony_ci * @tc.level   Level1
444115cd2caSopenharmony_ci * @tc.size    MediumTest
445115cd2caSopenharmony_ci * @tc.type    Function
446115cd2caSopenharmony_ci */
447115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Query_test_900, testing::ext::TestSize.Level1)
448115cd2caSopenharmony_ci{
449115cd2caSopenharmony_ci    HILOG_INFO("-----calllog_Query_test_900 is starting!-----");
450115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
451115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
452115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(14);
453115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
454115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "testName");
455115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
456115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
457115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
458115cd2caSopenharmony_ci    CalllogInsertValues(valuesBucket);
459115cd2caSopenharmony_ci    std::vector<std::string> columns;
460115cd2caSopenharmony_ci    columns.push_back("id");
461115cd2caSopenharmony_ci    columns.push_back("phone_number");
462115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
463115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
464115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
465115cd2caSopenharmony_ci    int current = 4;
466115cd2caSopenharmony_ci    // resultSet count 4
467115cd2caSopenharmony_ci    int rowCount = 0;
468115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
469115cd2caSopenharmony_ci    EXPECT_EQ(current, rowCount);
470115cd2caSopenharmony_ci    resultSet->Close();
471115cd2caSopenharmony_ci    ClearCallLog();
472115cd2caSopenharmony_ci}
473115cd2caSopenharmony_ci
474115cd2caSopenharmony_ci/*
475115cd2caSopenharmony_ci * @tc.number  calllog_Delete_test_1000
476115cd2caSopenharmony_ci * @tc.name    Delete a single call record and verify whether the deletion is successful
477115cd2caSopenharmony_ci * @tc.desc    Call log deletion capability
478115cd2caSopenharmony_ci * @tc.level   Level1
479115cd2caSopenharmony_ci * @tc.size    MediumTest
480115cd2caSopenharmony_ci * @tc.type    Function
481115cd2caSopenharmony_ci */
482115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Delete_test_1000, testing::ext::TestSize.Level1)
483115cd2caSopenharmony_ci{
484115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Delete_test_1000 is starting! ---");
485115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
486115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
487115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
488115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
489115cd2caSopenharmony_ci    std::vector<std::string> columns;
490115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
491115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
492115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
493115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
494115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
495115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
496115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
497115cd2caSopenharmony_ci    // resultSet count
498115cd2caSopenharmony_ci    int rowCount = 0;
499115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
500115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
501115cd2caSopenharmony_ci    resultSet->Close();
502115cd2caSopenharmony_ci    ClearCallLog();
503115cd2caSopenharmony_ci}
504115cd2caSopenharmony_ci
505115cd2caSopenharmony_ci/*
506115cd2caSopenharmony_ci * @tc.number  calllog_Delete_test_1100
507115cd2caSopenharmony_ci * @tc.name    Delete a single call record data and verify whether the deletion is successful
508115cd2caSopenharmony_ci * @tc.desc    Call log deletion capability
509115cd2caSopenharmony_ci * @tc.level   Level1
510115cd2caSopenharmony_ci * @tc.size    MediumTest
511115cd2caSopenharmony_ci * @tc.type    Function
512115cd2caSopenharmony_ci */
513115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Delete_test_1100, testing::ext::TestSize.Level1)
514115cd2caSopenharmony_ci{
515115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Delete_test_1100 is starting! ---");
516115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
517115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
518115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
519115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
520115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
521115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
522115cd2caSopenharmony_ci
523115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
524115cd2caSopenharmony_ci    std::string phoneNumber_test = randomNumberUtils.Generating(11);
525115cd2caSopenharmony_ci    valuesBucketTwo.Put("phone_number", phoneNumber_test);
526115cd2caSopenharmony_ci    int rawIdTwo = CalllogInsertValues(valuesBucketTwo);
527115cd2caSopenharmony_ci    EXPECT_GT(rawIdTwo, 0);
528115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
529115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
530115cd2caSopenharmony_ci    predicates.Or();
531115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawIdTwo));
532115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
533115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
534115cd2caSopenharmony_ci
535115cd2caSopenharmony_ci    std::vector<std::string> columns;
536115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
537115cd2caSopenharmony_ci    // resultSet count
538115cd2caSopenharmony_ci    int rowCount = 0;
539115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
540115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
541115cd2caSopenharmony_ci    resultSet->Close();
542115cd2caSopenharmony_ci    ClearCallLog();
543115cd2caSopenharmony_ci}
544115cd2caSopenharmony_ci
545115cd2caSopenharmony_ci/*
546115cd2caSopenharmony_ci * @tc.number  calllog_Delete_test_1200
547115cd2caSopenharmony_ci * @tc.name    Delete the data of all fields in the callog table and verify whether the deletion is successful
548115cd2caSopenharmony_ci * @tc.desc    Call log deletion capability
549115cd2caSopenharmony_ci * @tc.level   Level1
550115cd2caSopenharmony_ci * @tc.size    MediumTest
551115cd2caSopenharmony_ci * @tc.type    Function
552115cd2caSopenharmony_ci */
553115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Delete_test_1200, testing::ext::TestSize.Level1)
554115cd2caSopenharmony_ci{
555115cd2caSopenharmony_ci    HILOG_INFO("-----calllog_Delete_test_1200 is starting!-----");
556115cd2caSopenharmony_ci    // insert
557115cd2caSopenharmony_ci    std::vector<std::string> columns;
558115cd2caSopenharmony_ci    GetAllValuesColumn(columns);
559115cd2caSopenharmony_ci    int columnsSize = 27;
560115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetCallLogValues(0, columnsSize, columns);
561115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
562115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
563115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
564115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
565115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
566115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
567115cd2caSopenharmony_ci
568115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery = CalllogQuery(columns, predicates);
569115cd2caSopenharmony_ci    int rowCount = 0;
570115cd2caSopenharmony_ci    resultSetDeleteQuery->GetRowCount(rowCount);
571115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
572115cd2caSopenharmony_ci    resultSetDeleteQuery->Close();
573115cd2caSopenharmony_ci    ClearCallLog();
574115cd2caSopenharmony_ci}
575115cd2caSopenharmony_ci
576115cd2caSopenharmony_ci/*
577115cd2caSopenharmony_ci * @tc.number  calllog_BatchInsert_test_1300
578115cd2caSopenharmony_ci * @tc.name    Batch add call record data and verify whether the insertion is successful
579115cd2caSopenharmony_ci * @tc.desc    Add ability to call records in batches
580115cd2caSopenharmony_ci * @tc.level   Level1
581115cd2caSopenharmony_ci * @tc.size    MediumTest
582115cd2caSopenharmony_ci * @tc.type    Function
583115cd2caSopenharmony_ci */
584115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_BatchInsert_test_1300, testing::ext::TestSize.Level1)
585115cd2caSopenharmony_ci{
586115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_BatchInsert_test_1300 is starting!---");
587115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
588115cd2caSopenharmony_ci    int numberLen = 14;
589115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
590115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(numberLen);
591115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
592115cd2caSopenharmony_ci    valuesBucket.Put("ring_duration", 1000);
593115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
594115cd2caSopenharmony_ci    std::string phoneNumber2 = randomNumberUtils.Generating(numberLen);
595115cd2caSopenharmony_ci    valuesBucketTwo.Put("phone_number", phoneNumber2);
596115cd2caSopenharmony_ci    valuesBucketTwo.Put("ring_duration", 1200);
597115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketThree;
598115cd2caSopenharmony_ci    std::string phoneNumber3 = randomNumberUtils.Generating(numberLen);
599115cd2caSopenharmony_ci    valuesBucketThree.Put("phone_number", phoneNumber3);
600115cd2caSopenharmony_ci    valuesBucketThree.Put("ring_duration", 1500);
601115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> listAddValuesBucket;
602115cd2caSopenharmony_ci    listAddValuesBucket.push_back(valuesBucket);
603115cd2caSopenharmony_ci    listAddValuesBucket.push_back(valuesBucketTwo);
604115cd2caSopenharmony_ci    listAddValuesBucket.push_back(valuesBucketThree);
605115cd2caSopenharmony_ci    OHOS::Uri batchInsertUri(CallLogUri::CALL_LOG);
606115cd2caSopenharmony_ci
607115cd2caSopenharmony_ci    int batchInsertCode = calllogAbility.BatchInsert(batchInsertUri, listAddValuesBucket);
608115cd2caSopenharmony_ci    EXPECT_EQ(batchInsertCode, 0);
609115cd2caSopenharmony_ci
610115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
611115cd2caSopenharmony_ci    std::vector<std::string> columns;
612115cd2caSopenharmony_ci    columns.push_back("phone_number");
613115cd2caSopenharmony_ci    columns.push_back("ring_duration");
614115cd2caSopenharmony_ci    predicates.EqualTo("phone_number", phoneNumber);
615115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
616115cd2caSopenharmony_ci    int rowCount = 0;
617115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
618115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
619115cd2caSopenharmony_ci
620115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSet, "calllog_BatchInsert_test_1300");
621115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
622115cd2caSopenharmony_ci    predicates2.EqualTo("phone_number", phoneNumber2);
623115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetTwo = CalllogQuery(columns, predicates2);
624115cd2caSopenharmony_ci    int rowCountTwo = 0;
625115cd2caSopenharmony_ci    resultSetTwo->GetRowCount(rowCountTwo);
626115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCountTwo);
627115cd2caSopenharmony_ci
628115cd2caSopenharmony_ci    CheckResultSet(valuesBucketTwo, resultSetTwo, "calllog_BatchInsert_test_1300");
629115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
630115cd2caSopenharmony_ci    predicates3.EqualTo("phone_number", phoneNumber3);
631115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetThree = CalllogQuery(columns, predicates3);
632115cd2caSopenharmony_ci    int rowCountThree = 0;
633115cd2caSopenharmony_ci    resultSetThree->GetRowCount(rowCountThree);
634115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCountThree);
635115cd2caSopenharmony_ci    CheckResultSet(valuesBucketThree, resultSetThree, "calllog_BatchInsert_test_1300");
636115cd2caSopenharmony_ci    ClearCallLog();
637115cd2caSopenharmony_ci}
638115cd2caSopenharmony_ci
639115cd2caSopenharmony_ci/*
640115cd2caSopenharmony_ci * @tc.number  calllog_Delete_test_1400
641115cd2caSopenharmony_ci * @tc.name    Delete call record data in batch and verify whether the deletion is successful
642115cd2caSopenharmony_ci * @tc.desc    delete ability to call records in batches
643115cd2caSopenharmony_ci * @tc.level   Level1
644115cd2caSopenharmony_ci * @tc.size    MediumTest
645115cd2caSopenharmony_ci * @tc.type    Function
646115cd2caSopenharmony_ci */
647115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Delete_test_1400, testing::ext::TestSize.Level1)
648115cd2caSopenharmony_ci{
649115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Delete_test_1400 is starting!---");
650115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketOne;
651115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
652115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(9);
653115cd2caSopenharmony_ci    valuesBucketOne.Put("phone_number", phoneNumber);
654115cd2caSopenharmony_ci    valuesBucketOne.Put("ring_duration", 998);
655115cd2caSopenharmony_ci    int rawIdOne = CalllogInsertValues(valuesBucketOne);
656115cd2caSopenharmony_ci    EXPECT_GT(rawIdOne, 0);
657115cd2caSopenharmony_ci    int rawIdTwo = CalllogInsertValues(valuesBucketOne);
658115cd2caSopenharmony_ci    EXPECT_GT(rawIdTwo, 0);
659115cd2caSopenharmony_ci
660115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
661115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
662115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
663115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
664115cd2caSopenharmony_ci    std::vector<std::string> columns;
665115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = CalllogQuery(columns, predicates);
666115cd2caSopenharmony_ci    int rowCount = 0;
667115cd2caSopenharmony_ci    resultSetInsertQuery->GetRowCount(rowCount);
668115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
669115cd2caSopenharmony_ci    ClearCallLog();
670115cd2caSopenharmony_ci}
671115cd2caSopenharmony_ci
672115cd2caSopenharmony_ci/*
673115cd2caSopenharmony_ci * @tc.number  calllog_Update_test_1500
674115cd2caSopenharmony_ci * @tc.name    Batch update call record data and verify whether the update is successful
675115cd2caSopenharmony_ci * @tc.desc    update ability to call records in batches
676115cd2caSopenharmony_ci * @tc.level   Level1
677115cd2caSopenharmony_ci * @tc.size    MediumTest
678115cd2caSopenharmony_ci * @tc.type    Function
679115cd2caSopenharmony_ci */
680115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_Update_test_1500, testing::ext::TestSize.Level1)
681115cd2caSopenharmony_ci{
682115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_Update_test_1500 is starting!---");
683115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketOne;
684115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
685115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(9);
686115cd2caSopenharmony_ci    valuesBucketOne.Put("phone_number", phoneNumber);
687115cd2caSopenharmony_ci    valuesBucketOne.Put("ring_duration", 998);
688115cd2caSopenharmony_ci    int rawIdOne = CalllogInsertValues(valuesBucketOne);
689115cd2caSopenharmony_ci    EXPECT_GT(rawIdOne, 0);
690115cd2caSopenharmony_ci    int rawIdTwo = CalllogInsertValues(valuesBucketOne);
691115cd2caSopenharmony_ci    EXPECT_GT(rawIdTwo, 0);
692115cd2caSopenharmony_ci
693115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket calllogValues;
694115cd2caSopenharmony_ci    std::string phoneNumber2 = randomNumberUtils.Generating(5);
695115cd2caSopenharmony_ci    calllogValues.Put("phone_number", phoneNumber2);
696115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
697115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawIdOne));
698115cd2caSopenharmony_ci    predicates.Or();
699115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawIdTwo));
700115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(calllogValues, predicates);
701115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
702115cd2caSopenharmony_ci
703115cd2caSopenharmony_ci    std::vector<std::string> columns;
704115cd2caSopenharmony_ci    columns.push_back("phone_number");
705115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = CalllogQuery(columns, predicates);
706115cd2caSopenharmony_ci    int rowCount = 0;
707115cd2caSopenharmony_ci    resultSetInsertQuery->GetRowCount(rowCount);
708115cd2caSopenharmony_ci    EXPECT_EQ(2, rowCount);
709115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> listValue;
710115cd2caSopenharmony_ci    listValue.push_back(calllogValues);
711115cd2caSopenharmony_ci    listValue.push_back(calllogValues);
712115cd2caSopenharmony_ci    CheckResultSetList(listValue, resultSetInsertQuery, "calllog_Update_test_1500");
713115cd2caSopenharmony_ci    ClearCallLog();
714115cd2caSopenharmony_ci}
715115cd2caSopenharmony_ci
716115cd2caSopenharmony_ci/*
717115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Insert_test_1600
718115cd2caSopenharmony_ci * @tc.name    When adding individual contact data, a non-existent field is passed in
719115cd2caSopenharmony_ci * @tc.desc    Exception use case
720115cd2caSopenharmony_ci * @tc.level   Level1
721115cd2caSopenharmony_ci * @tc.size    MediumTest
722115cd2caSopenharmony_ci * @tc.type    Function
723115cd2caSopenharmony_ci */
724115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Insert_test_1600, testing::ext::TestSize.Level1)
725115cd2caSopenharmony_ci{
726115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Insert_test_1600 is starting!-----");
727115cd2caSopenharmony_ci
728115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
729115cd2caSopenharmony_ci    OHOS::Uri errorUri(CallLogUri::ERROR_URI);
730115cd2caSopenharmony_ci    std::vector<std::string> columns;
731115cd2caSopenharmony_ci    columns.push_back("phone_number");
732115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
733115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(6);
734115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket calllogValues;
735115cd2caSopenharmony_ci    calllogValues.Put("phone_numbers", phoneNumber);
736115cd2caSopenharmony_ci    int calllogId = calllogAbility.Insert(uriCalllog, calllogValues);
737115cd2caSopenharmony_ci    EXPECT_EQ(calllogId, -1);
738115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
739115cd2caSopenharmony_ci    predicates.EqualTo("phone_numbers", phoneNumber);
740115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
741115cd2caSopenharmony_ci    int rowCount = 0;
742115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
743115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCount);
744115cd2caSopenharmony_ci
745115cd2caSopenharmony_ci    resultSet->Close();
746115cd2caSopenharmony_ci    calllogValues.Clear();
747115cd2caSopenharmony_ci    calllogValues.Put("phone_number", phoneNumber);
748115cd2caSopenharmony_ci    calllogId = calllogAbility.Insert(errorUri, calllogValues);
749115cd2caSopenharmony_ci    EXPECT_EQ(calllogId, -1);
750115cd2caSopenharmony_ci
751115cd2caSopenharmony_ci    calllogValues.Clear();
752115cd2caSopenharmony_ci    predicates.EqualTo("phone_number", phoneNumber);
753115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetUriError = CalllogQuery(columns, predicates);
754115cd2caSopenharmony_ci    int rowCountUriError = 0;
755115cd2caSopenharmony_ci    resultSetUriError->GetRowCount(rowCountUriError);
756115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCountUriError);
757115cd2caSopenharmony_ci    resultSetUriError->Close();
758115cd2caSopenharmony_ci    ClearCallLog();
759115cd2caSopenharmony_ci}
760115cd2caSopenharmony_ci
761115cd2caSopenharmony_ci/*
762115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Update_test_1700
763115cd2caSopenharmony_ci * @tc.name    Update a single call record and pass in non-existent fields
764115cd2caSopenharmony_ci * @tc.desc    Updated ability to call record
765115cd2caSopenharmony_ci * @tc.level   Level1
766115cd2caSopenharmony_ci * @tc.size    MediumTest
767115cd2caSopenharmony_ci * @tc.type    Function
768115cd2caSopenharmony_ci */
769115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Update_test_1700, testing::ext::TestSize.Level1)
770115cd2caSopenharmony_ci{
771115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_Update_test_1700 is starting! ---");
772115cd2caSopenharmony_ci    std::vector<std::string> columns;
773115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
774115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
775115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
776115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
777115cd2caSopenharmony_ci    valuesBucket.Put("display_name", "abnormal_sigle");
778115cd2caSopenharmony_ci    columns.push_back("phone_number");
779115cd2caSopenharmony_ci    columns.push_back("display_name");
780115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
781115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
782115cd2caSopenharmony_ci
783115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
784115cd2caSopenharmony_ci    updateValues.Put("phone_number_sha", phoneNumber);
785115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
786115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
787115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(updateValues, predicates);
788115cd2caSopenharmony_ci    EXPECT_EQ(-1, updateCode);
789115cd2caSopenharmony_ci
790115cd2caSopenharmony_ci    // query insert data
791115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = CalllogQuery(columns, predicates);
792115cd2caSopenharmony_ci    // resultSet count 0, update failed will delete the calllog
793115cd2caSopenharmony_ci    int rowCount = 0;
794115cd2caSopenharmony_ci    resultSetInsertQuery->GetRowCount(rowCount);
795115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
796115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetInsertQuery, "abnormal_calllog_Update_test_1700");
797115cd2caSopenharmony_ci    ClearCallLog();
798115cd2caSopenharmony_ci}
799115cd2caSopenharmony_ci
800115cd2caSopenharmony_ci/*
801115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Update_test_1800
802115cd2caSopenharmony_ci * @tc.name    Update all call records and pass in a non-existent field
803115cd2caSopenharmony_ci * @tc.desc    Updated ability to call record
804115cd2caSopenharmony_ci * @tc.level   Level1
805115cd2caSopenharmony_ci * @tc.size    MediumTest
806115cd2caSopenharmony_ci * @tc.type    Function
807115cd2caSopenharmony_ci */
808115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Update_test_1800, testing::ext::TestSize.Level1)
809115cd2caSopenharmony_ci{
810115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_Update_test_1800 is starting! ---");
811115cd2caSopenharmony_ci    std::vector<std::string> columns;
812115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketOne;
813115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
814115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
815115cd2caSopenharmony_ci    valuesBucketOne.Put("phone_number", phoneNumber);
816115cd2caSopenharmony_ci    valuesBucketOne.Put("ring_duration", 998);
817115cd2caSopenharmony_ci    int rawIdOne = CalllogInsertValues(valuesBucketOne);
818115cd2caSopenharmony_ci    EXPECT_GT(rawIdOne, 0);
819115cd2caSopenharmony_ci
820115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
821115cd2caSopenharmony_ci    std::string phoneNumber_test = randomNumberUtils.Generating(12);
822115cd2caSopenharmony_ci    valuesBucketTwo.Put("phone_number", phoneNumber_test);
823115cd2caSopenharmony_ci    valuesBucketTwo.Put("ring_duration", 999);
824115cd2caSopenharmony_ci    int rawIdTwo = CalllogInsertValues(valuesBucketTwo);
825115cd2caSopenharmony_ci    EXPECT_GT(rawIdTwo, 0);
826115cd2caSopenharmony_ci
827115cd2caSopenharmony_ci    columns.push_back("phone_number");
828115cd2caSopenharmony_ci    columns.push_back("ring_duration");
829115cd2caSopenharmony_ci
830115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
831115cd2caSopenharmony_ci    updateValues.Put("phone_number", phoneNumber);
832115cd2caSopenharmony_ci    updateValues.Put("ring_duration", 888);
833115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
834115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
835115cd2caSopenharmony_ci    predicates.And();
836115cd2caSopenharmony_ci    predicates.EqualTo("ring_duration_shs", "999");
837115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(updateValues, predicates);
838115cd2caSopenharmony_ci    EXPECT_EQ(-1, updateCode);
839115cd2caSopenharmony_ci
840115cd2caSopenharmony_ci    // query insert data
841115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
842115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(rawIdOne));
843115cd2caSopenharmony_ci    predicates2.Or();
844115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(rawIdTwo));
845115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = CalllogQuery(columns, predicates2);
846115cd2caSopenharmony_ci
847115cd2caSopenharmony_ci    // resultSet count 0, update failed will delete the calllog
848115cd2caSopenharmony_ci    int rowCount = 0;
849115cd2caSopenharmony_ci    resultSetInsertQuery->GetRowCount(rowCount);
850115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
851115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> listValue;
852115cd2caSopenharmony_ci    listValue.push_back(valuesBucketOne);
853115cd2caSopenharmony_ci    listValue.push_back(valuesBucketTwo);
854115cd2caSopenharmony_ci    CheckResultSetList(listValue, resultSetInsertQuery, "abnormal_calllog_Update_test_1800");
855115cd2caSopenharmony_ci    ClearCallLog();
856115cd2caSopenharmony_ci}
857115cd2caSopenharmony_ci
858115cd2caSopenharmony_ci/*
859115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Query_test_1900
860115cd2caSopenharmony_ci * @tc.name    When querying the call record, a non-existent data is passed in
861115cd2caSopenharmony_ci * @tc.desc    Exception use case
862115cd2caSopenharmony_ci * @tc.level   Level1
863115cd2caSopenharmony_ci * @tc.size    MediumTest
864115cd2caSopenharmony_ci * @tc.type    Function
865115cd2caSopenharmony_ci */
866115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Query_test_1900, testing::ext::TestSize.Level1)
867115cd2caSopenharmony_ci{
868115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Query_test_1900 is starting!-----");
869115cd2caSopenharmony_ci    std::vector<std::string> columns;
870115cd2caSopenharmony_ci    columns.push_back("id");
871115cd2caSopenharmony_ci    columns.push_back("phone_number");
872115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
873115cd2caSopenharmony_ci    predicates.EqualTo("id", "100000000");
874115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
875115cd2caSopenharmony_ci    // resultSet count
876115cd2caSopenharmony_ci    int rowCount = 0;
877115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
878115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
879115cd2caSopenharmony_ci    resultSet->Close();
880115cd2caSopenharmony_ci    ClearCallLog();
881115cd2caSopenharmony_ci}
882115cd2caSopenharmony_ci
883115cd2caSopenharmony_ci/*
884115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Query_test_2000
885115cd2caSopenharmony_ci * @tc.name    An incorrect table name was passed in when querying the call record
886115cd2caSopenharmony_ci * @tc.desc    Exception use case
887115cd2caSopenharmony_ci * @tc.level   Level1
888115cd2caSopenharmony_ci * @tc.size    MediumTest
889115cd2caSopenharmony_ci * @tc.type    Function
890115cd2caSopenharmony_ci */
891115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Query_test_2000, testing::ext::TestSize.Level1)
892115cd2caSopenharmony_ci{
893115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Query_test_2000 is starting!-----");
894115cd2caSopenharmony_ci    OHOS::Uri uriCalllogs(CallLogUri::ERROR_URI);
895115cd2caSopenharmony_ci    std::vector<std::string> columns;
896115cd2caSopenharmony_ci    columns.push_back("id");
897115cd2caSopenharmony_ci    columns.push_back("phone_number");
898115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
899115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
900115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
901115cd2caSopenharmony_ci        calllogAbility.Query(uriCalllogs, predicates, columns);
902115cd2caSopenharmony_ci    EXPECT_EQ(resultSet, nullptr);
903115cd2caSopenharmony_ci    ClearCallLog();
904115cd2caSopenharmony_ci}
905115cd2caSopenharmony_ci
906115cd2caSopenharmony_ci/*
907115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Query_test_2100
908115cd2caSopenharmony_ci * @tc.name    When querying the call record according to the combination conditions,
909115cd2caSopenharmony_ci *             the wrong field name and nonexistent data are passed in
910115cd2caSopenharmony_ci * @tc.desc    Exception use case
911115cd2caSopenharmony_ci * @tc.level   Level1
912115cd2caSopenharmony_ci * @tc.size    MediumTest
913115cd2caSopenharmony_ci * @tc.type    Function
914115cd2caSopenharmony_ci */
915115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Query_test_2100, testing::ext::TestSize.Level1)
916115cd2caSopenharmony_ci{
917115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Query_test_2100 is starting!-----");
918115cd2caSopenharmony_ci
919115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
920115cd2caSopenharmony_ci    std::vector<std::string> columns;
921115cd2caSopenharmony_ci    columns.push_back("id");
922115cd2caSopenharmony_ci    columns.push_back("phone_number");
923115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
924115cd2caSopenharmony_ci    predicates.GreaterThan("ids", "0");
925115cd2caSopenharmony_ci    predicates.And();
926115cd2caSopenharmony_ci    predicates.LessThan("id", "20");
927115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
928115cd2caSopenharmony_ci        calllogAbility.Query(uriCalllog, predicates, columns);
929115cd2caSopenharmony_ci    // resultSet count
930115cd2caSopenharmony_ci    int rowCount = -1;
931115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
932115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCount);
933115cd2caSopenharmony_ci    resultSet->Close();
934115cd2caSopenharmony_ci    ClearCallLog();
935115cd2caSopenharmony_ci}
936115cd2caSopenharmony_ci
937115cd2caSopenharmony_ci/*
938115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Query_test_2200
939115cd2caSopenharmony_ci * @tc.name    An error field is passed in when querying all call records
940115cd2caSopenharmony_ci * @tc.desc    Exception use case
941115cd2caSopenharmony_ci * @tc.level   Level1
942115cd2caSopenharmony_ci * @tc.size    MediumTest
943115cd2caSopenharmony_ci * @tc.type    Function
944115cd2caSopenharmony_ci */
945115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Query_test_2200, testing::ext::TestSize.Level1)
946115cd2caSopenharmony_ci{
947115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Query_test_2200 is starting!-----");
948115cd2caSopenharmony_ci    OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
949115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
950115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
951115cd2caSopenharmony_ci
952115cd2caSopenharmony_ci    int deleteCode = calllogAbility.Delete(uriCalllog, predicates);
953115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
954115cd2caSopenharmony_ci    std::vector<std::string> columns;
955115cd2caSopenharmony_ci    columns.push_back("id");
956115cd2caSopenharmony_ci    columns.push_back("phone_numbers");
957115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
958115cd2caSopenharmony_ci    predicates2.GreaterThan("id", "0");
959115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates2);
960115cd2caSopenharmony_ci    EXPECT_NE(resultSet, nullptr);
961115cd2caSopenharmony_ci    ClearCallLog();
962115cd2caSopenharmony_ci}
963115cd2caSopenharmony_ci
964115cd2caSopenharmony_ci/*
965115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Delete_test_2300
966115cd2caSopenharmony_ci * @tc.name    An error field is passed in when deleting a single call record
967115cd2caSopenharmony_ci * @tc.desc    Added ability to call record
968115cd2caSopenharmony_ci * @tc.level   Level1
969115cd2caSopenharmony_ci * @tc.size    MediumTest
970115cd2caSopenharmony_ci * @tc.type    Function
971115cd2caSopenharmony_ci */
972115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Delete_test_2300, testing::ext::TestSize.Level1)
973115cd2caSopenharmony_ci{
974115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_calllog_Delete_test_2300 is starting!-----");
975115cd2caSopenharmony_ci    std::vector<std::string> columns;
976115cd2caSopenharmony_ci    GetAllValuesColumn(columns);
977115cd2caSopenharmony_ci    int columnsSize = 27;
978115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetCallLogValues(0, columnsSize, columns);
979115cd2caSopenharmony_ci    int rawId = CalllogInsertValues(valuesBucket);
980115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
981115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
982115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
983115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
984115cd2caSopenharmony_ci    int rowCount = 0;
985115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
986115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
987115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSet, "abnormal_calllog_Delete_test_2300");
988115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
989115cd2caSopenharmony_ci    predicates2.EqualTo("ids", std::to_string(rawId));
990115cd2caSopenharmony_ci    // test end delete data
991115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates2);
992115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, -1);
993115cd2caSopenharmony_ci
994115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
995115cd2caSopenharmony_ci    predicates3.EqualTo("id", std::to_string(rawId));
996115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDelete = CalllogQuery(columns, predicates3);
997115cd2caSopenharmony_ci    // resultSet count 1
998115cd2caSopenharmony_ci    int rowCountDelete = 0;
999115cd2caSopenharmony_ci    resultSetDelete->GetRowCount(rowCountDelete);
1000115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCountDelete);
1001115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetDelete, "abnormal_calllog_Delete_test_2300");
1002115cd2caSopenharmony_ci    ClearCallLog();
1003115cd2caSopenharmony_ci}
1004115cd2caSopenharmony_ci
1005115cd2caSopenharmony_ci/*
1006115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_BatchInsert_test_2400
1007115cd2caSopenharmony_ci * @tc.name    Batch call records are added and several of them fail. See the processing logic
1008115cd2caSopenharmony_ci * @tc.desc    Exception use case
1009115cd2caSopenharmony_ci * @tc.level   Level1
1010115cd2caSopenharmony_ci * @tc.size    MediumTest
1011115cd2caSopenharmony_ci * @tc.type    Function
1012115cd2caSopenharmony_ci */
1013115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_BatchInsert_test_2400, testing::ext::TestSize.Level1)
1014115cd2caSopenharmony_ci{
1015115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
1016115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
1017115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
1018115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
1019115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_BatchInsert_test_2400 is starting! ---");
1020115cd2caSopenharmony_ci
1021115cd2caSopenharmony_ci    OHOS::Uri uriData(CallLogUri::CALL_LOG);
1022115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket calllogValues;
1023115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
1024115cd2caSopenharmony_ci    int batchInserCode = 0;
1025115cd2caSopenharmony_ci    for (int i = 0; i < 10; i++) {
1026115cd2caSopenharmony_ci        listAddBluk.clear();
1027115cd2caSopenharmony_ci        for (int j = 10 * i + 1; j <= 10 * (i + 1); j++) {
1028115cd2caSopenharmony_ci            calllogValues.Clear();
1029115cd2caSopenharmony_ci            if (j == 14 || j == 27 || j == 57) {
1030115cd2caSopenharmony_ci                calllogValues.Put("phone_numbers", std::to_string(j));
1031115cd2caSopenharmony_ci            } else {
1032115cd2caSopenharmony_ci                calllogValues.Put("phone_number", std::to_string(j));
1033115cd2caSopenharmony_ci            }
1034115cd2caSopenharmony_ci            listAddBluk.push_back(calllogValues);
1035115cd2caSopenharmony_ci        }
1036115cd2caSopenharmony_ci        batchInserCode = calllogAbility.BatchInsert(uriData, listAddBluk);
1037115cd2caSopenharmony_ci        HILOG_INFO("abnormal_calllog_BatchInsert_test_2400 : batchInserCode = %{public}d", batchInserCode);
1038115cd2caSopenharmony_ci        if (batchInserCode == 0) {
1039115cd2caSopenharmony_ci            HILOG_INFO("abnormal_calllog_BatchInsert_test_2400 batch insert success!");
1040115cd2caSopenharmony_ci            EXPECT_EQ(batchInserCode, 0);
1041115cd2caSopenharmony_ci        } else {
1042115cd2caSopenharmony_ci            HILOG_INFO("abnormal_calllog_BatchInsert_test_2400 batch insert fail!");
1043115cd2caSopenharmony_ci            EXPECT_EQ(batchInserCode, -1);
1044115cd2caSopenharmony_ci        }
1045115cd2caSopenharmony_ci    }
1046115cd2caSopenharmony_ci    ClearCallLog();
1047115cd2caSopenharmony_ci}
1048115cd2caSopenharmony_ci
1049115cd2caSopenharmony_ci/*
1050115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_BatchInsert_test_2500
1051115cd2caSopenharmony_ci * @tc.name    Add 1000 pieces of data in batch to make article 500 fail. Check the subsequent processing logic
1052115cd2caSopenharmony_ci * @tc.desc    Exception use case
1053115cd2caSopenharmony_ci * @tc.level   Level1
1054115cd2caSopenharmony_ci * @tc.size    MediumTest
1055115cd2caSopenharmony_ci * @tc.type    Function
1056115cd2caSopenharmony_ci */
1057115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_BatchInsert_test_2500, testing::ext::TestSize.Level1)
1058115cd2caSopenharmony_ci{
1059115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_BatchInsert_test_2500 is starting! ---");
1060115cd2caSopenharmony_ci
1061115cd2caSopenharmony_ci    OHOS::Uri uriData(CallLogUri::CALL_LOG);
1062115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket calllogValues;
1063115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
1064115cd2caSopenharmony_ci    int batchInserCode = 0;
1065115cd2caSopenharmony_ci    for (int i = 0; i < 1000; i++) {
1066115cd2caSopenharmony_ci        calllogValues.Clear();
1067115cd2caSopenharmony_ci        if (i == 500) {
1068115cd2caSopenharmony_ci            calllogValues.Put("phone_numbers", std::to_string(i + 1));
1069115cd2caSopenharmony_ci        } else {
1070115cd2caSopenharmony_ci            calllogValues.Put("phone_number", std::to_string(i + 1));
1071115cd2caSopenharmony_ci        }
1072115cd2caSopenharmony_ci        listAddBluk.push_back(calllogValues);
1073115cd2caSopenharmony_ci    }
1074115cd2caSopenharmony_ci    batchInserCode = calllogAbility.BatchInsert(uriData, listAddBluk);
1075115cd2caSopenharmony_ci    if (batchInserCode == 0) {
1076115cd2caSopenharmony_ci        HILOG_INFO("abnormal_calllog_BatchInsert_test_2500 batch insert success!");
1077115cd2caSopenharmony_ci        EXPECT_EQ(batchInserCode, 0);
1078115cd2caSopenharmony_ci    } else {
1079115cd2caSopenharmony_ci        HILOG_INFO("abnormal_calllog_BatchInsert_test_2500 batch insert fail!");
1080115cd2caSopenharmony_ci        EXPECT_EQ(batchInserCode, -1);
1081115cd2caSopenharmony_ci    }
1082115cd2caSopenharmony_ci    ClearCallLog();
1083115cd2caSopenharmony_ci}
1084115cd2caSopenharmony_ci
1085115cd2caSopenharmony_ci/*
1086115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_delete_test_2600
1087115cd2caSopenharmony_ci * @tc.name    Delete call record data in batch, and several of them fail. Check the processing logic
1088115cd2caSopenharmony_ci * @tc.desc    Exception use case
1089115cd2caSopenharmony_ci * @tc.level   Level1
1090115cd2caSopenharmony_ci * @tc.size    MediumTest
1091115cd2caSopenharmony_ci * @tc.type    Function
1092115cd2caSopenharmony_ci */
1093115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_delete_test_2600, testing::ext::TestSize.Level1)
1094115cd2caSopenharmony_ci{
1095115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_delete_test_2600 is starting! ---");
1096115cd2caSopenharmony_ci
1097115cd2caSopenharmony_ci    OHOS::Uri errorUriCalllogs(CallLogUri::ERROR_URI);
1098115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
1099115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
1100115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
1101115cd2caSopenharmony_ci    valuesBucket.Put("phone_number", phoneNumber);
1102115cd2caSopenharmony_ci    int calllogIdOne = CalllogInsertValues(valuesBucket);
1103115cd2caSopenharmony_ci    EXPECT_GT(calllogIdOne, 0);
1104115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
1105115cd2caSopenharmony_ci    valuesBucketTwo.Put("phone_number", phoneNumber);
1106115cd2caSopenharmony_ci    int calllogIdTwo = CalllogInsertValues(valuesBucketTwo);
1107115cd2caSopenharmony_ci    EXPECT_GT(calllogIdTwo, 0);
1108115cd2caSopenharmony_ci
1109115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
1110115cd2caSopenharmony_ci    predicates.EqualTo("ids", std::to_string(calllogIdOne));
1111115cd2caSopenharmony_ci    int deleteCode = CalllogDelete(predicates);
1112115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, -1);
1113115cd2caSopenharmony_ci    std::vector<std::string> columns;
1114115cd2caSopenharmony_ci    columns.push_back("phone_number");
1115115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetOne = CalllogQuery(columns, predicates);
1116115cd2caSopenharmony_ci    int rowCountOne = 0;
1117115cd2caSopenharmony_ci    resultSetOne->GetRowCount(rowCountOne);
1118115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCountOne);
1119115cd2caSopenharmony_ci
1120115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetOne, "abnormal_calllog_delete_test_2600");
1121115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
1122115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(calllogIdTwo));
1123115cd2caSopenharmony_ci    deleteCode = calllogAbility.Delete(errorUriCalllogs, predicates2);
1124115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, -1);
1125115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetTwo = CalllogQuery(columns, predicates2);
1126115cd2caSopenharmony_ci    int rowCountTwo = 0;
1127115cd2caSopenharmony_ci    resultSetTwo->GetRowCount(rowCountTwo);
1128115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCountTwo);
1129115cd2caSopenharmony_ci    resultSetTwo->Close();
1130115cd2caSopenharmony_ci    ClearCallLog();
1131115cd2caSopenharmony_ci}
1132115cd2caSopenharmony_ci
1133115cd2caSopenharmony_ci/*
1134115cd2caSopenharmony_ci * @tc.number  abnormal_calllog_Update_test_2700
1135115cd2caSopenharmony_ci * @tc.name    When batch call record is modified, the wrong field or table name is passed in
1136115cd2caSopenharmony_ci * @tc.desc    Exception use case
1137115cd2caSopenharmony_ci * @tc.level   Level1
1138115cd2caSopenharmony_ci * @tc.size    MediumTest
1139115cd2caSopenharmony_ci * @tc.type    Function
1140115cd2caSopenharmony_ci */
1141115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, abnormal_calllog_Update_test_2700, testing::ext::TestSize.Level1)
1142115cd2caSopenharmony_ci{
1143115cd2caSopenharmony_ci    HILOG_INFO("--- abnormal_calllog_Update_test_2700 is starting! ---");
1144115cd2caSopenharmony_ci
1145115cd2caSopenharmony_ci    OHOS::Uri errorUri(CallLogUri::ERROR_URI);
1146115cd2caSopenharmony_ci    RandomNumberUtils randomNumberUtils;
1147115cd2caSopenharmony_ci    std::string phoneNumber = randomNumberUtils.Generating(10);
1148115cd2caSopenharmony_ci    int64_t calllogIdOne = CalllogInsert(phoneNumber);
1149115cd2caSopenharmony_ci    EXPECT_GT(calllogIdOne, 0);
1150115cd2caSopenharmony_ci    int64_t calllogIdTwo = CalllogInsert(phoneNumber);
1151115cd2caSopenharmony_ci    EXPECT_GT(calllogIdTwo, 0);
1152115cd2caSopenharmony_ci
1153115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateCalllogValues;
1154115cd2caSopenharmony_ci    std::string phoneNumber_test = randomNumberUtils.Generating(6);
1155115cd2caSopenharmony_ci    updateCalllogValues.Put("phone_number", phoneNumber_test);
1156115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
1157115cd2caSopenharmony_ci    predicates.EqualTo("ids", std::to_string(calllogIdOne));
1158115cd2caSopenharmony_ci    int updateCode = CalllogUpdate(updateCalllogValues, predicates);
1159115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, -1);
1160115cd2caSopenharmony_ci    std::vector<std::string> columns;
1161115cd2caSopenharmony_ci    columns.push_back("phone_number");
1162115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
1163115cd2caSopenharmony_ci    predicates2.EqualTo("phone_number", phoneNumber_test);
1164115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetOne = CalllogQuery(columns, predicates2);
1165115cd2caSopenharmony_ci    int rowCountOne = 0;
1166115cd2caSopenharmony_ci    resultSetOne->GetRowCount(rowCountOne);
1167115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCountOne);
1168115cd2caSopenharmony_ci
1169115cd2caSopenharmony_ci    resultSetOne->Close();
1170115cd2caSopenharmony_ci    updateCalllogValues.Clear();
1171115cd2caSopenharmony_ci    updateCalllogValues.Put("phone_number", phoneNumber_test);
1172115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
1173115cd2caSopenharmony_ci    predicates3.EqualTo("id", std::to_string(calllogIdTwo));
1174115cd2caSopenharmony_ci    updateCode = calllogAbility.Update(errorUri, predicates3, updateCalllogValues);
1175115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, -1);
1176115cd2caSopenharmony_ci
1177115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetTwo = CalllogQuery(columns, predicates3);
1178115cd2caSopenharmony_ci    int rowCountTwo = 0;
1179115cd2caSopenharmony_ci    resultSetTwo->GetRowCount(rowCountOne);
1180115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCountTwo);
1181115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket oldValue;
1182115cd2caSopenharmony_ci    oldValue.Put("phone_number", phoneNumber);
1183115cd2caSopenharmony_ci    CheckResultSet(oldValue, resultSetTwo, "abnormal_calllog_Update_test_2700");
1184115cd2caSopenharmony_ci    ClearCallLog();
1185115cd2caSopenharmony_ci}
1186115cd2caSopenharmony_ci
1187115cd2caSopenharmony_ci/*
1188115cd2caSopenharmony_ci * @tc.number  calllog_async_insert_test_2800
1189115cd2caSopenharmony_ci * @tc.name    Add callLog async
1190115cd2caSopenharmony_ci * @tc.desc    Ability to join or add calllog
1191115cd2caSopenharmony_ci * @tc.level   Level1
1192115cd2caSopenharmony_ci * @tc.size    MediumTest
1193115cd2caSopenharmony_ci * @tc.type    Function
1194115cd2caSopenharmony_ci */
1195115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_async_insert_test_2800, testing::ext::TestSize.Level1)
1196115cd2caSopenharmony_ci{
1197115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_async_insert_test_2800 is staring! ---");
1198115cd2caSopenharmony_ci    std::map<int, OHOS::DataShare::DataShareValuesBucket> result;
1199115cd2caSopenharmony_ci    std::vector<CallLogAsync *> callLogAsyncVector;
1200115cd2caSopenharmony_ci    int threadNum = 6;
1201115cd2caSopenharmony_ci    for (int i = 0; i < threadNum; ++i) {
1202115cd2caSopenharmony_ci        OHOS::DataShare::DataShareValuesBucket values;
1203115cd2caSopenharmony_ci        std::string name;
1204115cd2caSopenharmony_ci        name.append("asyncTest");
1205115cd2caSopenharmony_ci        name.append(std::to_string(i));
1206115cd2caSopenharmony_ci        values.Put("display_name", name);
1207115cd2caSopenharmony_ci        CallLogAsync *contactAsync = new CallLogAsync(values, result);
1208115cd2caSopenharmony_ci        std::thread asyncThread(&CallLogAsync::Insert, contactAsync);
1209115cd2caSopenharmony_ci        callLogAsyncVector.push_back(contactAsync);
1210115cd2caSopenharmony_ci        asyncThread.detach();
1211115cd2caSopenharmony_ci    }
1212115cd2caSopenharmony_ci    std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1213115cd2caSopenharmony_ci    std::this_thread::sleep_for(dura);
1214115cd2caSopenharmony_ci    std::vector<std::string> columns;
1215115cd2caSopenharmony_ci    columns.push_back("display_name");
1216115cd2caSopenharmony_ci    std::map<int, OHOS::DataShare::DataShareValuesBucket>::iterator it;
1217115cd2caSopenharmony_ci    for (it = result.begin(); it != result.end(); it++) {
1218115cd2caSopenharmony_ci        OHOS::DataShare::DataSharePredicates predicates;
1219115cd2caSopenharmony_ci        predicates.EqualTo("id", std::to_string(it->first));
1220115cd2caSopenharmony_ci        std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
1221115cd2caSopenharmony_ci        CheckResultSet(it->second, resultSet, "calllog_async_insert_test_2800");
1222115cd2caSopenharmony_ci    }
1223115cd2caSopenharmony_ci    for (int i = 0; i < threadNum; ++i) {
1224115cd2caSopenharmony_ci        delete callLogAsyncVector[i];
1225115cd2caSopenharmony_ci    }
1226115cd2caSopenharmony_ci    ClearCallLog();
1227115cd2caSopenharmony_ci}
1228115cd2caSopenharmony_ci
1229115cd2caSopenharmony_ci/*
1230115cd2caSopenharmony_ci * @tc.number  calllog_async_update_test_2900
1231115cd2caSopenharmony_ci * @tc.name    update calllog async
1232115cd2caSopenharmony_ci * @tc.desc    Ability to join or update calllog
1233115cd2caSopenharmony_ci * @tc.level   Level1
1234115cd2caSopenharmony_ci * @tc.size    MediumTest
1235115cd2caSopenharmony_ci * @tc.type    Function
1236115cd2caSopenharmony_ci */
1237115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_async_update_test_2900, testing::ext::TestSize.Level1)
1238115cd2caSopenharmony_ci{
1239115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_async_update_test_2900 is staring! ---");
1240115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket callValues;
1241115cd2caSopenharmony_ci    std::vector<int64_t> callLogId;
1242115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update1", callValues));
1243115cd2caSopenharmony_ci    callValues.Clear();
1244115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update2", callValues));
1245115cd2caSopenharmony_ci    callValues.Clear();
1246115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update3", callValues));
1247115cd2caSopenharmony_ci    callValues.Clear();
1248115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update4", callValues));
1249115cd2caSopenharmony_ci    callValues.Clear();
1250115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update5", callValues));
1251115cd2caSopenharmony_ci    callValues.Clear();
1252115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update6", callValues));
1253115cd2caSopenharmony_ci    callValues.Clear();
1254115cd2caSopenharmony_ci    std::vector<OHOS::DataShare::DataShareValuesBucket> upDateValues;
1255115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates queryPredicates;
1256115cd2caSopenharmony_ci    std::vector<CallLogAsync *> callLogAsyncVector;
1257115cd2caSopenharmony_ci    int size = callLogId.size();
1258115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1259115cd2caSopenharmony_ci        OHOS::DataShare::DataShareValuesBucket values;
1260115cd2caSopenharmony_ci        std::string name;
1261115cd2caSopenharmony_ci        name.append("asyncTest");
1262115cd2caSopenharmony_ci        values.Put("display_name", name);
1263115cd2caSopenharmony_ci        upDateValues.push_back(values);
1264115cd2caSopenharmony_ci        int id = callLogId[i];
1265115cd2caSopenharmony_ci        CallLogAsync *contactAsync = new CallLogAsync(values, id);
1266115cd2caSopenharmony_ci        callLogAsyncVector.push_back(contactAsync);
1267115cd2caSopenharmony_ci        std::thread asyncThread(&CallLogAsync::Update, contactAsync);
1268115cd2caSopenharmony_ci        asyncThread.detach();
1269115cd2caSopenharmony_ci        queryPredicates.EqualTo("id", std::to_string(callLogId[i]));
1270115cd2caSopenharmony_ci        if (i < size - 1) {
1271115cd2caSopenharmony_ci            queryPredicates.Or();
1272115cd2caSopenharmony_ci        }
1273115cd2caSopenharmony_ci    }
1274115cd2caSopenharmony_ci    std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1275115cd2caSopenharmony_ci    std::this_thread::sleep_for(dura);
1276115cd2caSopenharmony_ci    std::vector<std::string> columns;
1277115cd2caSopenharmony_ci    columns.push_back("display_name");
1278115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, queryPredicates);
1279115cd2caSopenharmony_ci    CheckResultSetList(upDateValues, resultSet, "calllog_async_update_test_2900");
1280115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1281115cd2caSopenharmony_ci        delete callLogAsyncVector[i];
1282115cd2caSopenharmony_ci    }
1283115cd2caSopenharmony_ci    ClearCallLog();
1284115cd2caSopenharmony_ci}
1285115cd2caSopenharmony_ci
1286115cd2caSopenharmony_ci/*
1287115cd2caSopenharmony_ci * @tc.number  calllog_async_query_test_3000
1288115cd2caSopenharmony_ci * @tc.name    query calllog async
1289115cd2caSopenharmony_ci * @tc.desc    Ability to join or query
1290115cd2caSopenharmony_ci * @tc.level   Level1
1291115cd2caSopenharmony_ci * @tc.size    MediumTest
1292115cd2caSopenharmony_ci * @tc.type    Function
1293115cd2caSopenharmony_ci */
1294115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_async_query_test_3000, testing::ext::TestSize.Level1)
1295115cd2caSopenharmony_ci{
1296115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_async_query_test_3000 is staring! ---");
1297115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket callLogValues;
1298115cd2caSopenharmony_ci    std::vector<int64_t> callLogId;
1299115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query1", callLogValues));
1300115cd2caSopenharmony_ci    callLogValues.Clear();
1301115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query2", callLogValues));
1302115cd2caSopenharmony_ci    callLogValues.Clear();
1303115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query3", callLogValues));
1304115cd2caSopenharmony_ci    callLogValues.Clear();
1305115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query4", callLogValues));
1306115cd2caSopenharmony_ci    callLogValues.Clear();
1307115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query5", callLogValues));
1308115cd2caSopenharmony_ci    callLogValues.Clear();
1309115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_query6", callLogValues));
1310115cd2caSopenharmony_ci    callLogValues.Clear();
1311115cd2caSopenharmony_ci    std::vector<CallLogAsync *> callLogAsyncVector;
1312115cd2caSopenharmony_ci    std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSetVector;
1313115cd2caSopenharmony_ci    int threadNum = 6;
1314115cd2caSopenharmony_ci    for (int i = 0; i < threadNum; ++i) {
1315115cd2caSopenharmony_ci        CallLogAsync *contactAsync = new CallLogAsync(resultSetVector, callLogId);
1316115cd2caSopenharmony_ci        callLogAsyncVector.push_back(contactAsync);
1317115cd2caSopenharmony_ci        std::thread asyncThread(&CallLogAsync::Query, contactAsync);
1318115cd2caSopenharmony_ci        asyncThread.detach();
1319115cd2caSopenharmony_ci    }
1320115cd2caSopenharmony_ci    int queryCount = 6;
1321115cd2caSopenharmony_ci    int size = resultSetVector.size();
1322115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1323115cd2caSopenharmony_ci        int rowCount = 0;
1324115cd2caSopenharmony_ci        resultSetVector[i]->GetRowCount(rowCount);
1325115cd2caSopenharmony_ci        EXPECT_EQ(queryCount, rowCount);
1326115cd2caSopenharmony_ci        resultSetVector[i]->Close();
1327115cd2caSopenharmony_ci    }
1328115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1329115cd2caSopenharmony_ci        delete callLogAsyncVector[i];
1330115cd2caSopenharmony_ci    }
1331115cd2caSopenharmony_ci    ClearCallLog();
1332115cd2caSopenharmony_ci}
1333115cd2caSopenharmony_ci
1334115cd2caSopenharmony_ci/*
1335115cd2caSopenharmony_ci * @tc.number  contact_async_update_test_7300
1336115cd2caSopenharmony_ci * @tc.name    delete calllog async
1337115cd2caSopenharmony_ci * @tc.desc    Ability to join or delete calllog
1338115cd2caSopenharmony_ci * @tc.level   Level1
1339115cd2caSopenharmony_ci * @tc.size    MediumTest
1340115cd2caSopenharmony_ci * @tc.type    Function
1341115cd2caSopenharmony_ci */
1342115cd2caSopenharmony_ciHWTEST_F(CalllogAbilityTest, calllog_async_delete_test_3100, testing::ext::TestSize.Level1)
1343115cd2caSopenharmony_ci{
1344115cd2caSopenharmony_ci    HILOG_INFO("--- calllog_async_delete_test_3100 is staring! ---");
1345115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket callLogValues;
1346115cd2caSopenharmony_ci    std::vector<int64_t> callLogId;
1347115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update1", callLogValues));
1348115cd2caSopenharmony_ci    callLogValues.Clear();
1349115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update2", callLogValues));
1350115cd2caSopenharmony_ci    callLogValues.Clear();
1351115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update3", callLogValues));
1352115cd2caSopenharmony_ci    callLogValues.Clear();
1353115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update4", callLogValues));
1354115cd2caSopenharmony_ci    callLogValues.Clear();
1355115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update5", callLogValues));
1356115cd2caSopenharmony_ci    callLogValues.Clear();
1357115cd2caSopenharmony_ci    callLogId.push_back(CalllogInsertValue("async_update6", callLogValues));
1358115cd2caSopenharmony_ci    callLogValues.Clear();
1359115cd2caSopenharmony_ci    int size = callLogId.size();
1360115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
1361115cd2caSopenharmony_ci    predicates.BeginWrap();
1362115cd2caSopenharmony_ci    std::vector<CallLogAsync *> callLogAsyncVector;
1363115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1364115cd2caSopenharmony_ci        int id = callLogId[i];
1365115cd2caSopenharmony_ci        CallLogAsync *contactAsync = new CallLogAsync(id);
1366115cd2caSopenharmony_ci        callLogAsyncVector.push_back(contactAsync);
1367115cd2caSopenharmony_ci        std::thread asyncThread(&CallLogAsync::Delete, contactAsync);
1368115cd2caSopenharmony_ci        asyncThread.detach();
1369115cd2caSopenharmony_ci        predicates.EqualTo("id", std::to_string(id));
1370115cd2caSopenharmony_ci        if (i < size - 1) {
1371115cd2caSopenharmony_ci            predicates.Or();
1372115cd2caSopenharmony_ci        }
1373115cd2caSopenharmony_ci    }
1374115cd2caSopenharmony_ci    predicates.EndWrap();
1375115cd2caSopenharmony_ci    std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1376115cd2caSopenharmony_ci    std::this_thread::sleep_for(dura);
1377115cd2caSopenharmony_ci    std::vector<std::string> columns;
1378115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
1379115cd2caSopenharmony_ci    int rowCount = 0;
1380115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
1381115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
1382115cd2caSopenharmony_ci    resultSet->Close();
1383115cd2caSopenharmony_ci    for (int i = 0; i < size; ++i) {
1384115cd2caSopenharmony_ci        delete callLogAsyncVector[i];
1385115cd2caSopenharmony_ci    }
1386115cd2caSopenharmony_ci    ClearCallLog();
1387115cd2caSopenharmony_ci}
1388115cd2caSopenharmony_ci} // namespace Test
1389115cd2caSopenharmony_ci} // namespace Contacts
1390