1/* 2* Copyright (c) 2022-2023 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*/ 15import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium' 16import dataPreferences from '@ohos.data.preferences' 17import featureAbility from '@ohos.ability.featureAbility'; 18 19const NAME = 'test_preferences'; 20const KEY_TEST_INT_ELEMENT = 'key_test_int'; 21const KEY_TEST_LONG_ELEMENT = 'key_test_long'; 22const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; 23const KEY_TEST_BOOLEAN_ELEMENT = 'key_test_boolean'; 24const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 25const KEY_TEST_NUMBER_ARRAY_ELEMENT = 'key_test_number_array'; 26const KEY_TEST_STRING_ARRAY_ELEMENT = 'key_test_string_array'; 27const KEY_TEST_BOOL_ARRAY_ELEMENT = 'key_test_bool_array'; 28var mPreferences; 29var context; 30 31const TAG = '[PREFERENCES_CALLBACK_JSUNIT_TEST]' 32export default function preferencesCallBackTest(){ 33 describe('preferencesCallBackTest', function () { 34 beforeAll(async function () { 35 console.info('beforeAll') 36 context = featureAbility.getContext() 37 }) 38 39 afterAll(async function () { 40 console.info('afterAll') 41 }) 42 43 beforeEach(async function () { 44 console.info('beforeEach') 45 mPreferences = await dataPreferences.getPreferences(context, NAME); 46 }) 47 48 afterEach(async function () { 49 console.info('afterEach') 50 await dataPreferences.deletePreferences(context, NAME); 51 }) 52 53 /** 54 * @tc.name clear callback interface test 55 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2200 56 * @tc.desc clear callback interface test 57 * @tc.size MediumTest 58 * @tc.type Function 59 * @tc.level Level 2 60 * 61 */ 62 it('testPreferencesClear0012', 0, async function (done) { 63 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 64 await mPreferences.flush(); 65 await mPreferences.clear(async function (err, ret) { 66 let pre = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue") 67 expect("defaultvalue").assertEqual(pre); 68 done(); 69 }); 70 }) 71 72 /** 73 * @tc.name has string callback interface test 74 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1200 75 * @tc.desc has string callback interface test 76 * @tc.size MediumTest 77 * @tc.type Function 78 * @tc.level Level 2 79 */ 80 it('testPreferencesHasKey0032', 0, async function (done) { 81 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 82 await mPreferences.has(KEY_TEST_STRING_ELEMENT, function (err, ret) { 83 expect(true).assertEqual(ret); 84 done(); 85 }) 86 }) 87 88 /** 89 * @tc.name has int callback interface test 90 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1600 91 * @tc.desc has int callback interface test 92 * @tc.size MediumTest 93 * @tc.type Function 94 * @tc.level Level 2 95 */ 96 it('testPreferencesHasKey0033', 0, async function (done) { 97 await mPreferences.put(KEY_TEST_INT_ELEMENT, 1); 98 await mPreferences.has(KEY_TEST_INT_ELEMENT, function (err, ret) { 99 expect(true).assertEqual(ret); 100 done(); 101 }) 102 }) 103 104 /** 105 * @tc.name has float callback interface test 106 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1500 107 * @tc.desc has float callback interface test 108 * @tc.size MediumTest 109 * @tc.type Function 110 * @tc.level Level 2 111 */ 112 it('testPreferencesHasKey0034', 0, async function (done) { 113 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 1.1); 114 await mPreferences.has(KEY_TEST_FLOAT_ELEMENT, function (err, ret) { 115 expect(true).assertEqual(ret); 116 done(); 117 }) 118 }) 119 120 /** 121 * @tc.name has long callback interface test 122 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1700 123 * @tc.desc has long callback interface test 124 * @tc.size MediumTest 125 * @tc.type Function 126 * @tc.level Level 2 127 */ 128 it('testPreferencesHasKey0035', 0, async function (done) { 129 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 0); 130 await mPreferences.has(KEY_TEST_LONG_ELEMENT, function (err, ret) { 131 expect(true).assertEqual(ret); 132 done(); 133 }) 134 }) 135 136 /** 137 * @tc.name has boolean callback interface test 138 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1400 139 * @tc.desc has boolean callback interface test 140 * @tc.size MediumTest 141 * @tc.type Function 142 * @tc.level Level 2 143 */ 144 it('testPreferencesHasKey0036', 0, async function (done) { 145 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, false); 146 await mPreferences.has(KEY_TEST_BOOLEAN_ELEMENT, function (err, ret) { 147 expect(true).assertEqual(ret); 148 done(); 149 }) 150 }) 151 152 /** 153 * @tc.name get defaultValue callback interface test 154 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2100 155 * @tc.desc get defaultValue callback interface test 156 * @tc.size MediumTest 157 * @tc.type Function 158 * @tc.level Level 2 159 */ 160 it('testPreferencesGetDefValue0062', 0, async function (done) { 161 await mPreferences.clear(); 162 await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultValue", function (err, ret) { 163 expect('defaultValue').assertEqual(ret); 164 done(); 165 }) 166 }) 167 168 /** 169 * @tc.name get float callback interface test 170 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1800 171 * @tc.desc get float callback interface test 172 * @tc.size MediumTest 173 * @tc.type Function 174 * @tc.level Level 2 175 */ 176 it('testPreferencesGetFloat0072', 0, async function (done) { 177 await mPreferences.clear(); 178 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 3.0); 179 await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0, function (err, ret) { 180 expect(3.0).assertEqual(ret); 181 done(); 182 }) 183 }) 184 185 /** 186 * @tc.name get int callback interface test 187 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1900 188 * @tc.desc get int callback interface test 189 * @tc.size MediumTest 190 * @tc.type Function 191 * @tc.level Level 2 192 */ 193 it('testPreferencesGetInt0082', 0, async function (done) { 194 await mPreferences.clear(); 195 await mPreferences.put(KEY_TEST_INT_ELEMENT, 3); 196 await mPreferences.get(KEY_TEST_INT_ELEMENT, 0.0, function (err, ret) { 197 expect(3).assertEqual(ret); 198 done(); 199 }) 200 }) 201 202 /** 203 * @tc.name get long callback interface test 204 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1100 205 * @tc.desc get long callback interface test 206 * @tc.size MediumTest 207 * @tc.type Function 208 * @tc.level Level 2 209 */ 210 it('testPreferencesGetLong0092', 0, async function (done) { 211 await mPreferences.clear(); 212 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 3); 213 let pref = await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0) 214 expect(3).assertEqual(pref); 215 await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0, function (err, ret) { 216 expect(3).assertEqual(ret); 217 done(); 218 }); 219 }) 220 221 /** 222 * @tc.name get String callback interface test 223 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2000 224 * @tc.desc get String callback interface test 225 * @tc.size MediumTest 226 * @tc.type Function 227 * @tc.level Level 2 228 */ 229 it('testPreferencesGetString102', 0, async function (done) { 230 await mPreferences.clear(); 231 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 232 await mPreferences.flush(); 233 await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, ret) { 234 expect('test').assertEqual(ret); 235 done(); 236 }); 237 }) 238 239 /** 240 * @tc.name put boolean callback interface test 241 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0300 242 * @tc.desc put boolean callback interface test 243 * @tc.size MediumTest 244 * @tc.type Function 245 * @tc.level Level 2 246 */ 247 it('testPreferencesPutBoolean0122', 0, async function (done) { 248 await mPreferences.clear(); 249 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, true, async function (err, ret) { 250 let pre = await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, false); 251 expect(true).assertEqual(pre); 252 await mPreferences.flush(); 253 let pre2 = await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, false) 254 expect(true).assertEqual(pre2); 255 done(); 256 }); 257 }) 258 259 /** 260 * @tc.name put float callback interface test 261 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0400 262 * @tc.desc put float callback interface test 263 * @tc.size MediumTest 264 * @tc.type Function 265 * @tc.level Level 2 266 */ 267 it('testPreferencesPutFloat0132', 0, async function (done) { 268 await mPreferences.clear(); 269 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 4.0, async function (err, ret) { 270 let pre = await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0); 271 expect(4.0).assertEqual(pre); 272 await mPreferences.flush(); 273 let pre2 = await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0); 274 expect(4.0).assertEqual(pre2); 275 done(); 276 }); 277 }) 278 279 /** 280 * @tc.name put int callback interface test 281 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0500 282 * @tc.desc put int callback interface test 283 * @tc.size MediumTest 284 * @tc.type Function 285 * @tc.level Level 2 286 */ 287 it('testPreferencesPutInt0142', 0, async function (done) { 288 await mPreferences.clear(); 289 await mPreferences.put(KEY_TEST_INT_ELEMENT, 4, async function (err, ret) { 290 let pre = await mPreferences.get(KEY_TEST_INT_ELEMENT, 0); 291 expect(4).assertEqual(pre); 292 await mPreferences.flush(); 293 let pre2 = await mPreferences.get(KEY_TEST_INT_ELEMENT, 0); 294 expect(4).assertEqual(pre2); 295 done(); 296 }); 297 }) 298 299 /** 300 * @tc.name put long callback interface test 301 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1000 302 * @tc.desc put long callback interface test 303 * @tc.size MediumTest 304 * @tc.type Function 305 * @tc.level Level 2 306 */ 307 it('testPreferencesPutLong0152', 0, async function (done) { 308 await mPreferences.clear(); 309 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 4); 310 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 4, async function (err, ret) { 311 let pre = await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0); 312 expect(4).assertEqual(pre); 313 await mPreferences.flush(); 314 let pre2 = await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0); 315 expect(4).assertEqual(pre2); 316 done(); 317 }); 318 }) 319 320 /** 321 * @tc.name put String callback interface test 322 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0900 323 * @tc.desc put String callback interface test 324 * @tc.size MediumTest 325 * @tc.type Function 326 * @tc.level Level 2 327 */ 328 it('testPreferencesPutString0162', 0, async function (done) { 329 await mPreferences.clear(); 330 await mPreferences.put(KEY_TEST_STRING_ELEMENT, '', async function (err, ret) { 331 let pre = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue") 332 expect('').assertEqual(pre); 333 await mPreferences.flush(); 334 let pre2 = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue") 335 expect('').assertEqual(pre2); 336 done(); 337 }); 338 }) 339 340 /** 341 * @tc.name clear put get flush String callback interface test 342 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2500 343 * @tc.desc flush String callback interface test 344 * @tc.size MediumTest 345 * @tc.type Function 346 * @tc.level Level 2 347 */ 348 it('testPreferencesCallback0172', 0, function (done) { 349 console.log(TAG + "testPreferencesCallback0172 begin."); 350 mPreferences.clear(function (err, val) { 351 if(err){ 352 expect(null).assertEqual(); 353 } 354 mPreferences.put(KEY_TEST_STRING_ELEMENT, '', function (err, ret) { 355 if(err){ 356 expect(null).assertEqual(); 357 } 358 mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre) { 359 if(err){ 360 expect(null).assertEqual(); 361 } 362 expect('').assertEqual(pre); 363 mPreferences.flush(function (err, val) { 364 if(err){ 365 expect(null).assertEqual(); 366 } 367 mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre2) { 368 if(err){ 369 expect(null).assertEqual(); 370 } 371 expect('').assertEqual(pre2); 372 done(); 373 console.log(TAG + "testPreferencesCallback0172 end."); 374 }) 375 }); 376 }) 377 }); 378 }); 379 }) 380 381 /** 382 * @tc.name put StringArray callback interface test 383 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0800 384 * @tc.desc put String callback interface test 385 * @tc.size MediumTest 386 * @tc.type Function 387 * @tc.level Level 2 388 */ 389 it('testPreferencesPutStringArray0001', 0, async function (done) { 390 await mPreferences.clear(); 391 var stringArr = ['11', '22', '33'] 392 await mPreferences.put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArr, async function (err, ret) { 393 let pre = await mPreferences.get(KEY_TEST_STRING_ARRAY_ELEMENT, ['123', '321']) 394 for (let i = 0; i < stringArr.length; i++) { 395 expect(stringArr[i]).assertEqual(pre[i]); 396 } 397 398 done(); 399 }); 400 }) 401 402 /** 403 * @tc.name put NumberArray callback interface test 404 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0700 405 * @tc.desc put String callback interface test 406 * @tc.size MediumTest 407 * @tc.type Function 408 * @tc.level Level 2 409 */ 410 it('testPreferencesPutNumArray0001', 0, async function (done) { 411 await mPreferences.clear(); 412 var doubleArr = [11, 22, 33] 413 await mPreferences.put(KEY_TEST_NUMBER_ARRAY_ELEMENT, doubleArr, async function (err, ret) { 414 let pre = await mPreferences.get(KEY_TEST_NUMBER_ARRAY_ELEMENT, [123, 321]) 415 for (let i = 0; i < doubleArr.length; i++) { 416 expect(doubleArr[i]).assertEqual(pre[i]); 417 } 418 419 done(); 420 }); 421 }) 422 423 /** 424 * @tc.name put BoolArray callback interface test 425 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0600 426 * @tc.desc put String callback interface test 427 * @tc.size MediumTest 428 * @tc.type Function 429 * @tc.level Level 2 430 */ 431 it('testPreferencesPutBoolArray0001', 0, async function (done) { 432 await mPreferences.clear(); 433 let boolArr = [true, false, false, true] 434 await mPreferences.put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArr, async function (err, ret) { 435 let pre = await mPreferences.get(KEY_TEST_BOOL_ARRAY_ELEMENT, [true, false]) 436 for (let i = 0; i < boolArr.length; i++) { 437 expect(boolArr[i]).assertEqual(pre[i]); 438 } 439 440 done(); 441 }); 442 }) 443 444 /** 445 * @tc.name getAll callback interface test 446 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2400 447 * @tc.desc getAll callback interface test 448 * @tc.size MediumTest 449 * @tc.type Function 450 * @tc.level Level 2 451 */ 452 it('testPreferencesGetAll0001', 0, async function (done) { 453 await mPreferences.clear(); 454 let doubleArr = [11, 22, 33] 455 let stringArr = ['11', '22', '33'] 456 let boolArr = [true, false, false, true] 457 await mPreferences.put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArr) 458 await mPreferences.put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArr) 459 await mPreferences.put(KEY_TEST_NUMBER_ARRAY_ELEMENT, doubleArr) 460 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, false) 461 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "123") 462 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 123.1) 463 464 await mPreferences.flush() 465 466 await mPreferences.getAll(function (err, obj) { 467 expect(false).assertEqual(obj.key_test_boolean) 468 expect("123").assertEqual(obj.key_test_string) 469 expect(123.1).assertEqual(obj.key_test_float) 470 let sArr = obj.key_test_string_array 471 for (let i = 0; i < sArr.length; i++) { 472 expect(sArr[i]).assertEqual(stringArr[i]); 473 } 474 475 let bArr = obj.key_test_bool_array 476 for (let i = 0; i < bArr.length; i++) { 477 expect(bArr[i]).assertEqual(boolArr[i]); 478 } 479 480 let nArr = obj.key_test_number_array 481 for (let i = 0; i < nArr.length; i++) { 482 expect(nArr[i]).assertEqual(doubleArr[i]); 483 } 484 485 done() 486 }) 487 }) 488 489 /** 490 * @tc.name getPreferences callback interface test 491 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_2300 492 * @tc.desc getPreferences callback interface test 493 * @tc.size MediumTest 494 * @tc.type Function 495 * @tc.level Level 2 496 */ 497 it('testPreferencesGetPreferences0001', 0, async function (done) { 498 const NAME = 'getPreferencesTest' 499 await dataPreferences.getPreferences(context, NAME, (err, preferences) => { 500 if(err != null){ 501 console.info(TAG + "Get preferences err: " + err) 502 expect(false).assertTrue(); 503 }else{ 504 console.info(TAG + "Get preferences success") 505 expect(preferences != null).assertTrue(); 506 } 507 }) 508 done() 509 }) 510 511 /** 512 * @tc.name deletePreferences callback interface test 513 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0200 514 * @tc.desc deletePreferences callback interface test 515 * @tc.size MediumTest 516 * @tc.type Function 517 * @tc.level Level 2 518 */ 519 it('testPreferencesDeletePreferences0001', 0, async function (done) { 520 const NAME = 'getPreferencesTest' 521 await dataPreferences.getPreferences(context, NAME, (err, preferences) => { 522 if(err != null){ 523 console.info(TAG + "Get preferences err: " + err) 524 expect(false).assertTrue(); 525 }else{ 526 console.info(TAG + "Get preferences success") 527 expect(preferences != null).assertTrue(); 528 } 529 }) 530 await dataPreferences.deletePreferences(context, NAME, (err, data) => { 531 if(err != null){ 532 console.info(TAG + "Delete preferences err: " + err) 533 expect(false).assertTrue(); 534 }else{ 535 console.info(TAG + "Delete preferences success") 536 expect(data == null).assertTrue(); 537 } 538 }) 539 done() 540 }) 541 542 /** 543 * @tc.name removePreferencesFromCache interface test 544 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_0100 545 * @tc.desc removePreferencesFromCache interface test 546 * @tc.size MediumTest 547 * @tc.type Function 548 * @tc.level Level 2 549 */ 550 it('testRemovePreferencesFromCache0001', 0, async function (done) { 551 await dataPreferences.getPreferences(context, NAME, (err, preferences) => { 552 if(err != null){ 553 console.info(TAG + "Get preferences err: " + err) 554 expect(false).assertTrue(); 555 }else{ 556 console.info(TAG + "Get preferences success") 557 expect(preferences != null).assertTrue(); 558 } 559 }) 560 await dataPreferences.removePreferencesFromCache(context, NAME, (err ,data) => { 561 if(err != null){ 562 console.info(TAG + "Remove preferences from cache error: " + err) 563 expect(false).assertTrue(); 564 }else{ 565 console.info(TAG + "Remove preferences from cache success") 566 expect(data==null).assertTrue(); 567 } 568 }) 569 done(); 570 }) 571 572 /** 573 * @tc.name get defaultValue callback interface test 574 * @tc.number SUB_DistributedData_Preference_SDK_PreferenceJsApiCallbackTest_1300 575 * @tc.desc get defaultValue callback interface test 576 * @tc.size MediumTest 577 * @tc.type Function 578 * @tc.level Level 2 579 */ 580 it('testPreferencesGetDefValue0173', 0, async function (done) { 581 await mPreferences.clear(); 582 await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, true, function (err, ret) { 583 expect(true).assertEqual(ret); 584 done(); 585 }) 586 }) 587 588 }) 589}