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