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 dataShare from '@ohos.data.dataSharePredicates';
19import abilityFeatureAbility from '@ohos.ability.featureAbility'
20
21var context = abilityFeatureAbility.getContext();
22const KEY_TEST_INT_ELEMENT = 'key_test_int_2';
23const KEY_TEST_FLOAT_ELEMENT = 'key_test_float_2';
24const KEY_TEST_BOOLEAN_ELEMENT = 'key_test_boolean_2';
25const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
26const file = "";
27const files = [file];
28
29const VALUE_TEST_INT_ELEMENT = 1234;
30const VALUE_TEST_FLOAT_ELEMENT = 4321.12;
31const VALUE_TEST_BOOLEAN_ELEMENT = true;
32const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
33
34const TEST_BUNDLE_NAME = 'com.example.myapplication';
35const TEST_STORE_ID = 'storeId3';
36var kvManager = null;
37var kvStore = null;
38var localDeviceId = null;
39const USED_DEVICE_IDS = ['A12C1F9261528B21F95778D2FDC0B2E33943E6251AC5487F4473D005758905DB'];
40const UNUSED_DEVICE_IDS = [];  /* add you test device-ids here */
41var syncDeviceIds = USED_DEVICE_IDS.concat(UNUSED_DEVICE_IDS);
42
43function sleep(ms) {
44    return new Promise(resolve => setTimeout(resolve, ms));
45}
46
47function putBatchString(len, prefix) {
48    let entries = [];
49    for (let i = 0; i < len; i++) {
50        var entry = {
51            key: prefix + i,
52            value: {
53                type: factory.ValueType.STRING,
54                value: 'batch_test_string_value'
55            }
56        }
57        entries.push(entry);
58    }
59    return entries;
60}
61
62describe('DeviceKvStoreCallbackTest', function () {
63    const config = {
64        bundleName: TEST_BUNDLE_NAME,
65        context: context
66    }
67
68    const options = {
69        createIfMissing: true,
70        encrypt: false,
71        backup: true,
72        autoSync: true,
73        kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
74        schema: '',
75        securityLevel: factory.SecurityLevel.S2,
76    }
77
78    beforeAll(async function (done) {
79        console.info('beforeAll config:' + JSON.stringify(config));
80        kvManager = factory.createKVManager(config);
81        await kvManager.getKVStore(TEST_STORE_ID, options).then((store) => {
82            kvStore = store;
83            console.info('beforeAll getKVStore for getDeviceId success');
84        }).catch((err) => {
85            console.error('beforeAll getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
86        });
87        var getDeviceId = new Promise((resolve, reject) => {
88            kvStore.on('dataChange', 0, function (data) {
89                console.info('beforeAll on data change: ' + JSON.stringify(data));
90                resolve(data.deviceId);
91            });
92            kvStore.put("getDeviceId", "byPut").then((data) => {
93                console.info('beforeAll put success');
94                expect(data == undefined).assertTrue();
95            });
96            setTimeout(() => {
97                reject(new Error('not resolved in 2 second, reject it.'))
98            }, 2000);
99        });
100        await getDeviceId.then(function (deviceId) {
101            console.info('beforeAll getDeviceId ' + JSON.stringify(deviceId));
102            localDeviceId = deviceId;
103        }).catch((error) => {
104            console.error('beforeAll can NOT getDeviceId, fail: ' + `, error code is ${error.code}, message is ${error.message}`);
105            expect(null).assertFail();
106        });
107        await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
108        await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
109        kvStore = null;
110        console.info('beforeAll end');
111        done();
112    })
113
114    afterAll(function (done) {
115        console.info('afterAll');
116        kvManager = null;
117        kvStore = null;
118        done();
119    })
120
121    beforeEach(function (done) {
122        console.info('beforeEach' + JSON.stringify(options));
123        kvManager.getKVStore(TEST_STORE_ID, options, function (err, store) {
124            if (err) {
125                console.error('beforeEach getKVStore fail' + `, error code is ${err.code}, message is ${err.message}`);
126                done();
127                return;
128            }
129            kvStore = store;
130            console.info('beforeEach getKVStore success');
131            done();
132        });
133    })
134
135    afterEach(function (done) {
136        console.info('afterEach');
137        try {
138            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err, data) {
139                if (err) {
140                    console.error('afterEach closeKVStore fail' + `, error code is ${err.code}, message is ${err.message}`);
141                    done();
142                }
143                console.info('afterEach closeKVStore success: err is: ' + err);
144                kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err, data) {
145                    if (err) {
146                        console.error('afterEach deleteKVStore fail' + `, error code is ${err.code}, message is ${err.message}`);
147                        done();
148                    }
149                    console.info('afterEach deleteKVStore success err is: ' + err);
150                    kvStore = null;
151                    done();
152                });
153            });
154        } catch (e) {
155            console.error('afterEach closeKVStore err ' + `, error code is ${e.code}, message is ${e.message}`);
156            done();
157        }
158    })
159
160    /**
161     * @tc.name DeviceKvStorePutStringCallbackSucTest
162     * @tc.desc Test Js Api DeviceKvStore.Put(String) successfully
163     * @tc.type: FUNC
164     * @tc.require: issueNumber
165     */
166    it('DeviceKvStorePutStringCallbackSucTest', 0, function (done) {
167        console.info('DeviceKvStorePutStringCallbackSucTest');
168        try {
169            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) {
170                if (err) {
171                    console.error('DeviceKvStorePutStringCallbackSucTest fail' + `, error code is ${err.code}, message is ${err.message}`);
172                    expect(null).assertFail();
173                    done();
174                }
175                console.info('DeviceKvStorePutStringCallbackSucTest put success');
176                done();
177            });
178        } catch (e) {
179            console.error('DeviceKvStorePutStringCallbackSucTest put e' + `, error code is ${e.code}, message is ${e.message}`);
180            expect(null).assertFail();
181            done();
182        }
183    })
184
185    /**
186     * @tc.name DeviceKvStorePutStringCallbackInvalidArgsTest
187     * @tc.desc Test Js Api DeviceKvStore.Put(String) with invalid args
188     * @tc.type: FUNC
189     * @tc.require: issueNumber
190     */
191    it('DeviceKvStorePutStringCallbackInvalidArgsTest', 0, function (done) {
192        console.info('DeviceKvStorePutStringCallbackInvalidArgsTest');
193        try {
194            kvStore.put(KEY_TEST_STRING_ELEMENT, function (err, data) {
195                if (err) {
196                    console.error('DeviceKvStorePutStringCallbackInvalidArgsTest fail' + `, error code is ${err.code}, message is ${err.message}`);
197                    expect(null).assertFail();
198                    done();
199                }
200                expect(null).assertFail();
201                console.info('DeviceKvStorePutStringCallbackInvalidArgsTest put success');
202                done();
203            });
204        } catch (e) {
205            console.error('DeviceKvStorePutStringCallbackInvalidArgsTest put e' + `, error code is ${e.code}, message is ${e.message}`);
206            expect(e.code == 401).assertTrue();
207            done();
208        }
209    })
210
211    /**
212     * @tc.name DeviceKvStorePutStringCallbackClosedKvStoreTest
213     * @tc.desc Test Js Api DeviceKvStore.Put(String) with closed database
214     * @tc.type: FUNC
215     * @tc.require: issueNumber
216     */
217    it('DeviceKvStorePutStringCallbackClosedKvStoreTest', 0, function (done) {
218        console.info('DeviceKvStorePutStringCallbackClosedKvStoreTest');
219        try {
220            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
221                expect(err == undefined).assertTrue();
222                kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
223                    if (err) {
224                        console.error('DeviceKvStorePutStringCallbackClosedKvStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`);
225                        expect(err.code == 15100005).assertTrue();
226                        done();
227                        return;
228                    }
229                    expect(null).assertFail();
230                    console.info('DeviceKvStorePutStringCallbackClosedKvStoreTest put success');
231                    done();
232                });
233            });
234        } catch (e) {
235            console.error('DeviceKvStorePutStringCallbackClosedKvStoreTest put e' + `, error code is ${e.code}, message is ${e.message}`);
236            expect(null).assertFail();
237            done();
238        }
239    })
240
241    /**
242     * @tc.name DeviceKvStoreGetStringCallbackNoPutTest
243     * @tc.desc Test Js Api DeviceKvStore.GetString() with no put
244     * @tc.type: FUNC
245     * @tc.require: issueNumber
246     */
247    it('DeviceKvStoreGetStringCallbackNoPutTest', 0, function (done) {
248        console.info('DeviceKvStoreGetStringCallbackNoPutTest');
249        try {
250            kvStore.get(localDeviceId, KEY_TEST_STRING_ELEMENT, function (err) {
251                if (err) {
252                    console.info('DeviceKvStoreGetStringCallbackNoPutTest get fail');
253                    expect(err.code == 15100004).assertTrue();
254                    done();
255                    return;
256                }
257                console.info('DeviceKvStoreGetStringCallbackNoPutTest get success');
258                expect(null).assertFail();
259                done();
260            });
261        } catch (e) {
262            console.error('DeviceKvStoreGetStringCallbackTest get e' + `, error code is ${e.code}, message is ${e.message}`);
263            expect(null).assertFail();
264            done();
265        }
266    })
267
268    /**
269     * @tc.name DeviceKvStoreGetStringCallbackSucTest
270     * @tc.desc Test Js Api DeviceKvStore.GetString() successfully
271     * @tc.type: FUNC
272     * @tc.require: issueNumber
273     */
274    it('DeviceKvStoreGetStringCallbackSucTest', 0, function (done) {
275        console.info('DeviceKvStoreGetStringCallbackSucTest');
276        try {
277            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
278                if (err) {
279                    console.error('DeviceKvStoreGetStringCallbackSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`);
280                    expect(null).assertFail();
281                    done();
282                }
283                console.info('DeviceKvStoreGetStringCallbackSucTest put success');
284                expect(err == undefined).assertTrue();
285                kvStore.get(localDeviceId, KEY_TEST_STRING_ELEMENT, function (err, data) {
286                    if (err) {
287                        console.error('DeviceKvStoreGetStringCallbackSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`);
288                        expect(null).assertFail();
289                        done();
290                    }
291                    console.info('DeviceKvStoreGetStringCallbackSucTest get success');
292                    expect((err == undefined) && (VALUE_TEST_STRING_ELEMENT == data)).assertTrue();
293                    done();
294                });
295            })
296        } catch (e) {
297            console.error('DeviceKvStoreGetStringCallbackSucTest get e' + `, error code is ${e.code}, message is ${e.message}`);
298            expect(null).assertFail();
299            done();
300        }
301    })
302
303    /**
304     * @tc.name DeviceKvStoreGetStringCallbackClosedKVStoreTest
305     * @tc.desc Test Js Api DeviceKvStore.GetString() from a closed kvstore
306     * @tc.type: FUNC
307     * @tc.require: issueNumber
308     */
309    it('DeviceKvStoreGetStringCallbackClosedKVStoreTest', 0, function (done) {
310        try {
311            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
312                if (err) {
313                    expect(null).assertFail();
314                    done();
315                    return;
316                }
317                expect(err == undefined).assertTrue();
318                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
319                    if (err) {
320                        expect(null).assertFail();
321                        done();
322                        return;
323                    }
324                    expect(err == undefined).assertTrue();
325                    kvStore.get(localDeviceId, KEY_TEST_STRING_ELEMENT, function (err) {
326                        if (err) {
327                            expect(err.code == 15100005).assertTrue();
328                            done();
329                            return;
330                        }
331                        expect(null).assertFail();
332                        done();
333                    });
334                });
335            })
336        } catch (e) {
337            console.error('DeviceKvStoreGetStringCallbackClosedKVStoreTest get e' + `, error code is ${e.code}, message is ${e.message}`);
338            expect(null).assertFail();
339            done();
340        }
341    })
342
343    /**
344     * @tc.name DeviceKvStoreGetStringCallbackInvalidArgsTest
345     * @tc.desc Test Js Api DeviceKvStore.GetString() with invalid args
346     * @tc.type: FUNC
347     * @tc.require: issueNumber
348     */
349    it('DeviceKvStoreGetStringCallbackInvalidArgsTest', 0, function (done) {
350        try {
351            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
352                if (err) {
353                    console.error('DeviceKvStoreGetStringCallbackInvalidArgsTest put fail' + `, error code is ${err.code}, message is ${err.message}`);
354                    expect(null).assertFail();
355                    done();
356                    return;
357                }
358                console.info('DeviceKvStoreGetStringCallbackInvalidArgsTest put success');
359                expect(err == undefined).assertTrue();
360                try {
361                    kvStore.get(function (err, data) {
362                        if (err) {
363                            console.error('DeviceKvStoreGetStringCallbackInvalidArgsTest get fail' + `, error code is ${err.code}, message is ${err.message}`);
364                            expect(null).assertFail();
365                            done();
366                            return;
367                        }
368                        expect(null).assertFail();
369                        done();
370                    });
371                } catch (e) {
372                    console.error('DeviceKvStoreGetStringCallbackInvalidArgsTest get error' + `, error code is ${e.code}, message is ${e.message}`);
373                    expect(e.code == 401).assertTrue();
374                    done();
375                }
376            })
377        } catch (e) {
378            console.error('DeviceKvStoreGetStringCallbackInvalidArgsTest get e' + `, error code is ${e.code}, message is ${e.message}`);
379            expect(null).assertFail();
380            done();
381        }
382    })
383
384    /**
385     * @tc.name DeviceKvStorePutIntCallbackSucTest
386     * @tc.desc Test Js Api DeviceKvStore.Put(Int) successfully
387     * @tc.type: FUNC
388     * @tc.require: issueNumber
389     */
390    it('DeviceKvStorePutIntCallbackSucTest', 0, function (done) {
391        console.info('DeviceKvStorePutIntCallbackSucTest');
392        try {
393            kvStore.put(KEY_TEST_INT_ELEMENT, VALUE_TEST_INT_ELEMENT, function (err) {
394                if (err) {
395                    console.error('DeviceKvStorePutIntCallbackSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`);
396                    expect(null).assertFail();
397                    done();
398                }
399                console.info('DeviceKvStorePutIntCallbackSucTest put success');
400                expect(err == undefined).assertTrue();
401                kvStore.get(localDeviceId, KEY_TEST_INT_ELEMENT, function (err, data) {
402                    if (err) {
403                        console.error('DeviceKvStorePutIntCallbackSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`);
404                        expect(null).assertFail();
405                        done();
406                    }
407                    console.info('DeviceKvStorePutIntCallbackSucTest get success');
408                    expect((err == undefined) && (VALUE_TEST_INT_ELEMENT == data)).assertTrue();
409                    done();
410                })
411            });
412        } catch (e) {
413            console.error('DeviceKvStorePutIntCallbackSucTest put e' + `, error code is ${e.code}, message is ${e.message}`);
414            expect(null).assertFail();
415            done();
416        }
417    })
418
419    /**
420     * @tc.name DeviceKvStorePutIntCallbackMaxTest
421     * @tc.desc Test Js Api DeviceKvStore.Put(Int) with max value
422     * @tc.type: FUNC
423     * @tc.require: issueNumber
424     */
425    it('DeviceKvStorePutIntCallbackMaxTest', 0, function (done) {
426        console.info('DeviceKvStorePutIntCallbackMaxTest');
427        try {
428            var intValue = Number.MIN_VALUE;
429            kvStore.put(KEY_TEST_INT_ELEMENT, intValue, function (err) {
430                console.info('DeviceKvStorePutIntCallbackMaxTest put success');
431                expect(err == undefined).assertTrue();
432                kvStore.get(localDeviceId, KEY_TEST_INT_ELEMENT, function (err, data) {
433                    console.info('DeviceKvStorePutIntCallbackMaxTest get success');
434                    expect((err == undefined) && (intValue == data)).assertTrue();
435                    done()
436                })
437            });
438        } catch (e) {
439            console.error('DeviceKvStorePutIntCallbackMaxTest put e' + `, error code is ${e.code}, message is ${e.message}`);
440            expect(null).assertFail();
441            done()
442        }
443    })
444
445    /**
446     * @tc.name DeviceKvStorePutIntCallbackMinTest
447     * @tc.desc Test Js Api DeviceKvStore.Put(Int) with min value
448     * @tc.type: FUNC
449     * @tc.require: issueNumber
450     */
451    it('DeviceKvStorePutIntCallbackMinTest', 0, function (done) {
452        console.info('DeviceKvStorePutIntCallbackMinTest');
453        try {
454            var intValue = Number.MAX_VALUE;
455            kvStore.put(KEY_TEST_INT_ELEMENT, intValue, function (err) {
456                console.info('DeviceKvStorePutIntCallbackMinTest put success');
457                expect(err == undefined).assertTrue();
458                kvStore.get(localDeviceId, KEY_TEST_INT_ELEMENT, function (err, data) {
459                    console.info('DeviceKvStorePutIntCallbackMinTest get success');
460                    expect((err == undefined) && (intValue == data)).assertTrue();
461                    done();
462                })
463            });
464        } catch (e) {
465            console.error('DeviceKvStorePutIntCallbackMinTest put e' + `, error code is ${e.code}, message is ${e.message}`);
466            expect(null).assertFail();
467            done();
468        }
469    })
470
471    /**
472     * @tc.name DeviceKvStoreGetIntCallbackNonExistTest
473     * @tc.desc Test Js Api DeviceKvStore.GetInt() get non-exsiting int
474     * @tc.type: FUNC
475     * @tc.require: issueNumber
476     */
477    it('DeviceKvStoreGetIntCallbackTest', 0, function (done) {
478        console.info('DeviceKvStoreGetIntCallbackTest');
479        try {
480            kvStore.get(localDeviceId, KEY_TEST_INT_ELEMENT, function (err) {
481                if (err) {
482                    console.error('DeviceKvStoreGetIntCallbackTest get fail');
483                    expect(err.code == 15100004).assertTrue();
484                    done();
485                    return;
486                }
487                console.info('DeviceKvStoreGetIntCallbackTest get success');
488                expect(null).assertFail();
489                done();
490            })
491        } catch (e) {
492            console.error('DeviceKvStoreGetIntCallbackTest put e' + `, error code is ${e.code}, message is ${e.message}`);
493            expect(null).assertFail();
494            done();
495        }
496    })
497
498    /**
499     * @tc.name DeviceKvStorePutBoolCallbackTest
500     * @tc.desc Test Js Api DeviceKvStore.Put(Bool) successfully
501     * @tc.type: FUNC
502     * @tc.require: issueNumber
503     */
504    it('DeviceKvStorePutBoolCallbackTest', 0, function (done) {
505        console.info('DeviceKvStorePutBoolCallbackTest');
506        try {
507            kvStore.put(KEY_TEST_BOOLEAN_ELEMENT, VALUE_TEST_BOOLEAN_ELEMENT, function (err) {
508                console.info('DeviceKvStorePutBoolCallbackTest put success');
509                expect(err == undefined).assertTrue();
510                done();
511            });
512        } catch (e) {
513            console.error('DeviceKvStorePutBoolCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
514            expect(null).assertFail();
515            done();
516        }
517    })
518
519    /**
520     * @tc.name DeviceKvStoreGetBoolCallbackSucTest
521     * @tc.desc Test Js Api DeviceKvStore.GetBool() successfully
522     * @tc.type: FUNC
523     * @tc.require: issueNumber
524     */
525    it('DeviceKvStoreGetBoolCallbackSucTest', 0, function (done) {
526        console.info('DeviceKvStoreGetBoolCallbackSucTest');
527        try {
528            kvStore.put(KEY_TEST_BOOLEAN_ELEMENT, VALUE_TEST_BOOLEAN_ELEMENT, function (err, data) {
529                console.info('DeviceKvStoreGetBoolCallbackSucTest put success');
530                expect(err == undefined).assertTrue();
531                kvStore.get(localDeviceId, KEY_TEST_BOOLEAN_ELEMENT, function (err, data) {
532                    console.info('DeviceKvStoreGetBoolCallbackSucTest get success');
533                    console.info(data);
534                    expect((err == undefined) && (VALUE_TEST_BOOLEAN_ELEMENT == data)).assertTrue();
535                    done();
536                });
537            })
538        } catch (e) {
539            console.error('DeviceKvStoreGetBoolCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
540            expect(null).assertFail();
541            done();
542        }
543    })
544
545    /**
546     * @tc.name DeviceKvStorePutFloatCallbackSucTest
547     * @tc.desc Test Js Api DeviceKvStore.Put(Float) successfully
548     * @tc.type: FUNC
549     * @tc.require: issueNumber
550     */
551    it('DeviceKvStorePutFloatCallbackSucTest', 0, function (done) {
552        console.info('DeviceKvStorePutFloatCallbackSucTest');
553        try {
554            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
555                console.info('DeviceKvStorePutFloatCallbackSucTest put success');
556                expect(err == undefined).assertTrue();
557                done();
558            });
559        } catch (e) {
560            console.error('DeviceKvStorePutFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
561            expect(null).assertFail();
562            done();
563        }
564    })
565
566    /**
567     * @tc.name DeviceKvStoreGetFloatCallbackSucTest
568     * @tc.desc Test Js Api DeviceKvStore.GetFloat() successfully
569     * @tc.type: FUNC
570     * @tc.require: issueNumber
571     */
572    it('DeviceKvStoreGetFloatCallbackSucTest', 0, function (done) {
573        console.info('DeviceKvStoreGetFloatCallbackSucTest');
574        try {
575            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
576                console.info('DeviceKvStoreGetFloatCallbackSucTest put success');
577                expect(err == undefined).assertTrue();
578                kvStore.get(localDeviceId, KEY_TEST_FLOAT_ELEMENT, function (err, data) {
579                    if (err) {
580                        console.error('DeviceKvStoreGetFloatCallbackSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`);
581                        expect(null).assertFail();
582                        done();
583                    }
584                    console.info('DeviceKvStoreGetFloatCallbackSucTest get success');
585                    expect(true).assertTrue();
586                    done();
587                });
588            });
589        } catch (e) {
590            console.error('DeviceKvStoreGetFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
591            expect(null).assertFail();
592            done();
593        }
594    })
595
596    /**
597     * @tc.name DeviceKvStoreDeleteStringCallbackSucTest
598     * @tc.desc Test Js Api DeviceKvStore.DeleteString() successfully
599     * @tc.type: FUNC
600     * @tc.require: issueNumber
601     */
602    it('DeviceKvStoreDeleteStringCallbackSucTest', 0, function (done) {
603        console.info('DeviceKvStoreDeleteStringCallbackSucTest');
604        try {
605            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) {
606                if (err) {
607                    expect(null).assertFail();
608                    done();
609                }
610                console.info('DeviceKvStoreDeleteStringCallbackSucTest put success');
611                kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err, data) {
612                    if (err) {
613                        expect(null).assertFail();
614                        done();
615                    }
616                    console.info('DeviceKvStoreDeleteStringCallbackSucTest delete success');
617                    expect(true).assertTrue();
618                    done();
619                });
620            })
621        } catch (e) {
622            console.error('DeviceKvStoreDeleteStringCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
623            expect(null).assertFail();
624            done();
625        }
626    })
627
628    /**
629     * @tc.name DeviceKvStoreDeleteStringCallbackInvalid ArgsTest
630     * @tc.desc Test Js Api DeviceKvStore.DeleteString() with invalid args
631     * @tc.type: FUNC
632     * @tc.require: issueNumber
633     */
634    it('DeviceKvStoreDeleteStringCallbackInvalidArgsTest', 0, function (done) {
635        console.info('DeviceKvStoreDeleteStringCallbackInvalidArgsTest');
636        try {
637            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) {
638                console.info('DeviceKvStoreDeleteStringCallbackInvalidArgsTest put success');
639                expect(err == undefined).assertTrue();
640                try {
641                    kvStore.delete(function (err) {
642                        console.info('DeviceKvStoreDeleteStringCallbackInvalidArgsTest delete success');
643                        expect(null).assertFail();
644                        done();
645                    });
646                } catch (e) {
647                    console.error('DeviceKvStoreDeleteStringCallbackInvalidArgsTest delete fail' + `, error code is ${e.code}, message is ${e.message}`);
648                    expect(e.code == 401).assertTrue();
649                    done();
650                }
651            })
652        } catch (e) {
653            console.error('DeviceKvStoreDeleteStringCallbackInvalidArgsTest put fail' + `, error code is ${e.code}, message is ${e.message}`);
654            expect(e.code == 401).assertTrue();
655            done();
656        }
657    })
658
659    /**
660     * @tc.name DeviceKvStoreDeleteCallbackClosedKVStoreTest
661     * @tc.desc Test Js Api DeviceKvStore.Delete() into a closed kvstore
662     * @tc.type: FUNC
663     * @tc.require: issueNumber
664     */
665    it('DeviceKvStoreDeleteCallbackClosedKVStoreTest', 0, function (done) {
666        try {
667            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
668                if (err) {
669                    console.error('DeviceKvStorePutStringCallbackClosedKvStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`);
670                    expect(null).assertFail();
671                    done();
672                    return;
673                }
674                expect(true).assertTrue();
675                console.info('DeviceKvStorePutStringCallbackClosedKvStoreTest put success');
676                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
677                    if (err) {
678                        expect(null).assertFail();
679                        done();
680                        return;
681                    }
682                    expect(err == undefined).assertTrue();
683                    kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err) {
684                        if (err) {
685                            expect(err.code == 15100005).assertTrue();
686                            done();
687                            return;
688                        }
689                        expect(null).assertFail();
690                        done();
691                    });
692                });
693            });
694        } catch (e) {
695            console.error('DeviceKvStorePutStringCallbackClosedKvStoreTest put e' + `, error code is ${e.code}, message is ${e.message}`);
696            expect(null).assertFail();
697            done();
698        }
699    })
700
701    /**
702     * @tc.name DeviceKvStoreDeleteIntCallbackSucTest
703     * @tc.desc Test Js Api DeviceKvStore.DeleteInt() successfully
704     * @tc.type: FUNC
705     * @tc.require: issueNumber
706     */
707    it('DeviceKvStoreDeleteIntCallbackSucTest', 0, function (done) {
708        console.info('DeviceKvStoreDeleteIntCallbackSucTest');
709        try {
710            kvStore.put(KEY_TEST_INT_ELEMENT, VALUE_TEST_INT_ELEMENT, function (err, data) {
711                console.info('DeviceKvStoreDeleteIntCallbackSucTest put success');
712                expect(err == undefined).assertTrue();
713                kvStore.delete(KEY_TEST_INT_ELEMENT, function (err, data) {
714                    console.info('DeviceKvStoreDeleteIntCallbackSucTest delete success');
715                    expect(err == undefined).assertTrue();
716                    done();
717                });
718            })
719        } catch (e) {
720            console.error('DeviceKvStoreDeleteIntCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
721            expect(null).assertFail();
722            done();
723        }
724    })
725
726    /**
727     * @tc.name DeviceKvStoreDeleteFloatCallbackSucTest
728     * @tc.desc Test Js Api DeviceKvStore.DeleteFloat() successfully
729     * @tc.type: FUNC
730     * @tc.require: issueNumber
731     */
732    it('DeviceKvStoreDeleteFloatCallbackSucTest', 0, function (done) {
733        console.info('DeviceKvStoreDeleteFloatCallbackSucTest');
734        try {
735            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
736                console.info('DeviceKvStoreDeleteFloatCallbackSucTest put success');
737                expect(err == undefined).assertTrue();
738                kvStore.delete(KEY_TEST_FLOAT_ELEMENT, function (err, data) {
739                    console.info('DeviceKvStoreDeleteFloatCallbackSucTest delete success');
740                    expect(err == undefined).assertTrue();
741                    done();
742                });
743            })
744        } catch (e) {
745            console.error('DeviceKvStoreDeleteFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
746            expect(null).assertFail();
747            done();
748        }
749    })
750
751    /**
752     * @tc.name DeviceKvStoreDeleteBoolCallbackSucTest
753     * @tc.desc Test Js Api DeviceKvStore.DeleteBool() successfully
754     * @tc.type: FUNC
755     * @tc.require: issueNumber
756     */
757    it('DeviceKvStoreDeleteBoolCallbackSucTest', 0, function (done) {
758        console.info('DeviceKvStoreDeleteBoolCallbackSucTest');
759        try {
760            kvStore.put(KEY_TEST_BOOLEAN_ELEMENT, VALUE_TEST_BOOLEAN_ELEMENT, function (err, data) {
761                console.info('DeviceKvStoreDeleteBoolCallbackSucTest put success');
762                expect(err == undefined).assertTrue();
763                kvStore.delete(KEY_TEST_BOOLEAN_ELEMENT, function (err, data) {
764                    console.info('DeviceKvStoreDeleteBoolCallbackSucTest delete success');
765                    expect(err == undefined).assertTrue();
766                    done();
767                });
768            })
769        } catch (e) {
770            console.error('DeviceKvStoreDeleteBoolCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`);
771            expect(null).assertFail();
772            done();
773        }
774    })
775
776    /**
777     * @tc.name DeviceKvStoreDeletePredicatesCallbackTest
778     * @tc.desc Test Js Api DeviceKvStore.Delete()
779     * @tc.type: FUNC
780     * @tc.require: issueNumber
781     */
782    it('DeviceKvStoreDeletePredicatesCallbackTest', 0, function (done) {
783        console.log('DeviceKvStoreDeletePredicatesCallbackTest');
784        try {
785            let predicates = new dataShare.DataSharePredicates();
786            let arr = ["name"];
787            predicates.inKeys(arr);
788            kvStore.delete(predicates, function (err, data) {
789                if (err) {
790                    console.error('DeviceKvStoreDeletePredicatesCallbackTest delete fail' + `, error code is ${err.code}, message is ${err.message}`);
791                    expect(null).assertFail();
792                    done();
793                }
794                console.error('DeviceKvStoreDeletePredicatesCallbackTest delete success');
795                expect(null).assertFail();
796                done();
797            });
798        } catch (e) {
799            console.info('DeviceKvStoreDeletePredicatesCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
800            expect(e.code == 202).assertTrue();
801            done();
802        }
803    })
804
805    /**
806     * @tc.name DeviceKvStoreOnChangeCallbackType0Test
807     * @tc.desc Test Js Api DeviceKvStore.OnChange() with type 0
808     * @tc.type: FUNC
809     * @tc.require: issueNumber
810     */
811    it('DeviceKvStoreOnChangeCallbackTest', 0, function (done) {
812        console.info('DeviceKvStoreOnChangeCallbackTest');
813        try {
814            kvStore.on('dataChange', 0, function (data) {
815                console.info('DeviceKvStoreOnChangeCallbackTest dataChange');
816                expect(data != null).assertTrue();
817            });
818            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
819                console.info('DeviceKvStoreOnChangeCallbackTest put success');
820                expect(err == undefined).assertTrue();
821                done();
822            });
823        } catch (e) {
824            console.error('DeviceKvStoreOnChangeCallbackTest e' + `, error code is ${e.code}, message is ${e.message}`);
825            expect(null).assertFail();
826            done();
827        }
828    })
829
830    /**
831     * @tc.name DeviceKvStoreOnChangeCallbackType1Test
832     * @tc.desc Test Js Api DeviceKvStore.OnChange() with type 1
833     * @tc.type: FUNC
834     * @tc.require: issueNumber
835     */
836    it('DeviceKvStoreOnChangeCallbackType1Test', 0, function (done) {
837        console.info('DeviceKvStoreOnChangeCallbackType1Test');
838        try {
839            kvStore.on('dataChange', 1, function (data) {
840                console.info('DeviceKvStoreOnChangeCallbackType1Test dataChange');
841                expect(data != null).assertTrue();
842            });
843            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
844                console.info('DeviceKvStoreOnChangeCallbackType1Test put success');
845                expect(err == undefined).assertTrue();
846                done();
847            });
848        } catch (e) {
849            console.error('DeviceKvStoreOnChangeCallbackType1Test e' + `, error code is ${e.code}, message is ${e.message}`);
850            expect(null).assertFail();
851            done();
852        }
853    })
854
855    /**
856     * @tc.name DeviceKvStoreOnChangeCallbackType2Test
857     * @tc.desc Test Js Api DeviceKvStore.OnChange() with type 2
858     * @tc.type: FUNC
859     * @tc.require: issueNumber
860     */
861    it('DeviceKvStoreOnChangeCallbackType2Test', 0, function (done) {
862        console.info('DeviceKvStoreOnChangeCallbackType2Test');
863        try {
864            kvStore.on('dataChange', 2, function (data) {
865                console.info('DeviceKvStoreOnChangeCallbackType2Test dataChange');
866                expect(data != null).assertTrue();
867            });
868            kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT, function (err, data) {
869                console.info('DeviceKvStoreOnChangeCallbackType2Test put success');
870                expect(err == undefined).assertTrue();
871                done();
872            });
873        } catch (e) {
874            console.error('DeviceKvStoreOnChangeCallbackType2Test e' + `, error code is ${e.code}, message is ${e.message}`);
875            expect(null).assertFail();
876            done();
877        }
878    })
879
880    /**
881     * @tc.name DeviceKvStoreOnChangeCallbackClosedKVStoreTest
882     * @tc.desc Test Js Api DeviceKvStore.OnChange() subscribe a closed kvstore
883     * @tc.type: FUNC
884     * @tc.require: issueNumber
885     */
886    it('DeviceKvStoreOnChangeCallbackClosedKVStoreTest', 0, function (done) {
887        console.info('DeviceKvStoreOnChangeCallbackClosedKVStoreTest');
888        try {
889            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
890                expect(err == undefined).assertTrue();
891                try {
892                    kvStore.on('dataChange', 2, function () {
893                        expect(null).assertFail();
894                        done();
895                    });
896                } catch (e) {
897                    console.error('DeviceKvStoreOnChangeCallbackClosedKVStoreTest onDataChange fail' + `, error code is ${e.code}, message is ${e.message}`);
898                    expect(e.code == 15100005).assertTrue();
899                    done();
900                }
901            });
902        } catch (e) {
903            console.error('DeviceKvStoreOnChangeCallbackClosedKVStoreTest closeKVStore' + `, error code is ${e.code}, message is ${e.message}`);
904            expect(e.code == 401).assertFail();
905            done();
906        }
907    })
908
909    /**
910     * @tc.name DeviceKvStoreOnChangeCallbackPassMaxTest
911     * @tc.desc Test Js Api DeviceKvStore.OnChange() pass max subscription time
912     * @tc.type: FUNC
913     * @tc.require: issueNumber
914     */
915    it('DeviceKvStoreOnChangeCallbackPassMaxTest', 0, function (done) {
916        console.info('DeviceKvStoreOnChangeCallbackPassMaxTest');
917        try {
918            for (let i = 0; i < 8; i++) {
919                kvStore.on('dataChange', 0, function (data) {
920                    console.info('DeviceKvStoreOnChangeCallbackPassMaxTest dataChange');
921                    expect(data != null).assertTrue();
922                });
923            }
924            kvStore.on('dataChange', 0, function (err) {
925                expect(null).assertFail();
926                done();
927            });
928        } catch (e) {
929            console.error('DeviceKvStoreOnChangeCallbackPassMaxTest e' + `, error code is ${e.code}, message is ${e.message}`);
930            expect(e.code == 15100001).assertTrue();
931            done();
932        }
933    })
934
935    /**
936     * @tc.name DeviceKvStoreOnChangeCallbackInvalidArgsTest
937     * @tc.desc Test Js Api DeviceKvStore.OnChange() with invalid args
938     * @tc.type: FUNC
939     * @tc.require: issueNumber
940     */
941    it('DeviceKvStoreOnChangeCallbackInvalidArgsTest', 0, function (done) {
942        console.info('DeviceKvStoreOnChangeCallbackInvalidArgsTest');
943        try {
944            kvStore.on('dataChange', function () {
945                console.info('DeviceKvStoreOnChangeCallbackInvalidArgsTest dataChange');
946                expect(null).assertFail();
947                done();
948            });
949        } catch (e) {
950            console.error('DeviceKvStoreOnChangeCallbackInvalidArgsTest e' + `, error code is ${e.code}, message is ${e.message}`);
951            expect(e.code == 401).assertTrue();
952            done();
953        }
954    })
955
956    /**
957     * @tc.name DeviceKvStoreOffChangeCallbackSucTest
958     * @tc.desc Test Js Api DeviceKvStoreOffChange success
959     * @tc.type: FUNC
960     * @tc.require: issueNumber
961     */
962    it('DeviceKvStoreOffChangeCallbackSucTest', 0, function (done) {
963        console.info('DeviceKvStoreOffChangePromiseSucTest');
964        try {
965            var func = function (data) {
966                console.info('DeviceKvStoreOffChangeCallbackSucTest ' + JSON.stringify(data));
967            };
968            kvStore.on('dataChange', 0, func);
969            kvStore.off('dataChange', func);
970            done();
971        } catch (e) {
972            console.error('DeviceKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
973            expect(null).assertFail();
974            done();
975        }
976    })
977
978    /**
979     * @tc.name DeviceKvStoreOffChangeCallbackInvalidArgsTest
980     * @tc.desc Test Js Api DeviceKvStoreOffChange with invalid args
981     * @tc.type: FUNC
982     * @tc.require: issueNumber
983     */
984    it('DeviceKvStoreOffChangeCallbackInvalidArgsTest', 0, function (done) {
985        console.info('DeviceKvStoreOffChangeCallbackInvalidArgsTest');
986        try {
987            kvStore.on('dataChange', 0, function (data) {
988                console.info('DeviceKvStoreOffChangeCallbackInvalidArgsTest ' + JSON.stringify(data));
989            });
990            kvStore.off('dataChange', 1, function (err) {
991                expect(null).assertFail();
992            });
993            done();
994        } catch (e) {
995            console.info('DeviceKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
996            expect(e.code == 401).assertTrue();
997            done();
998        }
999    })
1000
1001    /**
1002     * @tc.name DeviceKvStoreOffSyncCompleteCallbackSucTest
1003     * @tc.desc Test Js Api DeviceKvStoreOffSyncComplete success
1004     * @tc.type: FUNC
1005     * @tc.require: issueNumber
1006     */
1007    it('DeviceKvStoreOffSyncCompleteCallbackSucTest', 0, function (done) {
1008        console.info('DeviceKvStoreOffSyncCompleteCallbackSucTest');
1009        try {
1010            var func = function (data) {
1011                console.info('DeviceKvStoreOffSyncCompleteCallbackSucTest 0' + data)
1012            };
1013            kvStore.off('syncComplete', func);
1014            expect(true).assertTrue();
1015            done();
1016        } catch (e) {
1017            console.error('DeviceKvStoreOffSyncCompleteCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1018            expect(null).assertFail();
1019            done();
1020        }
1021    })
1022
1023    /**
1024     * @tc.name DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest
1025     * @tc.desc Test Js Api DeviceKvStoreOffSyncComplete with invalid args
1026     * @tc.type: FUNC
1027     * @tc.require: issueNumber
1028     */
1029    it('DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest', 0, function (done) {
1030        console.info('DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest');
1031        try {
1032            kvStore.off(function (err) {
1033                if (err) {
1034                    expect(null).assertFail();
1035                    done();
1036                }
1037                expect(null).assertFail();
1038                done();
1039            });
1040        } catch (e) {
1041            console.info('DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1042            expect(e.code == 401).assertTrue();
1043            done();
1044        }
1045    })
1046
1047    /**
1048     * @tc.name DeviceKvStoreSetSyncRangeCallbackDisjointTest
1049     * @tc.desc Test Js Api DeviceKvStore.SetSyncRange() with disjoint ranges
1050     * @tc.type: FUNC
1051     * @tc.require: issueNumber
1052     */
1053    it('DeviceKvStoreSetSyncRangeCallbackDisjointTest', 0, function (done) {
1054        console.info('DeviceKvStoreSetSyncRangeCallbackDisjointTest');
1055        try {
1056            var localLabels = ['A', 'B'];
1057            var remoteSupportLabels = ['C', 'D'];
1058            kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) {
1059                console.info('DeviceKvStoreSetSyncRangeCallbackDisjointTest setSyncRange success');
1060                expect(err == undefined).assertTrue();
1061                done();
1062            });
1063        } catch (e) {
1064            console.error('DeviceKvStoreSetSyncRangeCallbackDisjointTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1065            expect(null).assertFail();
1066            done();
1067        }
1068    })
1069
1070    /**
1071     * @tc.name DeviceKvStoreSetSyncRangeCallbackJointTest
1072     * @tc.desc Test Js Api DeviceKvStore.SetSyncRange() with joint range
1073     * @tc.type: FUNC
1074     * @tc.require: issueNumber
1075     */
1076    it('DeviceKvStoreSetSyncRangeCallbackTest', 0, function (done) {
1077        console.info('DeviceKvStoreSetSyncRangeCallbackTest');
1078        try {
1079            var localLabels = ['A', 'B'];
1080            var remoteSupportLabels = ['B', 'C'];
1081            kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) {
1082                console.info('DeviceKvStoreSetSyncRangeCallbackTest setSyncRange success');
1083                expect(err == undefined).assertTrue();
1084                done();
1085            });
1086        } catch (e) {
1087            console.error('DeviceKvStoreSetSyncRangeCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1088            expect(null).assertFail();
1089            done();
1090        }
1091    })
1092
1093    /**
1094     * @tc.name DeviceKvStoreSetSyncRangeCallbackSameTest
1095     * @tc.desc Test Js Api DeviceKvStore.SetSyncRange() with same range
1096     * @tc.type: FUNC
1097     * @tc.require: issueNumber
1098     */
1099    it('DeviceKvStoreSetSyncRangeCallbackSameTest', 0, function (done) {
1100        console.info(' DeviceKvStoreSetSyncRangeCallbackSameTest');
1101        try {
1102            var localLabels = ['A', 'B'];
1103            var remoteSupportLabels = ['A', 'B'];
1104            kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) {
1105                console.info(' DeviceKvStoreSetSyncRangeCallbackSameTest put success');
1106                expect(err == undefined).assertTrue();
1107                done();
1108            });
1109        } catch (e) {
1110            console.error('DeviceKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1111            expect(null).assertFail();
1112            done();
1113        }
1114    })
1115
1116    /**
1117     * @tc.name DeviceKvStoreSetSyncRangeCallbackInvalidArgsTest
1118     * @tc.desc Test Js Api DeviceKvStore.SetSyncRange() with invalid args
1119     * @tc.type: FUNC
1120     * @tc.require: issueNumber
1121     */
1122    it('DeviceKvStoreSetSyncRangeCallbackSameTest', 0, function (done) {
1123        console.info(' DeviceKvStoreSetSyncRangeCallbackSameTest');
1124        try {
1125            var remoteSupportLabels = ['A', 'B'];
1126            kvStore.setSyncRange(remoteSupportLabels, function (err) {
1127                expect(null).assertFail();
1128                done();
1129            });
1130        } catch (e) {
1131            console.error('DeviceKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1132            expect(e.code == 401).assertTrue();
1133            done();
1134        }
1135    })
1136
1137    /**
1138     * @tc.name DeviceKvStorePutBatchEntryCallbackStringTest
1139     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with string value
1140     * @tc.type: FUNC
1141     * @tc.require: issueNumber
1142     */
1143    it('DeviceKvStorePutBatchEntryCallbackStringTest', 0, function (done) {
1144        console.info('DeviceKvStorePutBatchEntryCallbackStringTest');
1145        try {
1146            let entries = [];
1147            for (var i = 0; i < 10; i++) {
1148                var key = 'batch_test_string_key';
1149                var entry = {
1150                    key: key + i,
1151                    value: {
1152                        type: factory.ValueType.STRING,
1153                        value: 'batch_test_string_value'
1154                    }
1155                }
1156                entries.push(entry);
1157            }
1158            console.info('DeviceKvStorePutBatchEntryCallbackStringTest entries: ' + JSON.stringify(entries));
1159            kvStore.putBatch(entries, function (err, data) {
1160                console.info('DeviceKvStorePutBatchEntryCallbackStringTest putBatch success');
1161                expect(err == undefined).assertTrue();
1162                kvStore.getEntries(localDeviceId, 'batch_test_string_key', function (err, entrys) {
1163                    expect(entrys.length == 10).assertTrue();
1164                    expect(entrys[0].value.value == 'batch_test_string_value').assertTrue();
1165                    done();
1166                });
1167            });
1168        } catch (e) {
1169            console.error('DeviceKvStorePutBatchEntryCallbackStringTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1170            expect(null).assertFail();
1171            done();
1172        }
1173    })
1174
1175    /**
1176     * @tc.name DeviceKvStorePutBatchEntryCallbackIntegerTest
1177     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with integer value
1178     * @tc.type: FUNC
1179     * @tc.require: issueNumber
1180     */
1181    it('DeviceKvStorePutBatchEntryCallbackIntegerTest', 0, function (done) {
1182        console.info('DeviceKvStorePutBatchEntryCallbackIntegerTest');
1183        try {
1184            let entries = [];
1185            for (var i = 0; i < 10; i++) {
1186                var key = 'batch_test_number_key';
1187                var entry = {
1188                    key: key + i,
1189                    value: {
1190                        type: factory.ValueType.INTEGER,
1191                        value: 222
1192                    }
1193                }
1194                entries.push(entry);
1195            }
1196            console.info('DeviceKvStorePutBatchEntryCallbackIntegerTest entries: ' + JSON.stringify(entries));
1197            kvStore.putBatch(entries, function (err, data) {
1198                console.info('DeviceKvStorePutBatchEntryCallbackIntegerTest putBatch success');
1199                expect(err == undefined).assertTrue();
1200                kvStore.getEntries(localDeviceId, 'batch_test_number_key', function (err, entrys) {
1201                    expect(entrys.length == 10).assertTrue();
1202                    expect(entrys[0].value.value == 222).assertTrue();
1203                    done();
1204                });
1205            });
1206        } catch (e) {
1207            console.error('DeviceKvStorePutBatchEntryCallbackIntegerTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1208            expect(null).assertFail();
1209            done();
1210        }
1211    })
1212
1213    /**
1214     * @tc.name DeviceKvStorePutBatchEntryCallbackFloatTest
1215     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with float value
1216     * @tc.type: FUNC
1217     * @tc.require: issueNumber
1218     */
1219    it('DeviceKvStorePutBatchEntryCallbackFloatTest', 0, function (done) {
1220        console.info('DeviceKvStorePutBatchEntryCallbackFloatTest');
1221        try {
1222            let entries = [];
1223            for (var i = 0; i < 10; i++) {
1224                var key = 'batch_test_number_key';
1225                var entry = {
1226                    key: key + i,
1227                    value: {
1228                        type: factory.ValueType.FLOAT,
1229                        value: 2.0
1230                    }
1231                }
1232                entries.push(entry);
1233            }
1234            console.info('DeviceKvStorePutBatchEntryCallbackFloatTest entries: ' + JSON.stringify(entries));
1235            kvStore.putBatch(entries, function (err, data) {
1236                console.info('DeviceKvStorePutBatchEntryCallbackFloatTest putBatch success');
1237                expect(err == undefined).assertTrue();
1238                kvStore.getEntries(localDeviceId, 'batch_test_number_key', function (err, entrys) {
1239                    expect(entrys.length == 10).assertTrue();
1240                    expect(entrys[0].value.value == 2.0).assertTrue();
1241                    done();
1242                });
1243            });
1244        } catch (e) {
1245            console.error('DeviceKvStorePutBatchEntryCallbackFloatTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1246            expect(null).assertFail();
1247            done();
1248        }
1249    })
1250
1251    /**
1252     * @tc.name DeviceKvStorePutBatchEntryCallbackDoubleTest
1253     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with double value
1254     * @tc.type: FUNC
1255     * @tc.require: issueNumber
1256     */
1257    it('DeviceKvStorePutBatchEntryCallbackDoubleTest', 0, function (done) {
1258        console.info('DeviceKvStorePutBatchEntryCallbackDoubleTest');
1259        try {
1260            let entries = [];
1261            for (var i = 0; i < 10; i++) {
1262                var key = 'batch_test_number_key';
1263                var entry = {
1264                    key: key + i,
1265                    value: {
1266                        type: factory.ValueType.DOUBLE,
1267                        value: 2.00
1268                    }
1269                }
1270                entries.push(entry);
1271            }
1272            console.info('DeviceKvStorePutBatchEntryCallbackDoubleTest entries: ' + JSON.stringify(entries));
1273            kvStore.putBatch(entries, function (err, data) {
1274                console.info('DeviceKvStorePutBatchEntryCallbackDoubleTest putBatch success');
1275                expect(err == undefined).assertTrue();
1276                kvStore.getEntries(localDeviceId, 'batch_test_number_key', function (err, entrys) {
1277                    expect(entrys.length == 10).assertTrue();
1278                    expect(entrys[0].value.value == 2.00).assertTrue();
1279                    done();
1280                });
1281            });
1282        } catch (e) {
1283            console.error('DeviceKvStorePutBatchEntryCallbackDoubleTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1284            expect(null).assertFail();
1285            done();
1286        }
1287    })
1288
1289    /**
1290     * @tc.name DeviceKvStorePutBatchEntryCallbackBooleanTest
1291     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with boolean value
1292     * @tc.type: FUNC
1293     * @tc.require: issueNumber
1294     */
1295    it('DeviceKvStorePutBatchEntryCallbackBooleanTest', 0, function (done) {
1296        console.info('DeviceKvStorePutBatchEntryCallbackBooleanTest');
1297        try {
1298            var bo = false;
1299            let entries = [];
1300            for (var i = 0; i < 10; i++) {
1301                var key = 'batch_test_bool_key';
1302                var entry = {
1303                    key: key + i,
1304                    value: {
1305                        type: factory.ValueType.BOOLEAN,
1306                        value: bo
1307                    }
1308                }
1309                entries.push(entry);
1310            }
1311            console.info('DeviceKvStorePutBatchEntryCallbackBooleanTest entries: ' + JSON.stringify(entries));
1312            kvStore.putBatch(entries, function (err, data) {
1313                console.info('DeviceKvStorePutBatchEntryCallbackBooleanTest putBatch success');
1314                expect(err == undefined).assertTrue();
1315                kvStore.getEntries(localDeviceId, 'batch_test_bool_key', function (err, entrys) {
1316                    expect(entrys.length == 10).assertTrue();
1317                    expect(entrys[0].value.value == bo).assertTrue();
1318                    done();
1319                });
1320            });
1321        } catch (e) {
1322            console.error('DeviceKvStorePutBatchEntryCallbackBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1323            expect(null).assertFail();
1324            done();
1325        }
1326    })
1327
1328    /**
1329     * @tc.name DeviceKvStorePutBatchEntryCallbackByteArrayTest
1330     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with byte_arrgy value
1331     * @tc.type: FUNC
1332     * @tc.require: issueNumber
1333     */
1334    it('DeviceKvStorePutBatchEntryCallbackByteArrayTest', 0, function (done) {
1335        console.info('DeviceKvStorePutBatchEntryCallbackByteArrayTest');
1336        try {
1337            var arr = new Uint8Array([21, 31]);
1338            let entries = [];
1339            for (var i = 0; i < 10; i++) {
1340                var key = 'batch_test_bool_key';
1341                var entry = {
1342                    key: key + i,
1343                    value: {
1344                        type: factory.ValueType.BYTE_ARRAY,
1345                        value: arr
1346                    }
1347                }
1348                entries.push(entry);
1349            }
1350            console.info('DeviceKvStorePutBatchEntryCallbackByteArrayTest entries: ' + JSON.stringify(entries));
1351            kvStore.putBatch(entries, function (err, data) {
1352                console.info('DeviceKvStorePutBatchEntryCallbackByteArrayTest putBatch success');
1353                expect(err == undefined).assertTrue();
1354                kvStore.getEntries(localDeviceId, 'batch_test_bool_key', function (err, entrys) {
1355                    expect(entrys.length == 10).assertTrue();
1356                    expect(entrys[0].value.value.toString() == arr.toString()).assertTrue();
1357                    done();
1358                });
1359            });
1360        } catch (e) {
1361            console.error('DeviceKvStorePutBatchEntryCallbackByteArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1362            expect(null).assertFail();
1363            done();
1364        }
1365    })
1366
1367    /**
1368     * @tc.name DeviceKvStorePutBatchValueCallbackUint8ArrayTest
1369     * @tc.desc Test Js Api DeviceKvStore.PutBatch() with value unit8array
1370     * @tc.type: FUNC
1371     * @tc.require: issueNumber
1372     */
1373    it('DeviceKvStorePutBatchValueCallbackUint8ArrayTest', 0, function (done) {
1374        console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest');
1375        try {
1376            let values = [];
1377            let arr1 = new Uint8Array([4, 5, 6, 7]);
1378            let arr2 = new Uint8Array([4, 5, 6, 7, 8]);
1379            let vb1 = {key: "name_1", value: arr1};
1380            let vb2 = {key: "name_2", value: arr2};
1381            values.push(vb1);
1382            values.push(vb2);
1383            console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest values: ' + JSON.stringify(values));
1384            kvStore.putBatch(values, function (err, data) {
1385                if (err) {
1386                    console.error('DeviceKvStorePutBatchValueCallbackUint8ArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`);
1387                    expect(null).assertFail();
1388                    done();
1389                }
1390                console.error('DeviceKvStorePutBatchValueCallbackUint8ArrayTest putBatch success');
1391                expect(null).assertFail();
1392                done();
1393            });
1394        } catch (e) {
1395            console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1396            expect(e.code == 202).assertTrue();
1397            done();
1398        }
1399    })
1400
1401    /**
1402     * @tc.name DeviceKvStorePutBatchCallbackInvalidArgsTest
1403     * @tc.desc Test Js Api DeviceKvStore.PutBatch() put invalid args
1404     * @tc.type: FUNC
1405     * @tc.require: issueNumber
1406     */
1407    it('DeviceKvStorePutBatchCallbackInvalidArgsTest', 0, function (done) {
1408        try {
1409            kvStore.putBatch(function (err) {
1410                if (err) {
1411                    expect(null).assertFail();
1412                    done();
1413                }
1414                expect(null).assertFail();
1415                done();
1416            });
1417        } catch (e) {
1418            console.info('DeviceKvStorePutBatchCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1419            expect(e.code == 401).assertTrue();
1420            done();
1421        }
1422    })
1423
1424    /**
1425     * @tc.name DeviceKvStorePutBatchCallbackClosedKvstoreTest
1426     * @tc.desc Test Js Api DeviceKvStore.PutBatch() put into closed kvstore
1427     * @tc.type: FUNC
1428     * @tc.require: issueNumber
1429     */
1430    it('DeviceKvStorePutBatchCallbackClosedKvstoreTest', 0, function (done) {
1431        try {
1432            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1433                expect(err == undefined).assertTrue();
1434                try {
1435                    let values = [];
1436                    let vb1 = {
1437                        key: "name_1", value: null
1438                    };
1439                    let vb2 = {
1440                        key: "name_2", value: null
1441                    };
1442                    values.push(vb1);
1443                    values.push(vb2);
1444                    kvStore.putBatch(values, function (err) {
1445                        if (err) {
1446                            console.info('DeviceKvStorePutBatchCallbackClosedKvstoreTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`);
1447                            expect(null).assertFail();
1448                            done();
1449                        }
1450                        expect(null).assertFail();
1451                        done();
1452                    });
1453                } catch (e) {
1454                    console.info('DeviceKvStorePutBatchCallbackClosedKvstoreTest putBatch fail' + `, error code is ${e.code}, message is ${e.message}`);
1455                    expect(e.code == 202).assertTrue();
1456                    done();
1457                }
1458            });
1459        } catch (e) {
1460            console.info('DeviceKvStorePutBatchCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1461            expect(e.code == 401).assertFail();
1462            done();
1463        }
1464    })
1465
1466    /**
1467     * @tc.name DeviceKvStoreDeleteBatchCallbackSucTest
1468     * @tc.desc Test Js Api DeviceKvStore.DeleteBatch() successfully
1469     * @tc.type: FUNC
1470     * @tc.require: issueNumber
1471     */
1472    it('DeviceKvStoreDeleteBatchCallbackSucTest', 0, function (done) {
1473        console.info('DeviceKvStoreDeleteBatchCallbackSucTest');
1474        try {
1475            let entries = [];
1476            let keys = [];
1477            for (var i = 0; i < 5; i++) {
1478                var key = 'batch_test_string_key';
1479                var entry = {
1480                    key: key + i,
1481                    value: {
1482                        type: factory.ValueType.STRING,
1483                        value: 'batch_test_string_value'
1484                    }
1485                }
1486                entries.push(entry);
1487                keys.push(key + i);
1488            }
1489            console.info('DeviceKvStoreDeleteBatchCallbackSucTest entries: ' + JSON.stringify(entries));
1490            kvStore.putBatch(entries, function (err, data) {
1491                console.info('DeviceKvStoreDeleteBatchCallbackSucTest putBatch success');
1492                expect(err == undefined).assertTrue();
1493                kvStore.deleteBatch(keys, function (err, data) {
1494                    console.info('DeviceKvStoreDeleteBatchCallbackSucTest deleteBatch success');
1495                    expect(err == undefined).assertTrue();
1496                    done();
1497                });
1498            });
1499        } catch (e) {
1500            console.error('DeviceKvStoreDeleteBatchCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1501            expect(null).assertFail();
1502            done();
1503        }
1504    })
1505
1506    /**
1507     * @tc.name DeviceKvStoreDeleteBatchCallbackInvalidArgsTest
1508     * @tc.desc Test Js Api DeviceKvStore.DeleteBatch() with invalid args
1509     * @tc.type: FUNC
1510     * @tc.require: issueNumber
1511     */
1512    it('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest', 0, function (done) {
1513        console.info('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest');
1514        try {
1515            let entries = [];
1516            let keys = [];
1517            for (var i = 0; i < 5; i++) {
1518                var key = 'batch_test_string_key';
1519                var entry = {
1520                    key: key + i,
1521                    value: {
1522                        type: factory.ValueType.STRING,
1523                        value: 'batch_test_string_value'
1524                    }
1525                }
1526                entries.push(entry);
1527                keys.push(key + i);
1528            }
1529            kvStore.putBatch(entries, function (err) {
1530                expect(err == undefined).assertTrue();
1531                try {
1532                    kvStore.deleteBatch(1, function (err) {
1533                        expect(null).assertFail();
1534                        done()
1535                    });
1536                } catch (e) {
1537                    console.info('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest deleteBatch fail' + `, error code is ${e.code}, message is ${e.message}`);
1538                    expect(e.code == 401).assertTrue();
1539                    done();
1540                }
1541            });
1542        } catch (e) {
1543            console.info('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest putBatch fail' + `, error code is ${e.code}, message is ${e.message}`);
1544            expect(e.code == 401).assertTrue();
1545            done();
1546        }
1547    })
1548
1549    /**
1550     * @tc.name DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest
1551     * @tc.desc Test Js Api DeviceKvStore.DeleteBatch() with closed kvstore
1552     * @tc.type: FUNC
1553     * @tc.require: issueNumber
1554     */
1555    it('DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest', 0, function (done) {
1556        console.info('DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest');
1557        try {
1558            let entries = [];
1559            let keys = [];
1560            for (var i = 0; i < 5; i++) {
1561                var key = 'batch_test_string_key';
1562                var entry = {
1563                    key: key + i,
1564                    value: {
1565                        type: factory.ValueType.STRING,
1566                        value: 'batch_test_string_value'
1567                    }
1568                }
1569                entries.push(entry);
1570                keys.push(key + i);
1571            }
1572            kvStore.putBatch(entries, function (err) {
1573                expect(err == undefined).assertTrue();
1574                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1575                    expect(err == undefined).assertTrue();
1576                    kvStore.deleteBatch(keys, function (err) {
1577                        if (err) {
1578                            expect(err.code == 15100005).assertTrue();
1579                            done();
1580                            return;
1581                        }
1582                        expect(null).assertFail();
1583                        done();
1584                    });
1585                });
1586            });
1587        } catch (e) {
1588            console.error('DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1589            expect(null).assertFail();
1590            done();
1591        }
1592    })
1593
1594    /**
1595     * @tc.name DeviceKvStoreGetEntriesCallbackQueryTest
1596     * @tc.desc Test Js Api DeviceKvStore.GetEntries() with query
1597     * @tc.type: FUNC
1598     * @tc.require: issueNumber
1599     */
1600    it('DeviceKvStoreGetEntriesCallbackQueryTest', 0, function (done) {
1601        try {
1602            var arr = new Uint8Array([21, 31]);
1603            let entries = [];
1604            for (var i = 0; i < 10; i++) {
1605                var key = 'batch_test_bool_key';
1606                var entry = {
1607                    key: key + i,
1608                    value: {
1609                        type: factory.ValueType.BYTE_ARRAY,
1610                        value: arr
1611                    }
1612                }
1613                entries.push(entry);
1614            }
1615            kvStore.putBatch(entries, function (err) {
1616                expect(err == undefined).assertTrue();
1617                let query = new factory.Query();
1618                query.prefixKey("batch_test");
1619                kvStore.getEntries(localDeviceId, query, function (err, entrys) {
1620                    expect(entrys.length == 10).assertTrue();
1621                    expect(entrys[0].value.value.toString() == arr.toString()).assertTrue();
1622                    done();
1623                });
1624            });
1625        } catch (e) {
1626            console.error('DeviceKvStoreGetEntriesCallbackQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1627            expect(null).assertFail();
1628            done();
1629        }
1630    })
1631
1632    /**
1633     * @tc.name DeviceKvStoreGetEntriesCallbackQueryClosedKVStoreTest
1634     * @tc.desc Test Js Api DeviceKvStore.GetEntries() query from a closed kvstore
1635     * @tc.type: FUNC
1636     * @tc.require: issueNumber
1637     */
1638    it('DeviceKvStoreGetEntriesCallbackQueryClosedKVStoreTest', 0, function (done) {
1639        try {
1640            var arr = new Uint8Array([21, 31]);
1641            let entries = [];
1642            for (let i = 0; i < 10; i++) {
1643                let key = 'batch_test_bool_key';
1644                let entry = {
1645                    key: key + i,
1646                    value: {
1647                        type: factory.ValueType.BYTE_ARRAY,
1648                        value: arr
1649                    }
1650                }
1651                entries.push(entry);
1652            }
1653            kvStore.putBatch(entries, function (err) {
1654                expect(err == undefined).assertTrue();
1655                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1656                    expect(err == undefined).assertTrue();
1657                    let query = new factory.Query();
1658                    query.prefixKey("batch_test");
1659                    kvStore.getEntries(localDeviceId, query, function (err) {
1660                        if (err) {
1661                            expect(err.code == 15100005).assertTrue();
1662                            done();
1663                            return;
1664                        }
1665                        expect(null).assertFail();
1666                        done();
1667                    })
1668                });
1669            });
1670        } catch (e) {
1671            console.error('DeviceKvStoreGetEntriesCallbackQueryClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1672            expect(null).assertFail();
1673            done();
1674        }
1675    })
1676
1677    /**
1678     * @tc.name DeviceKvStoreGetEntriesCallbackSucTest
1679     * @tc.desc Test Js Api DeviceKvStore.GetEntries() success
1680     * @tc.type: FUNC
1681     * @tc.require: issueNumber
1682     */
1683    it('DeviceKvStoreGetEntriesCallbackSucTest', 0, function (done) {
1684        try {
1685            var arr = new Uint8Array([21, 31]);
1686            let entries = [];
1687            for (var i = 0; i < 10; i++) {
1688                var key = 'batch_test_bool_key';
1689                var entry = {
1690                    key: key + i,
1691                    value: {
1692                        type: factory.ValueType.BYTE_ARRAY,
1693                        value: arr
1694                    }
1695                }
1696                entries.push(entry);
1697            }
1698            kvStore.putBatch(entries, function (err) {
1699                expect(err == undefined).assertTrue();
1700                kvStore.getEntries(localDeviceId, "batch_test", function (err, entrys) {
1701                    expect(entrys.length == 10).assertTrue();
1702                    expect(entrys[0].value.value.toString() == arr.toString()).assertTrue();
1703                    done();
1704                });
1705            });
1706        } catch (e) {
1707            console.error('DeviceKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1708            expect(null).assertFail();
1709            done();
1710        }
1711    })
1712
1713    /**
1714     * @tc.name DeviceKvStoreGetEntriesCallbackClosedKVStoreTest
1715     * @tc.desc Test Js Api DeviceKvStore.GetEntries() from a closed kvstore
1716     * @tc.type: FUNC
1717     * @tc.require: issueNumber
1718     */
1719    it('DeviceKvStoreGetEntriesCallbackClosedKVStoreTest', 0, function (done) {
1720        try {
1721            var arr = new Uint8Array([21, 31]);
1722            let entries = [];
1723            for (var i = 0; i < 10; i++) {
1724                var key = 'batch_test_bool_key';
1725                var entry = {
1726                    key: key + i,
1727                    value: {
1728                        type: factory.ValueType.BYTE_ARRAY,
1729                        value: arr
1730                    }
1731                }
1732                entries.push(entry);
1733            }
1734            kvStore.putBatch(entries, function (err) {
1735                expect(err == undefined).assertTrue();
1736                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1737                    expect(err == undefined).assertTrue();
1738                    kvStore.getEntries(localDeviceId, "batch_test", function (err) {
1739                        if (err) {
1740                            expect(err.code == 15100005).assertTrue();
1741                            done();
1742                            return;
1743                        }
1744                        expect(null).assertFail();
1745                        done();
1746                    });
1747                });
1748            });
1749        } catch (e) {
1750            console.error('DeviceKvStoreGetEntriesCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1751            expect(null).assertFail();
1752            done();
1753        }
1754    })
1755
1756    /**
1757     * @tc.name DeviceKvStoreGetEntriesCallbackInvalidArgsTest
1758     * @tc.desc Test Js Api DeviceKvStore.GetEntries() with invalid args
1759     * @tc.type: FUNC
1760     * @tc.require: issueNumber
1761     */
1762    it('DeviceKvStoreGetEntriesCallbackInvalidArgsTest', 0, function (done) {
1763        try {
1764            var arr = new Uint8Array([21, 31]);
1765            let entries = [];
1766            for (var i = 0; i < 10; i++) {
1767                var key = 'batch_test_bool_key';
1768                var entry = {
1769                    key: key + i,
1770                    value: {
1771                        type: factory.ValueType.BYTE_ARRAY,
1772                        value: arr
1773                    }
1774                }
1775                entries.push(entry);
1776            }
1777            kvStore.putBatch(entries, function (err) {
1778                expect(err == undefined).assertTrue();
1779                try {
1780                    kvStore.getEntries(function (err, entrys) {
1781                        if (err) {
1782                            expect(null).assertFail();
1783                            done();
1784                            return;
1785                        }
1786                        expect(null).assertFail();
1787                        done();
1788                    });
1789                } catch (e) {
1790                    console.info('DeviceKvStoreGetEntriesCallbackInvalidArgsTest getEntries fail' + `, error code is ${e.code}, message is ${e.message}`);
1791                    expect(e.code == 401).assertTrue();
1792                    done();
1793                }
1794            });
1795        } catch (e) {
1796            console.info('DeviceKvStoreGetEntriesCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1797            expect(null).assertFail();
1798            done();
1799        }
1800    })
1801
1802
1803    /**
1804     * @tc.name DeviceKvstoreStartTransactionCallbackCommitTest
1805     * @tc.desc Test Js Api DeviceKvStore.startTransaction() with commit
1806     * @tc.type: FUNC
1807     * @tc.require: issueNumber
1808     */
1809    it('DeviceKvstoreStartTransactionCallbackCommitTest', 0, function (done) {
1810        console.info('DeviceKvstoreStartTransactionCallbackCommitTest');
1811        try {
1812            var count = 0;
1813            kvStore.on('dataChange', 0, function (data) {
1814                console.info('DeviceKvstoreStartTransactionCallbackCommitTest 0' + data)
1815                count++;
1816            });
1817            kvStore.startTransaction(function (err, data) {
1818                expect(err == undefined).assertTrue();
1819                let entries = putBatchString(10, 'batch_test_string_key');
1820                kvStore.putBatch(entries, function (err, data) {
1821                    expect(err == undefined).assertTrue();
1822                    let keys = Object.keys(entries).slice(5);
1823                    kvStore.deleteBatch(keys, function (err, data) {
1824                        expect(err == undefined).assertTrue();
1825                        kvStore.commit(async function (err, data) {
1826                            expect(err == undefined).assertTrue();
1827                            await sleep(2000);
1828                            expect(count == 1).assertTrue();
1829                            done();
1830                        });
1831                    });
1832                });
1833            });
1834        } catch (e) {
1835            console.error('DeviceKvstoreStartTransactionCallbackCommitTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1836            expect(null).assertFail();
1837            done();
1838        }
1839    })
1840
1841    /**
1842     * @tc.name DeviceKvstoreStartTransactionCallbackRollbackTest
1843     * @tc.desc Test Js Api DeviceKvStore.startTransaction() with rollback
1844     * @tc.type: FUNC
1845     * @tc.require: issueNumber
1846     */
1847    it('DeviceKvstoreStartTransactionCallbackRollbackTest', 0, function (done) {
1848        try {
1849            var count = 0;
1850            kvStore.on('dataChange', 0, function (data) {
1851                count++;
1852            });
1853            kvStore.startTransaction(function (err, data) {
1854                expect(err == undefined).assertTrue();
1855                let entries = putBatchString(10, 'batch_test_string_key');
1856                kvStore.putBatch(entries, function (err, data) {
1857                    expect(err == undefined).assertTrue();
1858                    let keys = Object.keys(entries).slice(5);
1859                    kvStore.deleteBatch(keys, function (err, data) {
1860                        expect(err == undefined).assertTrue();
1861                        kvStore.rollback(function (err, data) {
1862                            expect(err == undefined).assertTrue();
1863                            sleep(2000);
1864                            expect(count == 0).assertTrue();
1865                            done();
1866                        });
1867                    });
1868                });
1869            });
1870        } catch (e) {
1871            console.error('DeviceKvstoreStartTransactionCallbackRollbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1872            expect(null).assertFail();
1873            done();
1874        }
1875    })
1876
1877    /**
1878     * @tc.name DeviceKvstoreStartTransactionCallbackClosedKVStoreTest
1879     * @tc.desc Test Js Api DeviceKvStore.startTransaction() with closed kvstore
1880     * @tc.type: FUNC
1881     * @tc.require: issueNumber
1882     */
1883    it('DeviceKvstoreStartTransactionCallbackClosedKVStoreTest', 0, function (done) {
1884        try {
1885            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1886                expect(err == undefined).assertTrue();
1887                kvStore.startTransaction(function (err) {
1888                    if (err) {
1889                        expect(err.code == 15100005).assertTrue();
1890                        done();
1891                        return;
1892                    }
1893                    expect(null).assertFail();
1894                    done();
1895                });
1896            });
1897        } catch (e) {
1898            console.error('DeviceKvstoreStartTransactionCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1899            expect(null).assertFail();
1900            done();
1901        }
1902    })
1903
1904    /**
1905     * @tc.name DeviceKvStoreCommitCallbackClosedKVStoreTest
1906     * @tc.desc Test Js Api DeviceKvStore.Commit() with closed kvstore
1907     * @tc.type: FUNC
1908     * @tc.require: issueNumber
1909     */
1910    it('DeviceKvStoreCommitCallbackClosedKVStoreTest', 0, function (done) {
1911        console.info('DeviceKvStoreCommitCallbackClosedKVStoreTest');
1912        try {
1913            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1914                expect(err == undefined).assertTrue();
1915                kvStore.commit(function (err) {
1916                    if (err) {
1917                        expect(err.code == 15100005).assertTrue();
1918                        done();
1919                        return;
1920                    }
1921                    expect(null).assertFail();
1922                    done();
1923                });
1924            });
1925        } catch (e) {
1926            console.error('DeviceKvStoreCommitCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1927            expect(null).assertFail();
1928            done();
1929        }
1930    })
1931
1932    /**
1933     * @tc.name DeviceKvStoreRollbackCallbackClosedKVStoreTest
1934     * @tc.desc Test Js Api DeviceKvStore.Rollback() with closed kvstore
1935     * @tc.type: FUNC
1936     * @tc.require: issueNumber
1937     */
1938    it('DeviceKvStoreRollbackCallbackClosedKVStoreTest', 0, function (done) {
1939        console.info('DeviceKvStoreRollbackCallbackClosedKVStoreTest');
1940        try {
1941            kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
1942                expect(err == undefined).assertTrue();
1943                kvStore.rollback(function (err) {
1944                    if (err) {
1945                        expect(err.code == 15100005).assertTrue();
1946                        done();
1947                        return;
1948                    }
1949                    expect(null).assertFail();
1950                    done();
1951                });
1952            });
1953        } catch (e) {
1954            console.error('DeviceKvStoreRollbackCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1955            expect(null).assertFail();
1956            done();
1957        }
1958    })
1959
1960    /**
1961     * @tc.name DeviceKvStoreEnableSyncCallbackTrueTest
1962     * @tc.desc Test Js Api DeviceKvStore.EnableSync() with mode true
1963     * @tc.type: FUNC
1964     * @tc.require: issueNumber
1965     */
1966    it('DeviceKvStoreEnableSyncCallbackTrueTest', 0, function (done) {
1967        console.info('DeviceKvStoreEnableSyncCallbackTrueTest');
1968        try {
1969            kvStore.enableSync(true, function (err, data) {
1970                if (err) {
1971                    console.info('DeviceKvStoreEnableSyncCallbackTrueTest enableSync fail');
1972                    expect(null).assertFail();
1973                    done();
1974                }
1975                console.info('DeviceKvStoreEnableSyncCallbackTrueTest enableSync success');
1976                expect(err == undefined).assertTrue();
1977                done();
1978            });
1979        } catch (e) {
1980            console.error('DeviceKvStoreEnableSyncCallbackTrueTest fail' + `, error code is ${e.code}, message is ${e.message}`);
1981            expect(null).assertFail();
1982            done();
1983        }
1984    })
1985
1986    /**
1987     * @tc.name DeviceKvStoreEnableSyncCallbackFalseTest
1988     * @tc.desc Test Js Api DeviceKvStore.EnableSync() with mode false
1989     * @tc.type: FUNC
1990     * @tc.require: issueNumber
1991     */
1992    it('DeviceKvStoreEnableSyncCallbackFalseTest', 0, function (done) {
1993        console.info('DeviceKvStoreEnableSyncCallbackFalseTest');
1994        try {
1995            kvStore.enableSync(false, function (err, data) {
1996                if (err) {
1997                    console.info('DeviceKvStoreEnableSyncCallbackFalseTest enableSync fail');
1998                    expect(null).assertFail();
1999                    done();
2000                }
2001                console.info('DeviceKvStoreEnableSyncCallbackFalseTest enableSync success');
2002                expect(err == undefined).assertTrue();
2003                done();
2004            });
2005        } catch (e) {
2006            console.error('DeviceKvStoreEnableSyncCallbackFalseTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2007            expect(null).assertFail();
2008            done();
2009        }
2010    })
2011
2012    /**
2013     * @tc.name DeviceKvStoreEnableSyncCallbackInvalidArgsTest
2014     * @tc.desc Test Js Api DeviceKvStore.EnableSync() with invlid args
2015     * @tc.type: FUNC
2016     * @tc.require: issueNumber
2017     */
2018    it('DeviceKvStoreEnableSyncCallbackInvalidArgsTest', 0, function (done) {
2019        console.info('DeviceKvStoreEnableSyncCallbackInvalidArgsTest');
2020        try {
2021            kvStore.enableSync(function (err, data) {
2022                if (err) {
2023                    console.info('DeviceKvStoreEnableSyncCallbackInvalidArgsTest enableSync fail');
2024                    expect(null).assertFail();
2025                    done();
2026                }
2027                console.info('DeviceKvStoreEnableSyncCallbackInvalidArgsTest enableSync success');
2028                expect(null).assertFail();
2029                done();
2030            });
2031        } catch (e) {
2032            console.error('DeviceKvStoreEnableSyncCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2033            expect(e.code == 401).assertTrue();
2034            done();
2035        }
2036    })
2037
2038    /**
2039     * @tc.name DeviceKvStoreRemoveDeviceDataCallbackClosedKvstoreTest
2040     * @tc.desc Test Js Api DeviceKvStore.RemoveDeviceData() in a closed kvstore
2041     * @tc.type: FUNC
2042     * @tc.require: issueNumber
2043     */
2044    it('DeviceKvStoreRemoveDeviceDataCallbackClosedKvstoreTest', 0, function (done) {
2045        try {
2046            kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) {
2047                expect(err == undefined).assertTrue();
2048                var deviceid = 'no_exist_device_id';
2049                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
2050                    expect(err == undefined).assertTrue();
2051                    kvStore.removeDeviceData(deviceid, function (err) {
2052                        if (err) {
2053                            expect(err.code == 15100005).assertTrue();
2054                            done();
2055                            return;
2056                        }
2057                        expect(null).assertFail();
2058                        done();
2059                    });
2060                });
2061            });
2062        } catch (e) {
2063            console.error('DeviceKvStoreRemoveDeviceDataCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2064            expect(null).assertFail();
2065            done();
2066        }
2067    })
2068
2069    /**
2070     * @tc.name DeviceKvStoreRemoveDeviceDataCallbackInvalidArgsTest
2071     * @tc.desc Test Js Api DeviceKvStore.RemoveDeviceData() with invalid args
2072     * @tc.type: FUNC
2073     * @tc.require: issueNumber
2074     */
2075    it('DeviceKvStoreRemoveDeviceDataCallbackInvalidArgsTest', 0, function (done) {
2076        try {
2077            kvStore.removeDeviceData(function (err) {
2078                if (err) {
2079                    expect(null).assertFail();
2080                    done();
2081                }
2082                expect(null).assertFail();
2083                done();
2084            });
2085        } catch (e) {
2086            console.error('DeviceKvStoreRemoveDeviceDataCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2087            expect(e.code == 401).assertTrue();
2088            done();
2089        }
2090    })
2091
2092    /**
2093     * @tc.name DeviceKvStoreGetResultSetCallbackSucTest
2094     * @tc.desc Test Js Api DeviceKvStore.GetResultSet() successfully
2095     * @tc.type: FUNC
2096     * @tc.require: issueNumber
2097     */
2098    it('DeviceKvStoreGetResultSetCallbackSucTest', 0, function (done) {
2099        console.info('DeviceKvStoreGetResultSetCallbackSucTest');
2100        try {
2101            let resultSet;
2102            let entries = [];
2103            for (var i = 0; i < 10; i++) {
2104                var key = 'batch_test_string_key';
2105                var entry = {
2106                    key: key + i,
2107                    value: {
2108                        type: factory.ValueType.STRING,
2109                        value: 'batch_test_string_value'
2110                    }
2111                }
2112                entries.push(entry);
2113            }
2114            kvStore.putBatch(entries, function (err, data) {
2115                console.info('DeviceKvStoreGetResultSetCallbackSucTest putBatch success');
2116                expect(err == undefined).assertTrue();
2117                kvStore.getResultSet(localDeviceId, 'batch_test_string_key', function (err, result) {
2118                    console.info('DeviceKvStoreGetResultSetCallbackSucTest getResultSet success');
2119                    resultSet = result;
2120                    expect(resultSet.getCount() == 10).assertTrue();
2121                    kvStore.closeResultSet(resultSet, function (err, data) {
2122                        console.info('DeviceKvStoreGetResultSetCallbackSucTest closeResultSet success');
2123                        expect(err == undefined).assertTrue();
2124                        done();
2125                    })
2126                });
2127            });
2128        } catch (e) {
2129            console.error('DeviceKvStoreGetResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2130            expect(null).assertFail();
2131            done();
2132        }
2133    })
2134
2135    /**
2136     * @tc.name DeviceKvStoreGetResultSetCallbackInvalidArgsTest
2137     * @tc.desc Test Js Api DeviceKvStore.GetResultSet() with invalid args
2138     * @tc.type: FUNC
2139     * @tc.require: issueNumber
2140     */
2141    it('DeviceKvStoreGetResultSetCallbackInvalidArgsTest', 0, function (done) {
2142        console.info('DeviceKvStoreGetResultSetCallbackInvalidArgsTest');
2143        try {
2144            let resultSet;
2145            kvStore.getResultSet(function () {
2146                console.info('DeviceKvStoreGetResultSetCallbackInvalidArgsTest getResultSet success');
2147                expect(null).assertFail();
2148                done();
2149            });
2150        } catch (e) {
2151            console.error('DeviceKvStoreGetResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2152            expect(e.code == 401).assertTrue();
2153            done();
2154        }
2155    })
2156
2157    /**
2158     * @tc.name DeviceKvStoreGetResultSetPredicatesCallbackTest
2159     * @tc.desc Test Js Api DeviceKvStore.GetResultSet() with predicates
2160     * @tc.type: FUNC
2161     * @tc.require: issueNumber
2162     */
2163    it('DeviceKvStoreGetResultSetPredicatesCallbackTest', 0, function (done) {
2164        console.log('DeviceKvStoreGetResultSetPredicatesCallbackTest');
2165        try {
2166            let predicates = new dataShare.DataSharePredicates();
2167            kvStore.getResultSet(localDeviceId, predicates, (err) => {
2168                if (err) {
2169                    console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet fail' + err`, error code is ${err.code}, message is ${err.message}`);
2170                    expect(null).assertFail();
2171                    done();
2172                    return;
2173                }
2174                console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet success');
2175                expect(null).assertFail();
2176                done();
2177            });
2178        } catch (e) {
2179            console.info('DeviceKvStoreGetResultSetPredicatesCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2180            expect(e.code == 202).assertTrue();
2181            done();
2182        }
2183    })
2184
2185    /**
2186     * @tc.name DeviceKvStoreGetResultSetQueryCallbackTest
2187     * @tc.desc Test Js Api DeviceKvStore.GetResultSet() with query
2188     * @tc.type: FUNC
2189     * @tc.require: issueNumber
2190     */
2191    it('DeviceKvStoreGetResultSetQueryCallbackTest', 0, function (done) {
2192        try {
2193            let resultSet;
2194            let entries = [];
2195            for (var i = 0; i < 10; i++) {
2196                var key = 'batch_test_string_key';
2197                var entry = {
2198                    key: key + i,
2199                    value: {
2200                        type: factory.ValueType.STRING,
2201                        value: 'batch_test_string_value'
2202                    }
2203                }
2204                entries.push(entry);
2205            }
2206            kvStore.putBatch(entries, function (err, data) {
2207                expect(err == undefined).assertTrue();
2208                let query = new factory.Query();
2209                query.prefixKey("batch_test");
2210                kvStore.getResultSet(localDeviceId, query, function (err, result) {
2211                    resultSet = result;
2212                    expect(resultSet.getCount() == 10).assertTrue();
2213                    kvStore.closeResultSet(resultSet, function (err, data) {
2214                        expect(err == undefined).assertTrue();
2215                        done();
2216                    })
2217                });
2218            });
2219        } catch (e) {
2220            console.error('DeviceKvStoreGetResultSetQueryCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2221            expect(null).assertFail();
2222            done();
2223        }
2224    })
2225
2226    /**
2227     * @tc.name DeviceKvStoreCloseResultSetCallbackSucTest
2228     * @tc.desc Test Js Api DeviceKvStore.CloseResultSet() successfully
2229     * @tc.type: FUNC
2230     * @tc.require: issueNumber
2231     */
2232    it('DeviceKvStoreCloseResultSetCallbackSucTest', 0, function (done) {
2233        console.info('DeviceKvStoreCloseResultSetCallbackSucTest');
2234        try {
2235            let resultSet = null;
2236            kvStore.getResultSet(localDeviceId, 'batch_test_string_key', function (err, result) {
2237                console.info('DeviceKvStoreCloseResultSetCallbackSucTest getResultSet success');
2238                resultSet = result;
2239                kvStore.closeResultSet(resultSet, function (err, data) {
2240                    if (err) {
2241                        console.info('DeviceKvStoreCloseResultSetCallbackSucTest closeResultSet fail');
2242                        expect(null).assertFail();
2243                        done();
2244                        return;
2245                    }
2246                    console.info('DeviceKvStoreCloseResultSetCallbackSucTest closeResultSet success');
2247                    expect(err == undefined).assertTrue();
2248                    done();
2249                });
2250            });
2251        } catch (e) {
2252            console.error('DeviceKvStoreCloseResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2253            expect(null).assertFail();
2254            done();
2255        }
2256    })
2257
2258    /**
2259     * @tc.name DeviceKvStoreCloseResultSetCallbackInvalidArgsTest
2260     * @tc.desc Test Js Api DeviceKvStore.CloseResultSet() with invalid args
2261     * @tc.type: FUNC
2262     * @tc.require: issueNumber
2263     */
2264    it('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest', 0, function (done) {
2265        console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest');
2266        try {
2267            console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest success');
2268            kvStore.closeResultSet(function (err, data) {
2269                if (err) {
2270                    console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest closeResultSet fail');
2271                    expect(null).assertFail();
2272                    done();
2273                    return;
2274                }
2275                console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest closeResultSet success');
2276                expect(null).assertFail();
2277                done();
2278            });
2279        } catch (e) {
2280            console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2281            expect(e.code == 401).assertTrue();
2282            done();
2283        }
2284    })
2285
2286    /**
2287     * @tc.name DeviceKvStoreGetResultSizeCallbackQueryTest
2288     * @tc.desc Test Js Api DeviceKvStoreGetResultSize with query
2289     * @tc.type: FUNC
2290     * @tc.require: issueNumber
2291     */
2292    it('DeviceKvStoreGetResultSizeCallbackQueryTest', 0, function (done) {
2293        try {
2294            let entries = [];
2295            for (var i = 0; i < 10; i++) {
2296                var key = 'batch_test_string_key';
2297                var entry = {
2298                    key: key + i,
2299                    value: {
2300                        type: factory.ValueType.STRING,
2301                        value: 'batch_test_string_value'
2302                    }
2303                }
2304                entries.push(entry);
2305            }
2306            kvStore.putBatch(entries, function (err) {
2307                expect(err == undefined).assertTrue();
2308                var query = new factory.Query();
2309                query.prefixKey("batch_test");
2310                kvStore.getResultSize(localDeviceId, query, function (err, resultSize) {
2311                    expect(err == undefined).assertTrue();
2312                    expect(resultSize == 10).assertTrue();
2313                    done();
2314                });
2315            });
2316        } catch (e) {
2317            console.error('DeviceKvStoreGetResultSizePromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2318            expect(null).assertFail();
2319            done();
2320        }
2321    })
2322
2323    /**
2324     * @tc.name DeviceKvStoreGetResultSizeCallbackInvalidArgsTest
2325     * @tc.desc Test Js Api DeviceKvStoreGetResultSize with invalid args
2326     * @tc.type: FUNC
2327     * @tc.require: issueNumber
2328     */
2329    it('DeviceKvStoreGetResultSizeCallbackInvalidArgsTest', 0, function (done) {
2330        try {
2331            let entries = [];
2332            for (var i = 0; i < 10; i++) {
2333                var key = 'batch_test_string_key';
2334                var entry = {
2335                    key: key + i,
2336                    value: {
2337                        type: factory.ValueType.STRING,
2338                        value: 'batch_test_string_value'
2339                    }
2340                }
2341                entries.push(entry);
2342            }
2343            kvStore.putBatch(entries, function (err) {
2344                expect(err == undefined).assertTrue();
2345                try {
2346                    kvStore.getResultSize(function (err) {
2347                        expect(null).assertFail();
2348                        done();
2349                    });
2350                } catch (e) {
2351                    console.info('DeviceKvStoreGetResultSizeCallbackInvalidArgsTest getResultSize fail' + `, error code is ${e.code}, message is ${e.message}`);
2352                    expect(e.code == 401).assertTrue();
2353                    done();
2354                }
2355            });
2356        } catch (e) {
2357            console.info('DeviceKvStoreGetResultSizeCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2358            expect(e.code == 401).assertTrue();
2359            done();
2360        }
2361    })
2362
2363    /**
2364     * @tc.name DeviceKvStoreGetResultSizeCallbackClosedKVStoreTest
2365     * @tc.desc Test Js Api DeviceKvStoreGetResultSize from a closed kvstore
2366     * @tc.type: FUNC
2367     * @tc.require: issueNumber
2368     */
2369    it('DeviceKvStoreGetResultSizeCallbackClosedKVStoreTest', 0, function (done) {
2370        try {
2371            let entries = [];
2372            for (var i = 0; i < 10; i++) {
2373                var key = 'batch_test_string_key';
2374                var entry = {
2375                    key: key + i,
2376                    value: {
2377                        type: factory.ValueType.STRING,
2378                        value: 'batch_test_string_value'
2379                    }
2380                }
2381                entries.push(entry);
2382            }
2383            kvStore.putBatch(entries, function (err) {
2384                expect(err == undefined).assertTrue();
2385                kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID, function (err) {
2386                    expect(err == undefined).assertTrue();
2387                    var query = new factory.Query();
2388                    query.prefixKey("batch_test");
2389                    kvStore.getResultSize(localDeviceId, query, function (err) {
2390                        if (err) {
2391                            expect(err.code == 15100005).assertTrue();
2392                            done();
2393                            return;
2394                        }
2395                        expect(null).assertFail();
2396                        done();
2397                    });
2398                });
2399            });
2400        } catch (e) {
2401            console.error('DeviceKvStoreGetResultSizeCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2402            expect(null).assertFail();
2403            done();
2404        }
2405    })
2406
2407    /**
2408     * @tc.name DeviceKvStoreGetEntriesCallbackSucTest
2409     * @tc.desc Test Js Api DeviceKvStore.GetEntries() successfully
2410     * @tc.type: FUNC
2411     * @tc.require: issueNumber
2412     */
2413    it('DeviceKvStoreGetEntriesCallbackSucTest', 0, function (done) {
2414        console.info('DeviceKvStoreGetEntriesCallbackSucTest');
2415        try {
2416            var arr = new Uint8Array([21, 31]);
2417            let entries = [];
2418            for (var i = 0; i < 10; i++) {
2419                var key = 'batch_test_bool_key';
2420                var entry = {
2421                    key: key + i,
2422                    value: {
2423                        type: factory.ValueType.BYTE_ARRAY,
2424                        value: arr
2425                    }
2426                }
2427                entries.push(entry);
2428            }
2429            console.info('DeviceKvStoreGetEntriesCallbackSucTest entries: ' + JSON.stringify(entries));
2430            kvStore.putBatch(entries, function (err, data) {
2431                console.info('DeviceKvStoreGetEntriesCallbackSucTest putBatch success');
2432                expect(err == undefined).assertTrue();
2433                var query = new factory.Query();
2434                query.prefixKey("batch_test");
2435                kvStore.getEntries(localDeviceId, query, function (err, entrys) {
2436                    expect(entrys.length == 10).assertTrue();
2437                    expect(entrys[0].value.value.toString() == arr.toString()).assertTrue();
2438                    done();
2439                });
2440            });
2441        } catch (e) {
2442            console.error('DeviceKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`);
2443            expect(null).assertFail();
2444            done();
2445        }
2446    })
2447})
2448