1/* 2* Copyright (c) 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 dataPreferences from '@ohos.data.preferences'; 16import featureAbility from '@ohos.ability.featureAbility'; 17import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; 18const NAME = "test_preferences"; 19const KEY_TEST_INT_ELEMENT = 'key_test_int'; 20const KEY_TEST_LONG_ELEMENT = 'key_test_long'; 21const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; 22const KEY_TEST_BOOLEAN_ELEMENT = 'key_test_boolean'; 23const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 24const KEY_TEST_NUMBER_ARRAY_ELEMENT = 'key_test_number_array'; 25const KEY_TEST_STRING_ARRAY_ELEMENT = 'key_test_string_array'; 26const KEY_TEST_BOOL_ARRAY_ELEMENT = 'key_test_bool_array'; 27var mPreferences; 28var context; 29 30const TAG = '[TEST_PREFERENCES_FLUSH]' 31 32export default function preferencesFlushTest(){ 33 describe('preferencesFlushTest', 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 * @tc.name testPreferences_put_flush_remove_get_0100 54 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0100 55 * @tc.desc put get flush removePreferencesFromCache get promise interface test 56 * @tc.size MediumTest 57 * @tc.type Function 58 * @tc.level Level 2 59 */ 60 it('testPreferences_put_flush_remove_get_0100', 0, async function (done) { 61 console.log(TAG + "start_test_0100"); 62 await mPreferences.clear(); 63 64 await mPreferences.put(KEY_TEST_INT_ELEMENT, 1).then(() => { 65 console.log(TAG + "put succeed"); 66 }).catch((err) => { 67 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 68 }) 69 70 await mPreferences.get(KEY_TEST_INT_ELEMENT, 1).then((res1) => { 71 expect(1).assertEqual(res1); 72 console.log(TAG + "res1 = " + res1 + "get res1 succeed"); 73 }).catch((err) => { 74 console.log(TAG + "get res1 failed error message = " + err + "error code = " + err.code); 75 }) 76 77 await mPreferences.flush().then(() => { 78 console.log(TAG + "flush succeed"); 79 }).catch((err) => { 80 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 81 }) 82 83 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 84 console.log(TAG + "remove succeed"); 85 }).catch((err) => { 86 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 87 }) 88 89 mPreferences = null; 90 mPreferences = await dataPreferences.getPreferences(context, NAME); 91 92 await mPreferences.get(KEY_TEST_INT_ELEMENT, 1).then((res2) => { 93 expect(1).assertEqual(res2); 94 console.log(TAG + "res2 = " + res2 + "get res2 succeed. test0100end"); 95 done(); 96 }).catch((err) => { 97 console.log(TAG + "get res2 failed error message = " + err + "error code = " + err.code); 98 }) 99 }) 100 /** 101 * @tc.name testPreferences_put_flush_remove_get_0200 102 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0200 103 * @tc.desc put get flush removePreferencesFromCache get promise interface test 104 * @tc.size MediumTest 105 * @tc.type Function 106 * @tc.level Level 2 107 */ 108 it('testPreferences_put_flush_remove_get_0200', 0, async function (done){ 109 console.log(TAG + "start_test_0200"); 110 await mPreferences.clear(); 111 await mPreferences.put(KEY_TEST_LONG_ELEMENT, 111).then(() => { 112 console.log(TAG + "put succeed"); 113 }).catch((err) => { 114 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 115 }) 116 117 await mPreferences.get(KEY_TEST_LONG_ELEMENT, 111).then((res1) => { 118 expect(111).assertEqual(res1); 119 console.log(TAG + "res1 = " + res1 + "get res1 succeed"); 120 }).catch((err) => { 121 console.log(TAG + "get res1 failed error message = " + err + "error code = " + err.code); 122 }) 123 124 await mPreferences.flush().then(() => { 125 console.log(TAG + "flush succeed"); 126 }).catch((err) => { 127 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 128 }) 129 130 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 131 console.log(TAG + "remove succeed"); 132 }).catch((err) => { 133 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 134 }) 135 136 mPreferences = null; 137 mPreferences = await dataPreferences.getPreferences(context, NAME); 138 139 await mPreferences.get(KEY_TEST_LONG_ELEMENT, 111).then((res2) => { 140 expect(111).assertEqual(res2); 141 console.log(TAG + "res2 = " + res2 + "get res2 succeed. test0200end"); 142 done(); 143 }).catch((err) => { 144 console.log(TAG + "get res2 failed error message = " + err + "error code = " + err.code); 145 }) 146 }) 147 /** 148 * @tc.name testPreferences_put_flush_remove_get_0300 149 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0300 150 * @tc.desc put get flush removePreferencesFromCache get promise interface test 151 * @tc.size MediumTest 152 * @tc.type Function 153 * @tc.level Level 2 154 */ 155 it('testPreferences_put_flush_remove_get_0300', 0, async function (done){ 156 console.log(TAG + "start_test_0300"); 157 await mPreferences.clear(); 158 await mPreferences.put(KEY_TEST_FLOAT_ELEMENT, 111.2).then(() => { 159 console.log(TAG + "put succeed"); 160 }).catch((err) => { 161 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 162 }) 163 164 await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 111.2).then((res1) => { 165 expect(111.2).assertEqual(res1); 166 console.log(TAG + "res1 = " + res1 + "get res1 succeed"); 167 }).catch((err) => { 168 console.log(TAG + "get res1 failed error message = " + err + "error code = " + err.code); 169 }) 170 171 await mPreferences.flush().then(() => { 172 console.log(TAG + "flush succeed"); 173 }).catch((err) => { 174 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 175 }) 176 177 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 178 console.log(TAG + "remove succeed"); 179 }).catch((err) => { 180 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 181 }) 182 183 mPreferences = null; 184 mPreferences = await dataPreferences.getPreferences(context, NAME); 185 186 await mPreferences.get(KEY_TEST_FLOAT_ELEMENT, 111.2).then((res2) => { 187 expect(111.2).assertEqual(res2); 188 console.log(TAG + "res2 = " + res2 + "get res2 succeed. test0300end"); 189 done(); 190 }).catch((err) => { 191 console.log(TAG + "get res2 failed error message = " + err + "error code = " + err.code); 192 }) 193 }) 194 /** 195 * @tc.name testPreferences_put_flush_remove_get_0400 196 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0400 197 * @tc.desc put get flush removePreferencesFromCache get promise interface test 198 * @tc.size MediumTest 199 * @tc.type Function 200 * @tc.level Level 2 201 */ 202 it('testPreferences_put_flush_remove_get_0400', 0, async function (done){ 203 console.log(TAG + "start_test_0400"); 204 await mPreferences.clear(); 205 await mPreferences.put(KEY_TEST_BOOLEAN_ELEMENT, true).then(() => { 206 console.log(TAG + "put succeed"); 207 }).catch((err) => { 208 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 209 }) 210 211 await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, true).then((res1) => { 212 expect(true).assertEqual(res1); 213 console.log(TAG + "res1 = " + res1 + "get res1 succeed"); 214 }).catch((err) => { 215 console.log(TAG + "get res1 failed error message = " + err + "error code = " + err.code); 216 }) 217 218 await mPreferences.flush().then(() => { 219 console.log(TAG + "flush succeed"); 220 }).catch((err) => { 221 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 222 }) 223 224 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 225 console.log(TAG + "remove succeed"); 226 }).catch((err) => { 227 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 228 }) 229 230 mPreferences = null; 231 mPreferences = await dataPreferences.getPreferences(context, NAME); 232 233 await mPreferences.get(KEY_TEST_BOOLEAN_ELEMENT, true).then((res2) => { 234 expect(true).assertEqual(res2); 235 console.log(TAG + "res2 = " + res2 + "get res2 succeed. test0400end"); 236 done(); 237 }).catch((err) => { 238 console.log(TAG + "get res2 failed error message = " + err + "error code = " + err.code); 239 }) 240 }) 241 /** 242 * @tc.name testPreferences_put_flush_remove_get_0500 243 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0500 244 * @tc.desc put get flush removePreferencesFromCacheget get promise interface test 245 * @tc.size MediumTest 246 * @tc.type Function 247 * @tc.level Level 2 248 */ 249 it('testPreferences_put_flush_remove_get_0500', 0, async function (done){ 250 console.log(TAG + "start_test_0500"); 251 await mPreferences.clear(); 252 await mPreferences.put(KEY_TEST_STRING_ELEMENT, 'abc').then(() => { 253 console.log(TAG + "put succeed"); 254 }).catch((err) => { 255 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 256 }) 257 258 await mPreferences.get(KEY_TEST_STRING_ELEMENT, 'abc').then((res1) => { 259 expect("abc").assertEqual(res1); 260 console.log(TAG + "res1 = " + res1 + "get res1 succeed"); 261 }).catch((err) => { 262 console.log(TAG + "get res1 failed error message = " + err + "error code = " + err.code); 263 }) 264 265 await mPreferences.flush().then(() => { 266 console.log(TAG + "flush succeed"); 267 }).catch((err) => { 268 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 269 }) 270 271 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 272 console.log(TAG + "remove succeed"); 273 }).catch((err) => { 274 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 275 }) 276 277 mPreferences = null; 278 mPreferences = await dataPreferences.getPreferences(context, NAME); 279 280 await mPreferences.get(KEY_TEST_STRING_ELEMENT, "abc").then((res2) => { 281 expect("abc").assertEqual(res2); 282 console.log(TAG + "res2 = " + res2 + "get res2 succeed. test0500end"); 283 done(); 284 }).catch((err) => { 285 console.log(TAG + "get res2 failed error message = " + err + "error code = " + err.code); 286 }) 287 }) 288 289 /** 290 * @tc.name testPreferences_put_flush_remove_get_0600 291 * @tc.number SUB_DistributedData_Preference_SDK_PutGetFlushRemoveJsApiTest_0600 292 * @tc.desc put getAll flush removePreferencesFromCache getAll promise interface test 293 * @tc.size MediumTest 294 * @tc.type Function 295 * @tc.level Level 2 296 */ 297 298 it('testPreferences_put_flush_remove_get_0600', 0, async function (done){ 299 console.log(TAG + "start_test_0600"); 300 await mPreferences.clear(); 301 let numberArr = [11, 22, 33]; 302 let stringArr = ['11', '22', '33']; 303 let boolArr = [true, false, false, true]; 304 await mPreferences.put(KEY_TEST_NUMBER_ARRAY_ELEMENT, numberArr).then(() => { 305 console.log(TAG + "put numberArr succeed"); 306 }).catch((err) => { 307 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 308 }) 309 await mPreferences.put(KEY_TEST_STRING_ARRAY_ELEMENT, stringArr).then(() => { 310 console.log(TAG + "put stringArr numberArr succeed"); 311 }).catch((err) => { 312 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 313 }) 314 await mPreferences.put(KEY_TEST_BOOL_ARRAY_ELEMENT, boolArr).then(() => { 315 console.log(TAG + "put boolArr numberArr succeed"); 316 }).catch((err) => { 317 console.log(TAG + "put failed error message = " + err + "error code = " + err.code); 318 }) 319 320 await mPreferences.getAll().then((obj1) => { 321 for (let i = 0; i < obj1.key_test_number_array.length; i++) { 322 expect(numberArr[i]).assertEqual(obj1.key_test_number_array[i]); 323 } 324 for (let i = 0; i < obj1.key_test_string_array.length; i++) { 325 expect(stringArr[i]).assertEqual(obj1.key_test_string_array[i]); 326 } 327 for (let i = 0; i < obj1.key_test_bool_array.length; i++) { 328 expect(boolArr[i]).assertEqual(obj1.key_test_bool_array[i]); 329 } 330 console.log(TAG + "obj1 = " + obj1 + "get res1 succeed"); 331 }).catch((err) => { 332 console.log(TAG + "get obj1 failed error message = " + err + "error code = " + err.code); 333 }) 334 335 await mPreferences.flush().then(() => { 336 console.log(TAG + "flush succeed"); 337 }).catch((err) => { 338 console.log(TAG + "flush failed error message = " + err + "error code = " + err.code); 339 }) 340 341 await dataPreferences.removePreferencesFromCache(context, NAME).then(() => { 342 console.log(TAG + "remove succeed"); 343 }).catch((err) => { 344 console.log(TAG + "remove failed error message = " + err + "error code = " + err.code); 345 }) 346 347 mPreferences = null; 348 mPreferences = await dataPreferences.getPreferences(context, NAME); 349 350 await mPreferences.getAll().then((obj2) => { 351 for (let i = 0; i < numberArr.length; i++) { 352 expect(numberArr[i]).assertEqual(obj2.key_test_number_array[i]); 353 } 354 for (let i = 0; i < stringArr.length; i++) { 355 expect(stringArr[i]).assertEqual(obj2.key_test_string_array[i]); 356 } 357 for (let i = 0; i < boolArr.length; i++) { 358 expect(boolArr[i]).assertEqual(obj2.key_test_bool_array[i]); 359 } 360 console.log(TAG + "obj2 = " + obj2 + "get res1 succeed"); 361 done(); 362 }).catch((err) => { 363 console.log(TAG + "get obj2 failed error message = " + err + "error code = " + err.code); 364 }) 365 }) 366 367 }) 368}