1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' 17import factory from '@ohos.data.distributedKVStore' 18import abilityFeatureAbility from '@ohos.ability.featureAbility'; 19 20var context = abilityFeatureAbility.getContext(); 21const TEST_BUNDLE_NAME = 'com.example.myapplication'; 22const TEST_STORE_ID = 'storeId'; 23var kvManager = null; 24var kvStore = null; 25var resultSet = null; 26 27describe('KvStoreResultSetTest', function () { 28 const config = { 29 bundleName: TEST_BUNDLE_NAME, 30 context: context 31 } 32 33 const options = { 34 createIfMissing: true, 35 encrypt: false, 36 backup: false, 37 autoSync: true, 38 kvStoreType: factory.KVStoreType.SINGLE_VERSION, 39 schema: '', 40 securityLevel: factory.SecurityLevel.S2, 41 } 42 43 beforeAll(async function (done) { 44 console.info('beforeAll'); 45 console.info('beforeAll config:' + JSON.stringify(config)); 46 kvManager = factory.createKVManager(config); 47 await kvManager.getAllKVStoreId(TEST_BUNDLE_NAME).then(async (data) => { 48 console.info('beforeAll getAllKVStoreId size = ' + data.length); 49 for (var i = 0; i < data.length; i++) { 50 await kvManager.deleteKVStore(TEST_BUNDLE_NAME, data[i]).then(() => { 51 console.info('beforeAll deleteKVStore success ' + data[i]); 52 }).catch((err) => { 53 console.info('beforeAll deleteKVStore store: ' + data[i]); 54 console.error('beforeAll deleteKVStore error ' + `, error code is ${err.code}, message is ${err.message}`); 55 }); 56 } 57 }).catch((err) => { 58 console.error('beforeAll getAllKVStoreId err ' + `, error code is ${err.code}, message is ${err.message}`); 59 }); 60 61 console.info('beforeAll end'); 62 done(); 63 }) 64 65 afterAll(async function (done) { 66 console.info('afterAll'); 67 kvManager = null; 68 kvStore = null; 69 done(); 70 }) 71 72 beforeEach(async function (done) { 73 console.info('beforeEach'); 74 await kvManager.getKVStore(TEST_STORE_ID, options).then((store) => { 75 kvStore = store; 76 console.info('beforeEach getKVStore success'); 77 }).catch((err) => { 78 console.error('beforeEach getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); 79 }); 80 let entries = []; 81 for (var i = 0; i < 10; i++) { 82 var key = 'batch_test_string_key'; 83 var entry = { 84 key: key + i, 85 value: { 86 type: factory.ValueType.STRING, 87 value: 'batch_test_string_value' 88 } 89 } 90 entries.push(entry); 91 } 92 await kvStore.putBatch(entries).then(async (err) => { 93 console.info('beforeEach putBatch success'); 94 }).catch((err) => { 95 console.error('beforeEach putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); 96 }); 97 await kvStore.getResultSet('batch_test_string_key').then((result) => { 98 console.info('beforeEach getResultSet success'); 99 resultSet = result; 100 }).catch((err) => { 101 console.error('beforeEach getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); 102 }); 103 console.info('beforeEach end'); 104 done(); 105 }) 106 107 afterEach(async function (done) { 108 console.info('afterEach'); 109 await kvStore.closeResultSet(resultSet).then((err) => { 110 console.info('afterEach closeResultSet success'); 111 }).catch((err) => { 112 console.error('afterEach closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); 113 }); 114 resultSet = null; 115 await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { 116 console.info('afterEach closeKVStore success'); 117 await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => { 118 console.info('afterEach deleteKVStore success'); 119 }).catch((err) => { 120 console.error('afterEach deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); 121 }); 122 }).catch((err) => { 123 console.error('afterEach closeKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); 124 }); 125 kvStore = null; 126 done(); 127 }) 128 129 /** 130 * @tc.name KvStoreResultSetGetCountSucTest 131 * @tc.desc Test Js Api KvStoreResultSet.GetCount() successfully 132 * @tc.type: FUNC 133 * @tc.require: issueNumber 134 */ 135 it('KvStoreResultSetGetCountSucTest', 0, async function (done) { 136 try { 137 var count = resultSet.getCount(); 138 expect(count == 10).assertTrue(); 139 } catch (e) { 140 console.error("KvStoreResultSetGetCountTest001 fail " + `, error code is ${e.code}, message is ${e.message}`); 141 expect(null).assertFail(); 142 } 143 done(); 144 }) 145 146 /** 147 * @tc.name KvStoreResultSetGetCountNullSetTest 148 * @tc.desc Test Js Api KvStoreResultSet.GetCount() from a null resultset 149 * @tc.type: FUNC 150 * @tc.require: issueNumber 151 */ 152 it('KvStoreResultSetGetCountNullSetTest', 0, async function (done) { 153 try { 154 var rs; 155 await kvStore.getResultSet('test').then((result) => { 156 rs = result; 157 expect(rs.getCount() == 0).assertTrue(); 158 }).catch((err) => { 159 console.error('KvStoreResultSetGetCountNullSetTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); 160 expect(null).assertFail(); 161 }); 162 await kvStore.closeResultSet(rs).then((err) => { 163 }).catch((err) => { 164 console.error('KvStoreResultSetGetCountNullSetTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); 165 expect(null).assertFail(); 166 }); 167 } catch (e) { 168 console.error('KvStoreResultSetGetCountNullSetTest e ' + `, error code is ${e.code}, message is ${e.message}`); 169 expect(null).assertFail(); 170 } 171 done(); 172 }) 173 174 /** 175 * @tc.name KvStoreResultSetGetPositionSucTest 176 * @tc.desc Test Js Api KvStoreResultSet.GetPosition() successfully 177 * @tc.type: FUNC 178 * @tc.require: issueNumber 179 */ 180 it('KvStoreResultSetGetPositionSucTest', 0, async function (done) { 181 try { 182 var position = resultSet.getPosition(); 183 console.info("KvStoreResultSetGetPositionSucTest getPosition " + position); 184 expect(position == -1).assertTrue(); 185 } catch (e) { 186 console.error("KvStoreResultSetGetPositionSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 187 expect(null).assertFail(); 188 } 189 done(); 190 }) 191 192 /** 193 * @tc.name KvStoreResultSetGetPositionMoveToLastTest 194 * @tc.desc Test Js Api KvStoreResultSet.GetPosition() after move to last 195 * @tc.type: FUNC 196 * @tc.require: issueNumber 197 */ 198 it('KvStoreResultSetGetPositionMoveToLastTest', 0, async function (done) { 199 try { 200 var position = resultSet.getPosition(); 201 console.info("KvStoreResultSetGetPositionMoveToLastTest getPosition " + position); 202 expect(position).assertEqual(-1); 203 var flag = resultSet.moveToLast(); 204 expect(flag).assertTrue(); 205 position = resultSet.getPosition(); 206 expect(position).assertEqual(9); 207 } catch (e) { 208 console.error("KvStoreResultSetGetPositionMoveToLastTest fail " + `, error code is ${e.code}, message is ${e.message}`); 209 expect(null).assertFail(); 210 } 211 done(); 212 }) 213 214 /** 215 * @tc.name KvStoreResultSetMoveToFirstSucTest 216 * @tc.desc Test Js Api KvStoreResultSet.MoveToFirst() successfully 217 * @tc.type: FUNC 218 * @tc.require: issueNumber 219 */ 220 it('KvStoreResultSetMoveToFirstSucTest', 0, async function (done) { 221 try { 222 var moved = resultSet.moveToFirst(); 223 console.info("KvStoreResultSetMoveToFirstSucTest moveToFirst " + moved); 224 expect(moved).assertTrue(); 225 var pos = resultSet.getPosition(); 226 console.info("KvStoreResultSetMoveToFirstSucTest getPosition " + pos); 227 expect(pos == 0).assertTrue(); 228 } catch (e) { 229 expect(null).assertFail(); 230 console.error("KvStoreResultSetMoveToFirstSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 231 } 232 done(); 233 }) 234 235 /** 236 * @tc.name KvStoreResultSetMoveToFirstSucTest 237 * @tc.desc Test Js Api KvStoreResultSet.MoveToFirst() success 238 * @tc.type: FUNC 239 * @tc.require: issueNumber 240 */ 241 it('KvStoreResultSetMoveToFirstSucTest', 0, async function (done) { 242 try { 243 var moved = resultSet.moveToLast(); 244 console.info("KvStoreResultSetMoveToFirstSucTest moveToFirst " + moved); 245 expect(moved && (resultSet.getPosition() == 9)).assertTrue(); 246 moved = resultSet.moveToFirst(); 247 expect(moved && (resultSet.getPosition() == 0)).assertTrue(); 248 } catch (e) { 249 console.error("KvStoreResultSetMoveToFirstSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 250 } 251 done(); 252 }) 253 254 /** 255 * @tc.name KvStoreResultSetMoveToLastSucTest 256 * @tc.desc Test Js Api KvStoreResultSet.MoveToLast() successfully 257 * @tc.type: FUNC 258 * @tc.require: issueNumber 259 */ 260 it('KvStoreResultSetMoveToLastSucTest', 0, async function (done) { 261 try { 262 var moved = resultSet.moveToLast(); 263 console.info("KvStoreResultSetMoveToLastSucTest moveToLast " + moved); 264 expect(moved && (resultSet.getPosition() == 9)).assertTrue(); 265 } catch (e) { 266 expect(null).assertFail(); 267 console.error("KvStoreResultSetMoveToLastSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 268 } 269 done(); 270 }) 271 272 /** 273 * @tc.name KvStoreResultSetMoveToNextSucTest 274 * @tc.desc Test Js Api KvStoreResultSet.MoveToNext() successfully 275 * @tc.type: FUNC 276 * @tc.require: issueNumber 277 */ 278 it('KvStoreResultSetMoveToNextSucTest', 0, async function (done) { 279 try { 280 var moved = resultSet.moveToNext(); 281 console.info("KvStoreResultSetMoveToNextSucTest moveToNext " + moved); 282 expect(moved && (resultSet.getPosition() == 0)).assertTrue(); 283 moved = resultSet.moveToNext(); 284 expect(moved && (resultSet.getPosition() == 1)).assertTrue(); 285 } catch (e) { 286 expect(null).assertFail(); 287 console.error("KvStoreResultSetMoveToNextSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 288 } 289 done(); 290 }) 291 292 /** 293 * @tc.name KvStoreResultSetMoveToPreviousSucTest 294 * @tc.desc Test Js Api KvStoreResultSet.MoveToPrevious() successfully 295 * @tc.type: FUNC 296 * @tc.require: issueNumber 297 */ 298 it('KvStoreResultSetMoveToPreviousSucTest', 0, async function (done) { 299 try { 300 var moved = resultSet.moveToFirst(); 301 expect(moved && (resultSet.getPosition() == 0)).assertTrue(); 302 moved = resultSet.moveToNext(); 303 console.info("KvStoreResultSetMoveToPreviousSucTest moveToNext " + moved); 304 expect(moved && (resultSet.getPosition() == 1)).assertTrue(); 305 moved = resultSet.moveToPrevious(); 306 console.info("KvStoreResultSetMoveToPreviousSucTest moveToPrevious " + moved); 307 expect(moved && (resultSet.getPosition() == 0)).assertTrue(); 308 } catch (e) { 309 console.error("KvStoreResultSetMoveToPreviousSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 310 expect(null).assertFail(); 311 } 312 done(); 313 }) 314 315 /** 316 * @tc.name KvStoreResultSetMoveSucTest 317 * @tc.desc Test Js Api KvStoreResultSet.Move() successfully 318 * @tc.type: FUNC 319 * @tc.require: issueNumber 320 */ 321 it('KvStoreResultSetMoveSucTest', 0, async function (done) { 322 try { 323 resultSet.moveToFirst(); 324 expect(resultSet.getPosition() == 0).assertTrue(); 325 var moved = resultSet.move(3); 326 console.info("KvStoreResultSetMoveSucTest move " + moved); 327 expect(moved).assertTrue(); 328 expect(3).assertEqual(resultSet.getPosition()); 329 } catch (e) { 330 console.error("KvStoreResultSetMoveSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 331 expect(null).assertFail(); 332 } 333 done(); 334 }) 335 336 /** 337 * @tc.name KvStoreResultSetMoveInvalidArgsTest 338 * @tc.desc Test Js Api KvStoreResultSet.Move() with invalid args 339 * @tc.type: FUNC 340 * @tc.require: issueNumber 341 */ 342 it('KvStoreResultSetMoveInvalidArgsTest', 0, async function (done) { 343 try { 344 var moved = resultSet.move(); 345 console.info("KvStoreResultSetMoveInvalidArgsTest move " + moved); 346 expect(null).assertFail(); 347 } catch (e) { 348 console.error("KvStoreResultSetMoveInvalidArgsTest fail " + `, error code is ${e.code}, message is ${e.message}`); 349 expect(e.code == 401).assertTrue(); 350 } 351 done(); 352 }) 353 354 /** 355 * @tc.name KvStoreResultSetMoveToPositionWithoutArgsTest 356 * @tc.desc Test Js Api KvStoreResultSet.MoveToPosition() without args 357 * @tc.type: FUNC 358 * @tc.require: issueNumber 359 */ 360 it('KvStoreResultSetMoveToPositionWithoutArgsTest', 0, async function (done) { 361 try { 362 var moved = resultSet.moveToPosition(); 363 console.info("KvStoreResultSetMoveToPositionWithoutArgsTest moveToPosition " + moved); 364 expect(null).assertFail(); 365 } catch (e) { 366 console.error("KvStoreResultSetMoveToPositionWithoutArgsTest fail " + `, error code is ${e.code}, message is ${e.message}`); 367 expect(e.code == 401).assertTrue(); 368 } 369 done(); 370 }) 371 372 /** 373 * @tc.name KvStoreResultSetMoveToPositionSucTest 374 * @tc.desc Test Js Api KvStoreResultSet.MoveToPosition() successfully 375 * @tc.type: FUNC 376 * @tc.require: issueNumber 377 */ 378 it('KvStoreResultSetMoveToPositionSucTest', 0, async function (done) { 379 try { 380 var moved = resultSet.moveToPosition(5); 381 console.info("KvStoreResultSetMoveToPositionSucTest moveToPosition " + moved); 382 expect(moved && (resultSet.getPosition() == 5)).assertTrue(); 383 } catch (e) { 384 console.error("KvStoreResultSetMoveToPositionSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 385 expect(null).assertFail(); 386 } 387 done(); 388 }) 389 390 /** 391 * @tc.name KvStoreResultSetIsFirstSucTest 392 * @tc.desc Test Js Api KvStoreResultSet.IsFirst() successfully 393 * @tc.type: FUNC 394 * @tc.require: issueNumber 395 */ 396 it('KvStoreResultSetIsFirstSucTest', 0, async function (done) { 397 try { 398 var flag = resultSet.isFirst(); 399 console.info("KvStoreResultSetIsFirstSucTest isFirst " + flag); 400 expect(!flag).assertTrue(); 401 } catch (e) { 402 expect(null).assertFail(); 403 console.error("KvStoreResultSetIsFirstSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 404 } 405 done(); 406 }) 407 408 /** 409 * @tc.name KvStoreResultSetIsFirstAfterMoveTest 410 * @tc.desc Test Js Api KvStoreResultSet.IsFirst() after move 411 * @tc.type: FUNC 412 * @tc.require: issueNumber 413 */ 414 it('KvStoreResultSetIsFirstAfterMoveTest', 0, async function (done) { 415 try { 416 var flag = resultSet.isFirst(); 417 console.info("KvStoreResultSetIsFirstAfterMoveTest isFirst " + flag); 418 expect(!flag).assertTrue(); 419 resultSet.move(3); 420 flag = resultSet.isFirst(); 421 console.info("KvStoreResultSetIsFirstAfterMoveTest isFirst " + flag); 422 expect(!flag).assertTrue(); 423 } catch (e) { 424 expect(null).assertFail(); 425 console.error("KvStoreResultSetIsFirstAfterMoveTest fail " + `, error code is ${e.code}, message is ${e.message}`); 426 } 427 done(); 428 }) 429 430 /** 431 * @tc.name KvStoreResultSetIsLastFailTest 432 * @tc.desc Test Js Api KvStoreResultSet.IsLast() fail 433 * @tc.type: FUNC 434 * @tc.require: issueNumber 435 */ 436 it('KvStoreResultSetIsLastFailTest', 0, async function (done) { 437 try { 438 var flag = resultSet.isLast(); 439 console.info("KvStoreResultSetIsLastFailTest isLast " + flag); 440 expect(!flag).assertTrue(); 441 } catch (e) { 442 expect(null).assertFail(); 443 console.error("KvStoreResultSetIsLastFailTest fail " + `, error code is ${e.code}, message is ${e.message}`); 444 } 445 done(); 446 }) 447 448 /** 449 * @tc.name KvStoreResultSetIsLastSucTest 450 * @tc.desc Test Js Api KvStoreResultSet.IsLast() successfully 451 * @tc.type: FUNC 452 * @tc.require: issueNumber 453 */ 454 it('KvStoreResultSetIsLastSucTest', 0, async function (done) { 455 try { 456 resultSet.moveToLast(); 457 var flag = resultSet.isLast(); 458 console.info("KvStoreResultSetIsLastSucTest isLast " + flag); 459 expect(flag).assertTrue(); 460 } catch (e) { 461 expect(null).assertFail(); 462 console.error("KvStoreResultSetIsLastSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 463 } 464 done(); 465 }) 466 467 /** 468 * @tc.name KvStoreResultSetIsBeforeFirstSucTest 469 * @tc.desc Test Js Api KvStoreResultSet.IsBeforeFirst() successfully 470 * @tc.type: FUNC 471 * @tc.require: issueNumber 472 */ 473 it('KvStoreResultSetIsBeforeFirstSucTest', 0, async function (done) { 474 try { 475 var flag = resultSet.isBeforeFirst(); 476 console.info("KvStoreResultSetIsBeforeFirstSucTest isBeforeFirst " + flag); 477 expect(flag).assertTrue(); 478 } catch (e) { 479 expect(null).assertFail(); 480 console.error("KvStoreResultSetIsBeforeFirstSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 481 } 482 done(); 483 }) 484 485 /** 486 * @tc.name KvStoreResultSetIsAfterLastSucTest 487 * @tc.desc Test Js Api KvStoreResultSet.IsAfterLast() success 488 * @tc.type: FUNC 489 * @tc.require: issueNumber 490 */ 491 it('KvStoreResultSetIsAfterLastSucTest', 0, async function (done) { 492 try { 493 var moved = resultSet.moveToLast(); 494 console.info("KvStoreResultSetIsAfterLastSucTest moveToLast moved=" + moved); 495 expect(moved).assertTrue(); 496 moved = resultSet.moveToNext(); 497 console.info("KvStoreResultSetIsAfterLastSucTest moveToNext moved=" + moved); 498 expect(moved == false).assertTrue(); 499 var flag = resultSet.isAfterLast(); 500 console.info("KvStoreResultSetIsAfterLastSucTest isAfterLast true=" + flag); 501 expect(flag).assertTrue(); 502 } catch (e) { 503 console.error("KvStoreResultSetIsAfterLastSucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 504 expect(null).assertFail(); 505 } 506 done(); 507 }) 508 509 /** 510 * @tc.name KvStoreResultSetGetEntrySucTest 511 * @tc.desc Test Js Api KvStoreResultSet.GetEntry() successfully 512 * @tc.type: FUNC 513 * @tc.require: issueNumber 514 */ 515 it('KvStoreResultSetGetEntrySucTest', 0, async function (done) { 516 try { 517 var moved = resultSet.moveToNext(); 518 var entry = resultSet.getEntry(); 519 console.info("KvStoreResultSetGetEntrySucTest getEntry " + entry); 520 expect(entry.key == 'batch_test_string_key0').assertTrue(); 521 expect(entry.value.value == 'batch_test_string_value').assertTrue(); 522 moved = resultSet.moveToNext(); 523 expect(moved).assertTrue(); 524 entry = resultSet.getEntry(); 525 console.info("KvStoreResultSetGetEntrySucTest getEntry " + entry); 526 expect(entry.key == 'batch_test_string_key1').assertTrue(); 527 expect(entry.value.value == 'batch_test_string_value').assertTrue(); 528 } catch (e) { 529 expect(null).assertFail(); 530 console.error("KvStoreResultSetGetEntrySucTest fail " + `, error code is ${e.code}, message is ${e.message}`); 531 } 532 done(); 533 }) 534}) 535