1/* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "calllogfuzzyquery_test.h" 17 18#include "random_number_utils.h" 19#include "test_common.h" 20 21namespace Contacts { 22namespace Test { 23CalllogFuzzyQueryTest::CalllogFuzzyQueryTest() 24{ 25} 26 27CalllogFuzzyQueryTest::~CalllogFuzzyQueryTest() 28{ 29} 30 31int CalllogFuzzyQueryTest::CalllogDelete(OHOS::DataShare::DataSharePredicates predicates) 32{ 33 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG); 34 int code = calllogAbility.Delete(uriCalllog, predicates); 35 return code; 36} 37 38std::shared_ptr<OHOS::DataShare::DataShareResultSet> CalllogFuzzyQueryTest::CalllogQuery( 39 std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates) 40{ 41 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG); 42 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = 43 calllogAbility.Query(uriCalllog, predicates, columns); 44 return resultSet; 45} 46 47int64_t CalllogFuzzyQueryTest::CalllogInsertValues(OHOS::DataShare::DataShareValuesBucket &values) 48{ 49 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG); 50 int64_t code = calllogAbility.Insert(uriCalllog, values); 51 return code; 52} 53 54void CalllogFuzzyQueryTest::ClearCallLog() 55{ 56 // clear all callLog data 57 OHOS::DataShare::DataSharePredicates predicates; 58 predicates.GreaterThan("id", "0"); 59 int deleteCode = CalllogDelete(predicates); 60 EXPECT_EQ(deleteCode, 0); 61} 62 63/** 64 * @tc.number calllog_Query_test_100 65 * @tc.name Fuzzy query according to the beginning of mobile phone number 66 * @tc.desc Query call records of mobile phone numbers that start with 123 67 * @tc.level Level1 68 * @tc.size MediumTest 69 * @tc.type Function 70 */ 71HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_100, testing::ext::TestSize.Level1) 72{ 73 HILOG_INFO("----calllog_Query_test_100 is starting!----"); 74 OHOS::DataShare::DataShareValuesBucket valuesBucket; 75 OHOS::Contacts::RandomNumberUtils randomNumberUtils; 76 std::string phoneNumber = randomNumberUtils.Generating(9); 77 valuesBucket.Put("phone_number", phoneNumber); 78 int rawId = CalllogInsertValues(valuesBucket); 79 EXPECT_GT(rawId, 0); 80 81 valuesBucket.Put("id", rawId); 82 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo; 83 std::string phoneNumber_test = randomNumberUtils.Generating(10); 84 valuesBucketTwo.Put("phone_number", phoneNumber_test); 85 rawId = CalllogInsertValues(valuesBucketTwo); 86 valuesBucketTwo.Put("id", rawId); 87 EXPECT_GT(rawId, 0); 88 89 std::vector<std::string> columns; 90 columns.push_back("id"); 91 columns.push_back("phone_number"); 92 OHOS::DataShare::DataSharePredicates predicates; 93 predicates.Like("phone_number", "123%"); 94 predicates.OrderByAsc("id"); 95 std::vector<OHOS::DataShare::DataShareValuesBucket> valuesBucketVector; 96 valuesBucketVector.push_back(valuesBucket); 97 valuesBucketVector.push_back(valuesBucketTwo); 98 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates); 99 // resultSet count 1 100 int rowCount = 0; 101 resultSet->GetRowCount(rowCount); 102 int currentCount = 1; 103 EXPECT_EQ(currentCount, rowCount); 104 CheckResultSetList(valuesBucketVector, resultSet, "calllog_Query_test_100"); 105 resultSet->Close(); 106 ClearCallLog(); 107} 108 109/** 110 * @tc.number calllog_Query_test_200 111 * @tc.name Fuzzy query according to the end of mobile phone number 112 * @tc.desc Query call records with mobile phone number ending in 0 113 * @tc.level Level1 114 * @tc.size MediumTest 115 * @tc.type Function 116 */ 117HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_200, testing::ext::TestSize.Level1) 118{ 119 HILOG_INFO("----calllog_Query_test_200 is starting!----"); 120 OHOS::DataShare::DataShareValuesBucket valuesBucket; 121 OHOS::Contacts::RandomNumberUtils randomNumberUtils; 122 std::string phoneNumber = randomNumberUtils.Generating(11); 123 valuesBucket.Put("phone_number", phoneNumber); 124 int rawId = CalllogInsertValues(valuesBucket); 125 EXPECT_GT(rawId, 0); 126 valuesBucket.Put("id", rawId); 127 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo; 128 valuesBucketTwo.Put("phone_number", phoneNumber); 129 rawId = CalllogInsertValues(valuesBucketTwo); 130 valuesBucketTwo.Put("id", rawId); 131 EXPECT_GT(rawId, 0); 132 std::vector<std::string> columns; 133 columns.push_back("id"); 134 columns.push_back("phone_number"); 135 OHOS::DataShare::DataSharePredicates predicates; 136 predicates.Like("phone_number", "%750"); 137 predicates.OrderByAsc("id"); 138 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates); 139 // resultSet count 1 140 int rowCount = 0; 141 resultSet->GetRowCount(rowCount); 142 int currentCount = 1; 143 EXPECT_EQ(currentCount, rowCount); 144 CheckResultSet(valuesBucket, resultSet, "calllog_Query_test_200"); 145 resultSet->Close(); 146 ClearCallLog(); 147} 148 149/** 150 * @tc.number calllog_Query_test_300 151 * @tc.name Fuzzy query according to the middle digits of the mobile phone number 152 * @tc.desc Query the call history of the mobile phone number starting with 123 and ending with 8910 153 * @tc.level Level1 154 * @tc.size MediumTest 155 * @tc.type Function 156 */ 157HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_300, testing::ext::TestSize.Level1) 158{ 159 HILOG_INFO("----calllog_Query_test_300 is starting!----"); 160 OHOS::DataShare::DataShareValuesBucket valuesBucket; 161 OHOS::Contacts::RandomNumberUtils randomNumberUtils; 162 std::string phoneNumber = randomNumberUtils.Generating(11); 163 valuesBucket.Put("phone_number", phoneNumber); 164 int rawId = CalllogInsertValues(valuesBucket); 165 EXPECT_GT(rawId, 0); 166 valuesBucket.Put("id", rawId); 167 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo; 168 valuesBucketTwo.Put("phone_number", phoneNumber); 169 rawId = CalllogInsertValues(valuesBucketTwo); 170 valuesBucketTwo.Put("id", rawId); 171 EXPECT_GT(rawId, 0); 172 std::vector<std::string> columns; 173 columns.push_back("id"); 174 columns.push_back("phone_number"); 175 OHOS::DataShare::DataSharePredicates predicates; 176 std::string phoneNumber_test = randomNumberUtils.Generating(17); 177 predicates.Like("phone_number", phoneNumber_test); 178 predicates.OrderByAsc("id"); 179 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates); 180 // resultSet count 0 181 int rowCount = 0; 182 resultSet->GetRowCount(rowCount); 183 EXPECT_EQ(0, rowCount); 184 resultSet->Close(); 185 ClearCallLog(); 186} 187 188/** 189 * @tc.number calllog_Query_test_400 190 * @tc.name Fuzzy query according to the fields contained in the mobile phone number 191 * @tc.desc Query the call history of the mobile phone number starting with 123 192 * @tc.level Level1 193 * @tc.size MediumTest 194 * @tc.type Function 195 */ 196HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_400, testing::ext::TestSize.Level1) 197{ 198 HILOG_INFO("----calllog_Query_test_400 is starting!----"); 199 OHOS::DataShare::DataShareValuesBucket valuesBucket; 200 OHOS::Contacts::RandomNumberUtils randomNumberUtils; 201 std::string phoneNumber = randomNumberUtils.Generating(11); 202 valuesBucket.Put("phone_number", phoneNumber); 203 int rawId = CalllogInsertValues(valuesBucket); 204 EXPECT_GT(rawId, 0); 205 valuesBucket.Put("id", rawId); 206 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo; 207 valuesBucketTwo.Put("phone_number", phoneNumber); 208 rawId = CalllogInsertValues(valuesBucketTwo); 209 valuesBucketTwo.Put("id", rawId); 210 EXPECT_GT(rawId, 0); 211 std::vector<std::string> columns; 212 columns.push_back("id"); 213 columns.push_back("phone_number"); 214 OHOS::DataShare::DataSharePredicates predicates; 215 predicates.Like("phone_number", "%37845%"); 216 predicates.OrderByAsc("id"); 217 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates); 218 // resultSet count 0 219 int rowCount = 0; 220 resultSet->GetRowCount(rowCount); 221 EXPECT_EQ(1, rowCount); 222 CheckResultSet(valuesBucketTwo, resultSet, "calllog_Query_test_400"); 223 resultSet->Close(); 224 ClearCallLog(); 225} 226 227/** 228 * @tc.number abnormal_calllog_Query_test_500 229 * @tc.name An error field is passed in during fuzzy query based on mobile phone number 230 * @tc.desc Query the call history of the mobile phone number starting with 123 and ending with 8910 231 * @tc.level Level1 232 * @tc.size MediumTest 233 * @tc.type Function 234 */ 235HWTEST_F(CalllogFuzzyQueryTest, abnormal_calllog_Query_test_500, testing::ext::TestSize.Level1) 236{ 237 HILOG_INFO("----abnormal_calllog_Query_test_500 is starting!----"); 238 OHOS::DataShare::DataShareValuesBucket valuesBucket; 239 OHOS::Contacts::RandomNumberUtils randomNumberUtils; 240 std::string phoneNumber = randomNumberUtils.Generating(11); 241 valuesBucket.Put("phone_number", phoneNumber); 242 int rawId = CalllogInsertValues(valuesBucket); 243 EXPECT_GT(rawId, 0); 244 245 valuesBucket.Put("id", rawId); 246 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo; 247 valuesBucketTwo.Put("phone_number", phoneNumber); 248 rawId = CalllogInsertValues(valuesBucketTwo); 249 valuesBucketTwo.Put("id", rawId); 250 EXPECT_GT(rawId, 0); 251 252 std::vector<std::string> columns; 253 columns.push_back("id"); 254 columns.push_back("phone_number"); 255 std::string phoneNumber_test = randomNumberUtils.Generating(17); 256 OHOS::DataShare::DataSharePredicates predicates; 257 predicates.Like("phone_numbers", phoneNumber_test); 258 predicates.OrderByAsc("id"); 259 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates); 260 int rowCount = 0; 261 resultSet->GetRowCount(rowCount); 262 EXPECT_EQ(-1, rowCount); 263 resultSet->Close(); 264 ClearCallLog(); 265} 266} // namespace Test 267} // namespace Contacts