1/* 2* Copyright (c) 2021 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 'deccjsunit/index' 16import data_preferences 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 31describe('preferencesTest', function () { 32 beforeAll(async function () { 33 console.info('beforeAll') 34 context = featureAbility.getContext() 35 mPreferences = await data_preferences.getPreferences(context, NAME); 36 }) 37 38 afterAll(async function () { 39 console.info('afterAll') 40 await data_preferences.deletePreferences(context, NAME); 41 }) 42 43 /** 44 * @tc.name put StringArray promise interface test 45 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0131 46 * @tc.desc put StringArray promise interface test 47 */ 48 it('testPreferencesPutStringArray0131', 0, async function (done) { 49 await mPreferences.clear(); 50 var stringArr = ['1', '2', '3'] 51 let promise1 = mPreferences.put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArr) 52 await promise1 53 let promise2 = mPreferences.get(KEY_TEST_STRING_ARRAY_ELEMENT, ['123', '321']) 54 promise2.then((pre) => { 55 for (let i = 0; i < stringArr.length; i++) { 56 expect(stringArr[i]).assertEqual(pre[i]); 57 } 58 59 }).catch((err) => { 60 expect(null).assertFail(); 61 }) 62 await promise2 63 64 done(); 65 }); 66 67 /** 68 * @tc.name put NumberArray promise interface test 69 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0132 70 * @tc.desc put NumberArray promise interface test 71 */ 72 it('testPreferencesPutNumberArray0132', 0, async function (done) { 73 await mPreferences.clear(); 74 var numberArr = [11, 22, 33, 44, 55] 75 let promise1 = mPreferences.put(KEY_TEST_NUMBER_ARRAY_ELEMENT, numberArr) 76 await promise1 77 let promise2 = mPreferences.get(KEY_TEST_NUMBER_ARRAY_ELEMENT, [123, 321]) 78 promise2.then((pre) => { 79 for (let i = 0; i < numberArr.length; i++) { 80 expect(numberArr[i]).assertEqual(pre[i]); 81 } 82 }).catch((err) => { 83 expect(null).assertFail(); 84 }) 85 await promise2 86 87 done(); 88 }); 89 90 /** 91 * @tc.name put BoolArray promise interface test 92 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0133 93 * @tc.desc put BoolArray promise interface test 94 */ 95 it('testPreferencesPutBoolArray0133', 0, async function (done) { 96 await mPreferences.clear(); 97 var boolArr = [true, true, false] 98 let promise1 = mPreferences.put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArr) 99 await promise1 100 let promise2 = mPreferences.get(KEY_TEST_BOOL_ARRAY_ELEMENT, [false, true]) 101 promise2.then((pre) => { 102 for (let i = 0; i < boolArr.length; i++) { 103 expect(boolArr[i]).assertEqual(pre[i]); 104 } 105 }).catch((err) => { 106 expect(null).assertFail(); 107 }) 108 await promise2 109 110 done(); 111 }); 112 113 /** 114 * @tc.name getAll promise interface test 115 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0133 116 * @tc.desc getAll promise interface test 117 */ 118 it('testPreferencesGetAll0001', 0, async function (done) { 119 await mPreferences.clear(); 120 let doubleArr = [11, 22, 33] 121 let stringArr = ['11', '22', '33'] 122 let boolArr = [true, false, false, true] 123 await mPreferences.put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArr) 124 await mPreferences.put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArr) 125 await mPreferences.put(KEY_TEST_NUMBER_ARRAY_ELEMENT, doubleArr) 126 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, false) 127 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "123") 128 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 123.1) 129 130 await mPreferences.flush() 131 132 let promise = mPreferences.getAll() 133 promise.then((obj) => { 134 expect(false).assertEqual(obj.key_test_boolean) 135 expect("123").assertEqual(obj.key_test_string) 136 expect(123.1).assertEqual(obj.key_test_float) 137 let sArr = obj.key_test_string_array 138 for (let i = 0; i < sArr.length; i++) { 139 expect(sArr[i]).assertEqual(stringArr[i]); 140 } 141 142 let bArr = obj.key_test_bool_array 143 for (let i = 0; i < bArr.length; i++) { 144 expect(bArr[i]).assertEqual(boolArr[i]); 145 } 146 147 let nArr = obj.key_test_number_array 148 for (let i = 0; i < nArr.length; i++) { 149 expect(nArr[i]).assertEqual(doubleArr[i]); 150 } 151 }).catch((err) => { 152 expect(null).assertFail(); 153 }) 154 await promise 155 156 done(); 157 }) 158 159 /** 160 * @tc.name clear promise interface test 161 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Promise_0010 162 * @tc.desc clear promise interface test 163 */ 164 it('testPreferencesClear0011', 0, async function (done) { 165 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 166 await mPreferences.flush(); 167 const promise = mPreferences.clear(); 168 promise.then(async (ret) => { 169 let per = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue"); 170 done(); 171 expect("defaultvalue").assertEqual(per); 172 }).catch((err) => { 173 expect(null).assertFail(); 174 }); 175 await promise; 176 }) 177 178 /** 179 * @tc.name has string interface test 180 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0020 181 * @tc.desc has string interface test 182 */ 183 it('testPreferencesHasKey0031', 0, async function (done) { 184 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 185 const promise = mPreferences.has(KEY_TEST_STRING_ELEMENT); 186 promise.then((ret) => { 187 expect(true).assertEqual(ret); 188 }).catch((err) => { 189 expect(null).assertFail(); 190 }); 191 await promise; 192 done(); 193 }) 194 195 /** 196 * @tc.name has int interface test 197 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0140 198 * @tc.desc has int interface test 199 */ 200 it('testPreferencesHasKey0032', 0, async function (done) { 201 await mPreferences.put(KEY_TEST_INT_ELEMENT, 1); 202 const promise = mPreferences.has(KEY_TEST_INT_ELEMENT); 203 promise.then((ret) => { 204 expect(true).assertEqual(ret); 205 }).catch((err) => { 206 expect(null).assertFail(); 207 }); 208 await promise; 209 done(); 210 }) 211 212 /** 213 * @tc.name has float interface test 214 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0150 215 * @tc.desc has float interface test 216 */ 217 it('testPreferencesHasKey0033', 0, async function (done) { 218 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 2.0); 219 const promise = mPreferences.has(KEY_TEST_FLOAT_ELEMENT); 220 promise.then((ret) => { 221 expect(true).assertEqual(ret); 222 }).catch((err) => { 223 expect(null).assertFail(); 224 }); 225 await promise; 226 done(); 227 }) 228 229 /** 230 * @tc.name has boolean interface test 231 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0160 232 * @tc.desc has boolean interface test 233 */ 234 it('testPreferencesHasKey0034', 0, async function (done) { 235 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, false); 236 const promise = mPreferences.has(KEY_TEST_BOOLEAN_ELEMENT); 237 promise.then((ret) => { 238 expect(true).assertEqual(ret); 239 }).catch((err) => { 240 expect(null).assertFail(); 241 }); 242 await promise; 243 done(); 244 }) 245 246 /** 247 * @tc.name has long interface test 248 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0170 249 * @tc.desc has long interface test 250 */ 251 it('testPreferencesHasKey0035', 0, async function (done) { 252 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 0); 253 const promise = mPreferences.has(KEY_TEST_LONG_ELEMENT); 254 promise.then((ret) => { 255 expect(true).assertEqual(ret); 256 }).catch((err) => { 257 expect(null).assertFail(); 258 }); 259 await promise; 260 done(); 261 }) 262 263 /** 264 * @tc.name get string promise interface test 265 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0030 266 * @tc.desc get string promise interface test 267 */ 268 it('testPreferencesGetDefValue0061', 0, async function (done) { 269 await mPreferences.clear(); 270 const promise = mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultValue"); 271 promise.then((ret) => { 272 expect('defaultValue').assertEqual(ret); 273 }).catch((err) => { 274 expect(null).assertFail(); 275 }); 276 await promise; 277 done(); 278 }) 279 280 /** 281 * @tc.name get float promise interface test 282 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0040 283 * @tc.desc get float promise interface test 284 */ 285 it('testPreferencesGetFloat0071', 0, async function (done) { 286 await mPreferences.clear(); 287 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 3.0); 288 const promise = mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0); 289 promise.then((ret) => { 290 expect(3.0).assertEqual(ret); 291 }).catch((err) => { 292 expect(null).assertFail(); 293 }); 294 await promise; 295 done(); 296 }) 297 298 /** 299 * @tc.name get int promise interface test 300 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0050 301 * @tc.desc get int promise interface test 302 */ 303 it('testPreferencesGetInt0081', 0, async function (done) { 304 await mPreferences.clear(); 305 await mPreferences.put(KEY_TEST_INT_ELEMENT, 3); 306 const promise = mPreferences.get(KEY_TEST_INT_ELEMENT, 0.0); 307 promise.then((ret) => { 308 expect(3).assertEqual(ret); 309 }).catch((err) => { 310 expect(null).assertFail(); 311 }); 312 await promise; 313 done(); 314 }) 315 316 /** 317 * @tc.name get long promise interface test 318 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0060 319 * @tc.desc get long promise interface test 320 */ 321 it('testPreferencesGetLong0091', 0, async function (done) { 322 await mPreferences.clear(); 323 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 3); 324 const promise = mPreferences.get(KEY_TEST_LONG_ELEMENT, 0); 325 promise.then((ret) => { 326 expect(3).assertEqual(ret); 327 }).catch((err) => { 328 expect(null).assertFail(); 329 }); 330 await promise; 331 done(); 332 }) 333 334 /** 335 * @tc.name get String promise interface test 336 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0070 337 * @tc.desc get String promise interface test 338 */ 339 it('tesPreferencesGetString101', 0, async function (done) { 340 await mPreferences.clear(); 341 await mPreferences.put(KEY_TEST_STRING_ELEMENT, "test"); 342 await mPreferences.flush(); 343 const promise = mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue"); 344 promise.then((ret) => { 345 expect('test').assertEqual(ret); 346 }).catch((err) => { 347 expect(null).assertFail(); 348 }); 349 await promise; 350 done(); 351 }) 352 353 /** 354 * @tc.name put boolean promise interface test 355 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0090 356 * @tc.desc put boolean promise interface test 357 */ 358 it('testPreferencesPutBoolean0121', 0, async function (done) { 359 const promise = mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, true); 360 promise.then(async (ret) => { 361 let per = await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, false); 362 expect(true).assertEqual(per); 363 await mPreferences.flush(); 364 let per2 = await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, false); 365 done(); 366 expect(true).assertEqual(per2); 367 }).catch((err) => { 368 expect(null).assertFail(); 369 }); 370 await promise; 371 }) 372 373 /** 374 * @tc.name put float promise interface test 375 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0100 376 * @tc.desc put float promise interface test 377 */ 378 it('testPreferencesPutFloat0131', 0, async function (done) { 379 const promise = mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 4.0); 380 promise.then(async (ret) => { 381 let per = await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0); 382 expect(4.0).assertEqual(per); 383 await mPreferences.flush(); 384 let per2 = await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 0.0); 385 done(); 386 expect(4.0).assertEqual(per2); 387 }).catch((err) => { 388 expect(null).assertFail(); 389 }); 390 await promise; 391 }) 392 393 /** 394 * @tc.name put int promise interface test 395 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0110 396 * @tc.desc put int promise interface test 397 */ 398 it('testPreferencesPutInt0141', 0, async function (done) { 399 const promise = mPreferences.put(KEY_TEST_INT_ELEMENT, 4); 400 promise.then(async (ret) => { 401 let per = await mPreferences.get(KEY_TEST_INT_ELEMENT, 0); 402 expect(4).assertEqual(per); 403 await mPreferences.flush(); 404 let per2 = await mPreferences.get(KEY_TEST_INT_ELEMENT, 0); 405 done(); 406 expect(4).assertEqual(per2); 407 }).catch((err) => { 408 expect(null).assertFail(); 409 }); 410 await promise; 411 }) 412 413 /** 414 * @tc.name put long promise interface test 415 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0120 416 * @tc.desc put long promise interface test 417 */ 418 it('testPreferencesPutLong0151', 0, async function (done) { 419 const promise = mPreferences.put(KEY_TEST_LONG_ELEMENT, 4); 420 promise.then(async (ret) => { 421 let per = await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0); 422 expect(4).assertEqual(per); 423 await mPreferences.flush(); 424 let per2 = await mPreferences.get(KEY_TEST_LONG_ELEMENT, 0); 425 done(); 426 expect(4).assertEqual(per2); 427 }).catch((err) => { 428 expect(null).assertFail(); 429 }); 430 await promise; 431 }) 432 433 /** 434 * @tc.name put String promise interface test 435 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_Preferences_0130 436 * @tc.desc put String promise interface test 437 */ 438 it('testPreferencesPutString0161', 0, async function (done) { 439 const promise = mPreferences.put(KEY_TEST_STRING_ELEMENT, ''); 440 promise.then(async (ret) => { 441 let per = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue") 442 expect('').assertEqual(per); 443 await mPreferences.flush(); 444 let per2 = await mPreferences.get(KEY_TEST_STRING_ELEMENT, "defaultvalue") 445 done(); 446 expect('').assertEqual(per2); 447 }).catch((err) => { 448 expect(null).assertFail(); 449 }); 450 await promise; 451 }) 452})