• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index';
17import UDC from '@ohos.data.unifiedDataChannel';
18import UTD from '@ohos.data.uniformTypeDescriptor';
19import image from '@ohos.multimedia.image';
20
21const TEST_BUNDLE_NAME = 'MyBundleName';
22const KEY_TEST_ELEMENT = 'TestKey';
23const VALUE_TEST_ELEMENT = 'TestValue';
24const TEST_ID = 123456;
25const TEST_ABILITY_NAME = 'MyAbilityName';
26const TEST_MODULE = 'MyModule';
27const NUM_2M = 2 * 1024 * 1024;
28const NUM_4M = 4 * 1024 * 1024;
29const LONG_TEST2M = 'a'.repeat(NUM_2M);
30const LONG_TESTOVER2M = 'a'.repeat((NUM_2M + 1));
31
32let U8_ARRAY = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
33const ERROR_PARAMETER = '401';
34const NO_PERMISSION = '201';
35
36describe('UdmfJSTest', function () {
37
38  const optionsValid = { intention: 'DataHub', };
39
40  /**
41   * @tc.name UdmfTextTest
42   * @tc.desc Test Js Api Text testcase
43   * @tc.type: FUNC
44   * @tc.require: issueNumber
45   */
46  it('UdmfTextTest', 0, function () {
47    console.info('UdmfTextTest start');
48    let text = new UDC.Text();
49    text.details = {
50      Key: 'text' + KEY_TEST_ELEMENT,
51      Value: 'text' + VALUE_TEST_ELEMENT,
52    };
53    let unifiedData = new UDC.UnifiedData(text);
54    let records = unifiedData.getRecords();
55    expect(records.length).assertEqual(1);
56    expect(records[0].details.Key).assertEqual('text' + KEY_TEST_ELEMENT);
57    expect(records[0].details.Value).assertEqual('text' + VALUE_TEST_ELEMENT);
58    console.info('UdmfTextTest end');
59  });
60
61  /**
62   * @tc.name UdmfPlainTextTest
63   * @tc.desc Test Js Api PlainText testcase
64   * @tc.type: FUNC
65   * @tc.require: issueNumber
66   */
67  it('UdmfPlainTextTest', 0, function () {
68    console.info('UdmfPlainTextTest start');
69    let plainText = new UDC.PlainText();
70    plainText.details = {
71      Key: 'text' + KEY_TEST_ELEMENT,
72      Value: 'text' + VALUE_TEST_ELEMENT,
73    };
74    plainText.textContent = 'textContent';
75    plainText.abstract = 'abstract';
76    let unifiedData = new UDC.UnifiedData(plainText);
77    let records = unifiedData.getRecords();
78    expect(records.length).assertEqual(1);
79    expect(records[0].details.Key).assertEqual('text' + KEY_TEST_ELEMENT);
80    expect(records[0].details.Value).assertEqual('text' + VALUE_TEST_ELEMENT);
81    expect(records[0].textContent).assertEqual('textContent');
82    expect(records[0].abstract).assertEqual('abstract');
83    console.info('UdmfPlainTextTest end');
84  });
85
86  /**
87   * @tc.name UdmfHyperlinkTest
88   * @tc.desc Test Js Api Hyperlink testcase
89   * @tc.type: FUNC
90   * @tc.require: issueNumber
91   */
92  it('UdmfHyperlinkTest', 0, function () {
93    console.info('UdmfHyperlinkTest start');
94    let link = new UDC.Hyperlink();
95    link.details = {
96      Key: 'link' + KEY_TEST_ELEMENT,
97      Value: 'link' + VALUE_TEST_ELEMENT,
98    };
99    link.url = 'url';
100    link.description = 'description';
101    let unifiedData = new UDC.UnifiedData(link);
102    let records = unifiedData.getRecords();
103    expect(records.length).assertEqual(1);
104    expect(records[0].details.Key).assertEqual('link' + KEY_TEST_ELEMENT);
105    expect(records[0].details.Value).assertEqual('link' + VALUE_TEST_ELEMENT);
106    expect(records[0].url).assertEqual('url');
107    expect(records[0].description).assertEqual('description');
108    console.info('UdmfHyperlinkTest end');
109  });
110
111  /**
112   * @tc.name UdmfHtmlTest
113   * @tc.desc Test Js Api HTML testcase
114   * @tc.type: FUNC
115   * @tc.require: issueNumber
116   */
117  it('UdmfHtmlTest', 0, function () {
118    console.info('UdmfHtmlTest start');
119    let html = new UDC.HTML();
120    html.details = {
121      Key: 'html' + KEY_TEST_ELEMENT,
122      Value: 'html' + VALUE_TEST_ELEMENT,
123    };
124    html.htmlContent = 'htmlContent';
125    html.plainContent = 'plainContent';
126    let unifiedData = new UDC.UnifiedData(html);
127    let records = unifiedData.getRecords();
128    expect(records.length).assertEqual(1);
129    expect(records[0].details.Key).assertEqual('html' + KEY_TEST_ELEMENT);
130    expect(records[0].details.Value).assertEqual('html' + VALUE_TEST_ELEMENT);
131    expect(records[0].htmlContent).assertEqual('htmlContent');
132    expect(records[0].plainContent).assertEqual('plainContent');
133    console.info('UdmfHtmlTest end');
134  });
135
136  /**
137   * @tc.name UdmfFileTest
138   * @tc.desc Test Js Api File testcase
139   * @tc.type: FUNC
140   * @tc.require: issueNumber
141   */
142  it('UdmfFileTest', 0, function () {
143    console.info('UdmfFileTest start');
144    let file = new UDC.File();
145    file.details = {
146      Key: 'file' + KEY_TEST_ELEMENT,
147      Value: 'file' + VALUE_TEST_ELEMENT,
148    };
149    file.uri = 'uri';
150    let unifiedData = new UDC.UnifiedData(file);
151    let records = unifiedData.getRecords();
152    expect(records.length).assertEqual(1);
153    expect(records[0].details.Key).assertEqual('file' + KEY_TEST_ELEMENT);
154    expect(records[0].details.Value).assertEqual('file' + VALUE_TEST_ELEMENT);
155    expect(records[0].uri).assertEqual('uri');
156    console.info('UdmfFileTest end');
157  });
158
159  /**
160   * @tc.name UdmfFolderTest
161   * @tc.desc Test Js Api Folder testcase
162   * @tc.type: FUNC
163   * @tc.require: issueNumber
164   */
165  it('UdmfFolderTest', 0, function () {
166    console.info('UdmfFolderTest start');
167    let folder = new UDC.Folder();
168    folder.details = {
169      Key: 'folder' + KEY_TEST_ELEMENT,
170      Value: 'folder' + VALUE_TEST_ELEMENT,
171    };
172    folder.uri = 'folderUri';
173    let unifiedData = new UDC.UnifiedData(folder);
174    let records = unifiedData.getRecords();
175    expect(records.length).assertEqual(1);
176    expect(records[0].details.Key).assertEqual('folder' + KEY_TEST_ELEMENT);
177    expect(records[0].details.Value).assertEqual('folder' + VALUE_TEST_ELEMENT);
178    expect(records[0].uri).assertEqual('folderUri');
179    console.info('UdmfFolderTest end');
180  });
181
182  /**
183   * @tc.name UdmfImageTest
184   * @tc.desc Test Js Api Image testcase
185   * @tc.type: FUNC
186   * @tc.require: issueNumber
187   */
188  it('UdmfImageTest', 0, function () {
189    console.info('UdmfImageTest start');
190    let image = new UDC.Image();
191    image.details = {
192      Key: 'image' + KEY_TEST_ELEMENT,
193      Value: 'image' + VALUE_TEST_ELEMENT,
194    };
195    image.imageUri = 'imageUri';
196    let unifiedData = new UDC.UnifiedData(image);
197    let records = unifiedData.getRecords();
198    expect(records.length).assertEqual(1);
199    expect(records[0].details.Key).assertEqual('image' + KEY_TEST_ELEMENT);
200    expect(records[0].details.Value).assertEqual('image' + VALUE_TEST_ELEMENT);
201    expect(records[0].imageUri).assertEqual('imageUri');
202    console.info('UdmfImageTest end');
203  });
204
205  /**
206   * @tc.name UdmfVideoTest
207   * @tc.desc Test Js Api Video testcase
208   * @tc.type: FUNC
209   * @tc.require: issueNumber
210   */
211  it('UdmfVideoTest', 0, function () {
212    console.info('UdmfVideoTest start');
213    let video = new UDC.Video();
214    video.details = {
215      Key: 'video' + KEY_TEST_ELEMENT,
216      Value: 'video' + VALUE_TEST_ELEMENT,
217    };
218    video.videoUri = 'videoUri';
219    let unifiedData = new UDC.UnifiedData(video);
220    let records = unifiedData.getRecords();
221    expect(records.length).assertEqual(1);
222    expect(records[0].details.Key).assertEqual('video' + KEY_TEST_ELEMENT);
223    expect(records[0].details.Value).assertEqual('video' + VALUE_TEST_ELEMENT);
224    expect(records[0].videoUri).assertEqual('videoUri');
225    console.info('UdmfVideoTest end');
226  });
227
228  /**
229   * @tc.name UdmfSystemDefinedRecordTest
230   * @tc.desc Test Js Api SystemDefinedRecord testcase
231   * @tc.type: FUNC
232   * @tc.require: issueNumber
233   */
234  it('UdmfSystemDefinedRecordTest', 0, function () {
235    console.info('UdmfSystemDefinedRecordTest start');
236    let systemDefinedRecord = new UDC.SystemDefinedRecord();
237    systemDefinedRecord.details = {
238      recordKey1: 'systemDefinedRecord' + KEY_TEST_ELEMENT,
239      recordKey2: 1,
240      recordKey3: U8_ARRAY,
241    };
242    let unifiedData = new UDC.UnifiedData(systemDefinedRecord);
243    let records = unifiedData.getRecords();
244    expect(records.length).assertEqual(1);
245    expect(records[0].details.recordKey1).assertEqual('systemDefinedRecord' + KEY_TEST_ELEMENT);
246    expect(records[0].details.recordKey2).assertEqual(1);
247    for (let i = 0; i < U8_ARRAY.length; i++) {
248      expect(records[0].details.recordKey3[i]).assertEqual(U8_ARRAY[i]);
249    }
250    console.info('UdmfSystemDefinedRecordTest end');
251  });
252
253  /**
254   * @tc.name UdmfSystemDefinedPixelMapTest
255   * @tc.desc Test Js Api SystemDefinedPixelMap testcase
256   * @tc.type: FUNC
257   * @tc.require: issueNumber
258   */
259  it('UdmfSystemDefinedPixelMapTest', 0, function () {
260    console.info('UdmfSystemDefinedPixelMapTest start');
261    let systemDefinedPixelMap = new UDC.SystemDefinedPixelMap();
262    systemDefinedPixelMap.details = {
263      recordKey1: 'systemDefinedPixelMap' + KEY_TEST_ELEMENT,
264      recordKey2: 1,
265      recordKey3: U8_ARRAY,
266    };
267    systemDefinedPixelMap.rawData = U8_ARRAY;
268    let unifiedData = new UDC.UnifiedData(systemDefinedPixelMap);
269    let records = unifiedData.getRecords();
270    expect(records.length).assertEqual(1);
271    expect(records[0].details.recordKey1).assertEqual('systemDefinedPixelMap' + KEY_TEST_ELEMENT);
272    expect(records[0].details.recordKey2).assertEqual(1);
273    for (let i = 0; i < U8_ARRAY.length; i++) {
274      expect(records[0].details.recordKey3[i]).assertEqual(U8_ARRAY[i]);
275    }
276    for (let i = 0; i < U8_ARRAY.length; i++) {
277      expect(records[0].rawData[i]).assertEqual(U8_ARRAY[i]);
278    }
279    console.info('UdmfSystemDefinedPixelMapTest end');
280  });
281
282  /**
283   * @tc.name UdmfSystemDefinedFormTest
284   * @tc.desc Test Js Api SystemDefinedForm testcase
285   * @tc.type: FUNC
286   * @tc.require: issueNumber
287   */
288  it('UdmfSystemDefinedFormTest', 0, function () {
289    console.info('UdmfSystemDefinedFormTest start');
290    let form = new UDC.SystemDefinedForm();
291    form.formId = TEST_ID;
292    form.formName = 'MyFormName';
293    form.bundleName = TEST_BUNDLE_NAME;
294    form.abilityName = TEST_ABILITY_NAME;
295    form.module = TEST_MODULE;
296    form.details = {
297      formKey1: 1,
298      formKey2: 'form' + VALUE_TEST_ELEMENT,
299      formKey3: U8_ARRAY,
300    };
301    let unifiedData = new UDC.UnifiedData(form);
302    let records = unifiedData.getRecords();
303    expect(records.length).assertEqual(1);
304    expect(records[0].details.formKey1).assertEqual(1);
305    expect(records[0].details.formKey2).assertEqual('form' + VALUE_TEST_ELEMENT);
306    for (let i = 0; i < U8_ARRAY.length; i++) {
307      expect(records[0].details.formKey3[i]).assertEqual(U8_ARRAY[i]);
308    }
309    expect(records[0].formId).assertEqual(TEST_ID);
310    expect(records[0].formName).assertEqual('MyFormName');
311    expect(records[0].bundleName).assertEqual(TEST_BUNDLE_NAME);
312    expect(records[0].abilityName).assertEqual(TEST_ABILITY_NAME);
313    expect(records[0].module).assertEqual(TEST_MODULE);
314    console.info('UdmfSystemDefinedFormTest end');
315  });
316
317  /**
318   * @tc.name UdmfSystemDefinedAppItemTest
319   * @tc.desc Test Js Api SystemDefinedAppItem testcase
320   * @tc.type: FUNC
321   * @tc.require: issueNumber
322   */
323  it('UdmfSystemDefinedAppItemTest', 0, function () {
324    console.info('UdmfSystemDefinedAppItemTest start');
325    let appItem = new UDC.SystemDefinedAppItem();
326    appItem.appId = 'MyAppId';
327    appItem.appName = 'MyAppName';
328    appItem.abilityName = TEST_ABILITY_NAME;
329    appItem.bundleName = TEST_BUNDLE_NAME;
330    appItem.appIconId = 'MyAppIconId';
331    appItem.appLabelId = 'MyAppLabelId';
332    appItem.details = {
333      appItemKey1: 1,
334      appItemKey2: 'appItem' + VALUE_TEST_ELEMENT,
335      appItemKey3: U8_ARRAY,
336    };
337    let unifiedData = new UDC.UnifiedData(appItem);
338    let records = unifiedData.getRecords();
339    expect(records.length).assertEqual(1);
340    expect(records[0].details.appItemKey1).assertEqual(1);
341    expect(records[0].details.appItemKey2).assertEqual('appItem' + VALUE_TEST_ELEMENT);
342    for (let i = 0; i < U8_ARRAY.length; i++) {
343      expect(records[0].details.appItemKey3[i]).assertEqual(U8_ARRAY[i]);
344    }
345    expect(records[0].appId).assertEqual('MyAppId');
346    expect(records[0].appName).assertEqual('MyAppName');
347    expect(records[0].abilityName).assertEqual(TEST_ABILITY_NAME);
348    expect(records[0].bundleName).assertEqual(TEST_BUNDLE_NAME);
349    expect(records[0].appIconId).assertEqual('MyAppIconId');
350    expect(records[0].appLabelId).assertEqual('MyAppLabelId');
351    console.info('UdmfSystemDefinedAppItemTest end');
352  });
353
354  /**
355   * @tc.name UdmfSystemDefinedFormTest
356   * @tc.desc Test Js Api ApplicationDefinedRecord testcase
357   * @tc.type: FUNC
358   * @tc.require: issueNumber
359   */
360  it('UdmfApplicationDefinedRecord', 0, function () {
361    console.info('UdmfApplicationDefinedRecord start');
362    let applicationDefinedRecord = new UDC.ApplicationDefinedRecord();
363    applicationDefinedRecord.applicationDefinedType = 'applicationDefinedType';
364    applicationDefinedRecord.rawData = U8_ARRAY;
365    let unifiedData = new UDC.UnifiedData(applicationDefinedRecord);
366    let records = unifiedData.getRecords();
367    expect(records.length).assertEqual(1);
368    expect(records[0].applicationDefinedType).assertEqual('applicationDefinedType');
369    for (let i = 0; i < U8_ARRAY.length; i++) {
370      expect(records[0].rawData[i]).assertEqual(U8_ARRAY[i]);
371    }
372    console.info('UdmfApplicationDefinedRecord end');
373  });
374
375  /**
376   * @tc.name UdmfAllRecordsTest
377   * @tc.desc Test Js AllRecords testcase
378   * @tc.type: FUNC
379   * @tc.require: issueNumber
380   */
381  it('UdmfAllRecordsTest', 0, function () {
382    console.info('UdmfAllRecordsTest start');
383    let text = new UDC.Text();
384    let unifiedDatas = new UDC.UnifiedData(text);
385    let plainText = new UDC.PlainText();
386    unifiedDatas.addRecord(plainText);
387    let link = new UDC.Hyperlink();
388    unifiedDatas.addRecord(link);
389    let html = new UDC.HTML();
390    unifiedDatas.addRecord(html);
391    let file = new UDC.File();
392    unifiedDatas.addRecord(file);
393    let folder = new UDC.Folder();
394    unifiedDatas.addRecord(folder);
395    let image = new UDC.Image();
396    unifiedDatas.addRecord(image);
397    let video = new UDC.Video();
398    unifiedDatas.addRecord(video);
399    let systemDefinedRecord = new UDC.SystemDefinedRecord();
400    unifiedDatas.addRecord(systemDefinedRecord);
401    let systemDefinedPixelMap = new UDC.SystemDefinedPixelMap();
402    unifiedDatas.addRecord(systemDefinedPixelMap);
403    let form = new UDC.SystemDefinedForm();
404    unifiedDatas.addRecord(form);
405    let appItem = new UDC.SystemDefinedAppItem();
406    unifiedDatas.addRecord(appItem);
407    let applicationDefinedRecord = new UDC.ApplicationDefinedRecord();
408    unifiedDatas.addRecord(applicationDefinedRecord);
409    let records = unifiedDatas.getRecords();
410    expect(records.length).assertEqual(13);
411    expect(records[0].getType()).assertEqual(UTD.UniformDataType.TEXT);
412    expect(records[1].getType()).assertEqual(UTD.UniformDataType.PLAIN_TEXT);
413    expect(records[2].getType()).assertEqual(UTD.UniformDataType.HYPERLINK);
414    expect(records[3].getType()).assertEqual(UTD.UniformDataType.HTML);
415    expect(records[4].getType()).assertEqual(UTD.UniformDataType.FILE);
416    expect(records[5].getType()).assertEqual(UTD.UniformDataType.FOLDER);
417    expect(records[6].getType()).assertEqual(UTD.UniformDataType.IMAGE);
418    expect(records[7].getType()).assertEqual(UTD.UniformDataType.VIDEO);
419    expect(records[9].getType()).assertEqual(UTD.UniformDataType.OPENHARMONY_PIXEL_MAP);
420    expect(records[10].getType()).assertEqual(UTD.UniformDataType.OPENHARMONY_FORM);
421    expect(records[11].getType()).assertEqual(UTD.UniformDataType.OPENHARMONY_APP_ITEM);
422    console.info('UdmfAllRecordsTest end');
423  });
424
425  /**
426   * @tc.name UdmfText2MPlainText
427   * @tc.desc PlainText 2MB
428   * @tc.type: FUNC
429   * @tc.require: issueNumber
430   */
431  it('UdmfText2MPlainText', 0, async function (done) {
432    const TAG = 'UdmfText2MPlainText:';
433    console.info(TAG, 'start');
434    try {
435      let plainText = new UDC.PlainText();
436      plainText.textContent = LONG_TEST2M;
437      let unifiedData = new UDC.UnifiedData(plainText);
438      UDC.insertData(optionsValid, unifiedData).then((data) => {
439        console.info(TAG, `insert success. The key: ${data}`);
440        let options = { key: data };
441        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
442        UDC.queryData(options).then((data) => {
443          console.info(TAG, 'query success.');
444          expect(data.length).assertEqual(1);
445          expect(data[0].getRecords()[0].textContent).assertEqual(LONG_TEST2M);
446          UDC.deleteData(options).then((data) => {
447            console.info(TAG, 'delete success.');
448            expect(data.length).assertEqual(1);
449            done();
450          }).catch(() => {
451            console.error(TAG, 'Unreachable code!');
452            expect(null).assertFail();
453            done();
454          });
455        }).catch(() => {
456          console.error(TAG, 'Unreachable code!');
457          expect(null).assertFail();
458          done();
459        });
460      }).catch(() => {
461        console.error(TAG, 'Unreachable code!');
462        expect(null).assertFail();
463        done();
464      });
465    } catch (e) {
466      console.error(TAG, 'Unreachable code!');
467      expect(null).assertFail();
468      done();
469    }
470    console.info(TAG, 'end');
471  });
472
473  /**
474   * @tc.name UdmfTextOver2MTest
475   * @tc.desc Test Over 2MB
476   * @tc.type: FUNC
477   * @tc.require: issueNumber
478   */
479  it('UdmfTextOver2MTest', 0, async function (done) {
480    const TAG = 'UdmfTextOver2MTest:';
481    console.info(TAG, 'start');
482    try {
483      let text = new UDC.Text();
484      text.details = {
485        title: '',
486        content: LONG_TESTOVER2M,
487      };
488      let unifiedData = new UDC.UnifiedData(text);
489      UDC.insertData(optionsValid, unifiedData).then((data) => {
490        console.info(TAG, `insert success. The key: ${data}`);
491        let options = { key: data };
492        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
493        UDC.queryData(options).then((data) => {
494          console.info(TAG, 'query success.');
495          expect(data.length).assertEqual(1);
496          expect(data[0].getRecords()[0].details.content).assertEqual(LONG_TESTOVER2M);
497          UDC.deleteData(options).then((data) => {
498            console.info(TAG, 'delete success.');
499            expect(data.length).assertEqual(1);
500            done();
501          }).catch(() => {
502            console.error(TAG, 'Unreachable code!');
503            expect(null).assertFail();
504            done();
505          });
506        }).catch(() => {
507          console.error(TAG, 'Unreachable code!');
508          expect(null).assertFail();
509          done();
510        });
511      }).catch(() => {
512        console.error(TAG, 'Unreachable code!');
513        expect(null).assertFail();
514        done();
515      });
516    } catch (e) {
517      console.error(TAG, 'Unreachable code!');
518      expect(null).assertFail();
519      done();
520    }
521    console.info(TAG, 'end');
522  });
523
524  /**
525   * @tc.name UdmfTextOver2MPlainText
526   * @tc.desc PlainText Over 2MB
527   * @tc.type: FUNC
528   * @tc.require: issueNumber
529   */
530  it('UdmfTextOver2MPlainText', 0, async function (done) {
531    const TAG = 'UdmfTextOver2MPlainText:';
532    console.info(TAG, 'start');
533    try {
534      let plainText = new UDC.PlainText();
535      plainText.textContent = LONG_TESTOVER2M;
536      let unifiedData = new UDC.UnifiedData(plainText);
537      UDC.insertData(optionsValid, unifiedData).then((data) => {
538        console.info(TAG, `insert success. The key: ${data}`);
539        let options = { key: data };
540        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
541        UDC.queryData(options).then((data) => {
542          console.info(TAG, 'query success.');
543          expect(data.length).assertEqual(1);
544          expect(data[0].getRecords()[0].textContent).assertEqual(LONG_TESTOVER2M);
545          UDC.deleteData(options).then((data) => {
546            console.info(TAG, 'delete success.');
547            expect(data.length).assertEqual(1);
548            done();
549          }).catch(() => {
550            console.error(TAG, 'Unreachable code!');
551            expect(null).assertFail();
552            done();
553          });
554        }).catch(() => {
555          console.error(TAG, 'Unreachable code!');
556          expect(null).assertFail();
557          done();
558        });
559      }).catch(() => {
560        console.error(TAG, 'Unreachable code!');
561        expect(null).assertFail();
562        done();
563      });
564    } catch (e) {
565      console.error(TAG, 'Unreachable code!');
566      expect(null).assertFail();
567      done();
568    }
569    console.info(TAG, 'end');
570  });
571
572  /**
573   * @tc.name UdmfTextOver2MHyperlink
574   * @tc.desc Hyperlink Over 2MB
575   * @tc.type: FUNC
576   * @tc.require: issueNumber
577   */
578  it('UdmfTextOver2MHyperlink', 0, async function (done) {
579    const TAG = 'UdmfTextOver2MHyperlink:';
580    console.info(TAG, 'start');
581    try {
582      let link = new UDC.Hyperlink();
583      link.url = LONG_TESTOVER2M;
584      let unifiedData = new UDC.UnifiedData(link);
585      UDC.insertData(optionsValid, unifiedData).then((data) => {
586        console.info(TAG, `insert success. The key: ${data}`);
587        let options = { key: data };
588        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
589        UDC.queryData(options).then((data) => {
590          console.info(TAG, 'query success.');
591          expect(data.length).assertEqual(1);
592          expect(data[0].getRecords()[0].url).assertEqual(LONG_TESTOVER2M);
593          UDC.deleteData(options).then((data) => {
594            console.info(TAG, 'delete success.');
595            expect(data.length).assertEqual(1);
596            done();
597          }).catch(() => {
598            console.error(TAG, 'Unreachable code!');
599            expect(null).assertFail();
600            done();
601          });
602        }).catch(() => {
603          console.error(TAG, 'Unreachable code!');
604          expect(null).assertFail();
605          done();
606        });
607      }).catch(() => {
608        console.error(TAG, 'Unreachable code!');
609        expect(null).assertFail();
610        done();
611      });
612    } catch (e) {
613      console.error(TAG, 'Unreachable code!');
614      expect(null).assertFail();
615      done();
616    }
617    console.info(TAG, 'end');
618  });
619
620  /**
621   * @tc.name UdmfTextOver2MHTML
622   * @tc.desc HTML Over 2MB
623   * @tc.type: FUNC
624   * @tc.require: issueNumber
625   */
626  it('UdmfTextOver2MHTML', 0, async function (done) {
627    const TAG = 'UdmfTextOver2MHTML:';
628    console.info(TAG, 'start');
629    try {
630      let html = new UDC.HTML();
631      html.htmlContent = LONG_TESTOVER2M;
632      let unifiedData = new UDC.UnifiedData(html);
633      UDC.insertData(optionsValid, unifiedData).then((data) => {
634        console.info(TAG, `insert success. The key: ${data}`);
635        let options = { key: data };
636        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
637        UDC.queryData(options).then((data) => {
638          console.info(TAG, 'query success.');
639          expect(data.length).assertEqual(1);
640          expect(data[0].getRecords()[0].htmlContent).assertEqual(LONG_TESTOVER2M);
641          UDC.deleteData(options).then((data) => {
642            console.info(TAG, 'delete success.');
643            expect(data.length).assertEqual(1);
644            done();
645          }).catch(() => {
646            console.error(TAG, 'Unreachable code!');
647            expect(null).assertFail();
648            done();
649          });
650        }).catch(() => {
651          console.error(TAG, 'Unreachable code!');
652          expect(null).assertFail();
653          done();
654        });
655      }).catch(() => {
656        console.error(TAG, 'Unreachable code!');
657        expect(null).assertFail();
658        done();
659      });
660    } catch (e) {
661      console.error(TAG, 'Unreachable code!');
662      expect(null).assertFail();
663      done();
664    }
665    console.info(TAG, 'end');
666  });
667
668  /**
669   * @tc.name UdmfTextOver2MSystemDefinedRecord
670   * @tc.desc SystemDefinedRecord Over 2MB
671   * @tc.type: FUNC
672   * @tc.require: issueNumber
673   */
674  it('UdmfTextOver2MSystemDefinedRecord', 0, async function (done) {
675    const TAG = 'UdmfTextOver2MSystemDefinedRecord:';
676    console.info(TAG, 'start');
677    try {
678      let systemDefinedRecord = new UDC.SystemDefinedRecord();
679      systemDefinedRecord.details = {
680        title: '',
681        content: LONG_TESTOVER2M
682      };
683      let unifiedData = new UDC.UnifiedData(systemDefinedRecord);
684      UDC.insertData(optionsValid, unifiedData).then((data) => {
685        console.info(TAG, `insert success. The key: ${data}`);
686        let options = { key: data };
687        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
688        UDC.queryData(options).then((data) => {
689          console.info(TAG, 'query success.');
690          expect(data.length).assertEqual(1);
691          expect(data[0].getRecords()[0].details.content).assertEqual(LONG_TESTOVER2M);
692          UDC.deleteData(options).then((data) => {
693            console.info(TAG, 'delete success.');
694            expect(data.length).assertEqual(1);
695            done();
696          }).catch(() => {
697            console.error(TAG, 'Unreachable code!');
698            expect(null).assertFail();
699            done();
700          });
701        }).catch(() => {
702          console.error(TAG, 'Unreachable code!');
703          expect(null).assertFail();
704          done();
705        });
706      }).catch(() => {
707        console.error(TAG, 'Unreachable code!');
708        expect(null).assertFail();
709        done();
710      });
711    } catch (e) {
712      console.error(TAG, 'Unreachable code!');
713      expect(null).assertFail();
714      done();
715    }
716    console.info(TAG, 'end');
717  });
718
719  /**
720   * @tc.name UdmfTextOver2MSystemDefinedForm
721   * @tc.desc SystemDefinedForm Over 2MB
722   * @tc.type: FUNC
723   * @tc.require: issueNumber
724   */
725  it('UdmfTextOver2MSystemDefinedForm', 0, async function (done) {
726    const TAG = 'UdmfTextOver2MSystemDefinedForm:';
727    console.info(TAG, 'start');
728    try {
729      let systemDefinedForm = new UDC.SystemDefinedForm();
730      systemDefinedForm.formId = 123;
731      systemDefinedForm.formName = '1';
732      systemDefinedForm.bundleName = 'MyBundleName';
733      systemDefinedForm.abilityName = 'abilityName';
734      systemDefinedForm.module = LONG_TESTOVER2M;
735      let unifiedData = new UDC.UnifiedData(systemDefinedForm);
736      UDC.insertData(optionsValid, unifiedData).then((data) => {
737        console.info(TAG, `insert success. The key: ${data}`);
738        let options = { key: data };
739        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
740        UDC.queryData(options).then((data) => {
741          console.info(TAG, 'query success.');
742          expect(data.length).assertEqual(1);
743          console.info(TAG, 'formId= ' + data[0].getRecords()[0].formId);
744          console.info(TAG, 'formName= ' + data[0].getRecords()[0].formName);
745          console.info(TAG, 'bundleName= ' + data[0].getRecords()[0].bundleName);
746          console.info(TAG, 'abilityName= ' + data[0].getRecords()[0].abilityName);
747          expect(data[0].getRecords()[0].module).assertEqual(LONG_TESTOVER2M);
748          UDC.deleteData(options).then((data) => {
749            console.info(TAG, 'delete success.');
750            expect(data.length).assertEqual(1);
751            done();
752          }).catch(() => {
753            console.error(TAG, 'Unreachable code!');
754            expect(null).assertFail();
755            done();
756          });
757        }).catch(() => {
758          console.error(TAG, 'Unreachable code!');
759          expect(null).assertFail();
760          done();
761        });
762      }).catch(() => {
763        console.error(TAG, 'Unreachable code!');
764        expect(null).assertFail();
765        done();
766      });
767    } catch (e) {
768      console.error(TAG, 'Unreachable code!');
769      expect(null).assertFail();
770      done();
771    }
772    console.info(TAG, 'end');
773  });
774
775  /**
776   * @tc.name UdmfTextOver2MSystemDefinedAppItem
777   * @tc.desc SystemDefinedAppItem Over 2MB
778   * @tc.type: FUNC
779   * @tc.require: issueNumber
780   */
781  it('UdmfTextOver2MSystemDefinedAppItem', 0, async function (done) {
782    const TAG = 'UdmfTextOver2MSystemDefinedAppItem:';
783    console.info(TAG, 'start');
784    try {
785      let systemDefinedAppItem = new UDC.SystemDefinedAppItem();
786      systemDefinedAppItem.appId = '1';
787      systemDefinedAppItem.appName = '2';
788      systemDefinedAppItem.appIconId = '3';
789      systemDefinedAppItem.appLabelId = '4';
790      systemDefinedAppItem.bundleName = '5';
791      systemDefinedAppItem.abilityName = LONG_TESTOVER2M;
792      let unifiedData = new UDC.UnifiedData(systemDefinedAppItem);
793      UDC.insertData(optionsValid, unifiedData).then((data) => {
794        console.info(TAG, `insert success. The key: ${data}`);
795        let options = { key: data };
796        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
797        UDC.queryData(options).then((data) => {
798          console.info(TAG, 'query success.');
799          expect(data.length).assertEqual(1);
800          console.info(TAG, 'appId= ' + data[0].getRecords()[0].appId);
801          console.info(TAG, 'appName= ' + data[0].getRecords()[0].appName);
802          console.info(TAG, 'appIconId= ' + data[0].getRecords()[0].appIconId);
803          console.info(TAG, 'appLabelId= ' + data[0].getRecords()[0].appLabelId);
804          console.info(TAG, 'bundleName= ' + data[0].getRecords()[0].bundleName);
805          expect(data[0].getRecords()[0].abilityName).assertEqual(LONG_TESTOVER2M);
806          UDC.deleteData(options).then((data) => {
807            console.info(TAG, 'delete success.');
808            expect(data.length).assertEqual(1);
809            done();
810          }).catch(() => {
811            console.error(TAG, 'Unreachable code!');
812            expect(null).assertFail();
813            done();
814          });
815        }).catch(() => {
816          console.error(TAG, 'Unreachable code!');
817          expect(null).assertFail();
818          done();
819        });
820      }).catch(() => {
821        console.error(TAG, 'Unreachable code!');
822        expect(null).assertFail();
823        done();
824      });
825    } catch (e) {
826      console.error(TAG, 'Unreachable code!');
827      expect(null).assertFail();
828      done();
829    }
830    console.info(TAG, 'end');
831  });
832
833  /**
834   * @tc.name UdmfTextOver2MSystemDefinedPixelMap
835   * @tc.desc SystemDefinedPixelMap Over 2MB
836   * @tc.type: FUNC
837   * @tc.require: issueNumber
838   */
839  it('UdmfTextOver2MSystemDefinedPixelMap', 0, async function (done) {
840    const TAG = 'UdmfTextOver2MSystemDefinedPixelMap:';
841    console.info(TAG, 'start');
842    try {
843      let text = new UDC.SystemDefinedPixelMap();
844      let longU8ArrayData = new Uint8Array(NUM_4M);
845      longU8ArrayData.fill(0);
846      text.rawData = longU8ArrayData;
847      text.details = {
848        recordKey1: 'systemDefinedPixelMap' + KEY_TEST_ELEMENT,
849        recordKey2: U8_ARRAY,
850      };
851      let unifiedData = new UDC.UnifiedData(text);
852      UDC.insertData(optionsValid, unifiedData).then((data) => {
853        console.info(TAG, `insert success. The key: ${data}`);
854        let options = { key: data };
855        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
856        UDC.queryData(options).then((data) => {
857          console.info(TAG, 'query success.');
858          expect(data.length).assertEqual(1);
859          let records = data[0].getRecords();
860          expect(records.length).assertEqual(1);
861          expect(records[0].details.recordKey1).assertEqual('systemDefinedPixelMap' + KEY_TEST_ELEMENT);
862          for (let i = 0; i < U8_ARRAY.length; i++) {
863            expect(records[0].details.recordKey2[i]).assertEqual(U8_ARRAY[i]);
864          }
865          expect(records[0].rawData.toString()).assertEqual(longU8ArrayData.toString());
866          UDC.deleteData(options).then((data) => {
867            console.info(TAG, 'delete success.');
868            expect(data.length).assertEqual(1);
869            done();
870          }).catch(() => {
871            console.error(TAG, 'Unreachable code!');
872            expect(null).assertFail();
873            done();
874          });
875        }).catch(() => {
876          console.error(TAG, 'Unreachable code!');
877          expect(null).assertFail();
878          done();
879        });
880      }).catch(() => {
881        console.error(TAG, 'Unreachable code!');
882        expect(null).assertFail();
883        done();
884      });
885    } catch (e) {
886      console.error(TAG, 'Unreachable code!');
887      expect(null).assertFail();
888      done();
889    }
890    console.info(TAG, 'end');
891  });
892
893  /**
894   * @tc.name UdmfTextOver2MApplicationDefinedRecord
895   * @tc.desc ApplicationDefinedRecord Over 2MB
896   * @tc.type: FUNC
897   * @tc.require: issueNumber
898   */
899  it('UdmfTextOver2MApplicationDefinedRecord', 0, async function (done) {
900    const TAG = 'UdmfTextOver2MApplicationDefinedRecord:';
901    console.info(TAG, 'start');
902    try {
903      let text = new UDC.ApplicationDefinedRecord();
904      text.applicationDefinedType = '1';
905      text.rawData = new Uint8Array(NUM_4M);
906      let unifiedData = new UDC.UnifiedData(text);
907      UDC.insertData(optionsValid, unifiedData).then((data) => {
908        console.info(TAG, `insert success. The key: ${data}`);
909        let options = { key: data };
910        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
911        UDC.queryData(options).then((data) => {
912          console.info(TAG, 'query success.');
913          expect(data.length).assertEqual(1);
914          UDC.deleteData(options).then((data) => {
915            console.info(TAG, 'delete success.');
916            expect(data.length).assertEqual(1);
917            done();
918          }).catch(() => {
919            console.error(TAG, 'Unreachable code!');
920            expect(null).assertFail();
921            done();
922          });
923        }).catch(() => {
924          console.error(TAG, 'Unreachable code!');
925          expect(null).assertFail();
926          done();
927        });
928      }).catch(() => {
929        console.error(TAG, 'Unreachable code!');
930        expect(null).assertFail();
931        done();
932      });
933    } catch (e) {
934      console.error(TAG, 'Unreachable code!');
935      expect(null).assertFail();
936      done();
937    }
938    console.info(TAG, 'end');
939  });
940
941  /**
942   * @tc.name UdmfText4M
943   * @tc.desc UdmfText4M 4MB
944   * @tc.type: FUNC
945   * @tc.require: issueNumber
946   */
947  it('UdmfText4M', 0, async function (done) {
948    const TAG = 'UdmfText4M:';
949    console.info(TAG, 'start');
950    try {
951      let text = new UDC.PlainText();
952      text.textContent = LONG_TEST2M;
953      let unifiedData = new UDC.UnifiedData(text);
954      let html = new UDC.HTML();
955      html.htmlContent = LONG_TEST2M;
956      unifiedData.addRecord(html);
957      UDC.insertData(optionsValid, unifiedData).then((data) => {
958        console.info(TAG, `insert success. The key: ${data}`);
959        let options = { key: data };
960        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
961        UDC.queryData(options).then((data) => {
962          console.info(TAG, 'query success.');
963          expect(data.length).assertEqual(1);
964          let records = data[0].getRecords();
965          console.info(TAG, `records.length = ${records.length}.`);
966          console.info(TAG, `records[0] = ${records[0].textContent === LONG_TEST2M}.`);
967          console.info(TAG, `records[1] = ${records[1].htmlContent === LONG_TEST2M}.`);
968          console.info(TAG, `records[0].getType() = ${records[0].getType()}.`);
969          console.info(TAG, `records[1].getType() = ${records[1].getType()}.`);
970          console.info(TAG, `records[0].getType() = ${records[0].getType() === UTD.UniformDataType.PLAIN_TEXT}.`);
971          console.info(TAG, `records[1].getType() = ${records[1].getType() === UTD.UniformDataType.HTML}.`);
972          expect(records[0].textContent).assertEqual(LONG_TEST2M);
973          expect(records[1].htmlContent).assertEqual(LONG_TEST2M);
974          UDC.deleteData(options).then((data) => {
975            console.info(TAG, 'delete success.');
976            expect(data.length).assertEqual(1);
977            done();
978          }).catch(() => {
979            console.error(TAG, 'Unreachable code!');
980            expect(null).assertFail();
981            done();
982          });
983        }).catch(() => {
984          console.error(TAG, 'Unreachable code!');
985          expect(null).assertFail();
986          done();
987        });
988      }).catch(() => {
989        console.error(TAG, 'Unreachable code!');
990        expect(null).assertFail();
991        done();
992      });
993    } catch (e) {
994      console.error(TAG, 'Unreachable code!');
995      expect(null).assertFail();
996      done();
997    }
998    console.info(TAG, 'end');
999  });
1000
1001  /**
1002   * @tc.name UnifiedDataPropertiesTest001
1003   * @tc.desc Test Js UnifiedDataProperties testcase
1004   * @tc.type: FUNC
1005   * @tc.require:
1006   */
1007  it('UnifiedDataPropertiesTest001', 0, function () {
1008    const TAG = 'UnifiedDataPropertiesTest001';
1009    console.info(TAG, 'start');
1010    let text = new UDC.Text();
1011    let unifiedDatas = new UDC.UnifiedData();
1012    unifiedDatas.addRecord(text);
1013    let properties = unifiedDatas.properties;
1014    expect(typeof properties).assertEqual('object');
1015    expect(typeof properties.extras).assertEqual('object');
1016    expect(typeof properties.tag).assertEqual('string');
1017    expect(typeof properties.timestamp).assertEqual('object');
1018    expect(typeof properties.shareOptions).assertEqual('number');
1019    expect(typeof properties.getDelayData).assertEqual('undefined');
1020  });
1021
1022  /**
1023   * @tc.name UnifiedDataPropertiesTest002
1024   * @tc.desc Test Js UnifiedDataProperties testcase
1025   * @tc.type: FUNC
1026   * @tc.require:
1027   */
1028  it('UnifiedDataPropertiesTest002', 0, function () {
1029    const TAG = 'UnifiedDataPropertiesTest002';
1030    console.info(TAG, 'start');
1031    let text = new UDC.Text();
1032    let unifiedData = new UDC.UnifiedData(text);
1033    let properties = new UDC.UnifiedDataProperties();
1034
1035    expect(properties.shareOptions).assertEqual(UDC.ShareOptions.CROSS_APP);
1036    properties.shareOptions = UDC.ShareOptions.IN_APP;
1037    unifiedData.properties = properties;
1038    expect(unifiedData.properties.shareOptions).assertEqual(UDC.ShareOptions.IN_APP);
1039    unifiedData.properties.shareOptions = UDC.ShareOptions.CROSS_APP;
1040    expect(unifiedData.properties.shareOptions).assertEqual(UDC.ShareOptions.CROSS_APP);
1041
1042    expect(unifiedData.properties.tag).assertEqual('');
1043    unifiedData.properties.tag = 'DataTag';
1044    expect(unifiedData.properties.tag).assertEqual('DataTag');
1045
1046    expect(Object.keys(unifiedData.properties.extras).length).assertEqual(0);
1047    let person = {fname: 'John', lname: 'Doe', age: 25};
1048    unifiedData.properties.extras = person;
1049    expect(Object.keys(unifiedData.properties.extras).length).assertEqual(3);
1050    expect(unifiedData.properties.extras.fname).assertEqual(person.fname);
1051  });
1052
1053  /**
1054   * @tc.name UnifiedDataPropertiesTest003
1055   * @tc.desc Test Js UnifiedDataProperties testcase
1056   * @tc.type: FUNC
1057   * @tc.require:
1058   */
1059  it('UnifiedDataPropertiesTest003', 0, function () {
1060    const TAG = 'UnifiedDataPropertiesTest003';
1061    console.info(TAG, 'start');
1062    let text = new UDC.Text();
1063    let unifiedData = new UDC.UnifiedData(text);
1064
1065    function func(inputStr) {
1066      console.info(TAG, 'execute func');
1067      let text = new UDC.Text();
1068      text.details = {
1069        Key: inputStr + KEY_TEST_ELEMENT,
1070        Value: inputStr + VALUE_TEST_ELEMENT,
1071      };
1072      let data = new UDC.UnifiedData(text);
1073      data.properties.tag = 'FileTag';
1074      return data;
1075    }
1076    unifiedData.properties.getDelayData = func;
1077    const data = unifiedData.properties.getDelayData('inputTest');
1078    let records = data.getRecords();
1079    expect(records.length).assertEqual(1);
1080    expect(records[0].details.Key).assertEqual('inputTest' + KEY_TEST_ELEMENT);
1081    expect(records[0].details.Value).assertEqual('inputTest' + VALUE_TEST_ELEMENT);
1082    expect(data.properties.tag).assertEqual('FileTag');
1083  });
1084
1085  /**
1086   * @tc.name UnifiedDataHasType
1087   * @tc.desc Test Js UnifiedDataProperties testcase
1088   * @tc.type: FUNC
1089   * @tc.require:
1090   */
1091  it('UnifiedDataHasType', 0, function () {
1092    const TAG = 'UnifiedDataHasType';
1093    console.info(TAG, 'start');
1094    const textType = 'general.text';
1095    const plaintextType = 'general.plain-text';
1096    const htmlType = 'general.html';
1097
1098    let text = new UDC.Text();
1099    let systemDefinedValue = 'systemDefinedValue';
1100    let hyperlinkValue = 'hyperlinkValue';
1101    text.addEntry(UTD.UniformDataType.HYPERLINK, hyperlinkValue);
1102    text.addEntry('openharmony.app-item', systemDefinedValue);
1103    let unifiedData = new UDC.UnifiedData(text);
1104    expect(unifiedData.hasType(textType)).assertEqual(true);
1105    expect(unifiedData.hasType(htmlType)).assertEqual(false);
1106    expect(unifiedData.hasType(UTD.UniformDataType.HYPERLINK)).assertEqual(true);
1107    expect(unifiedData.hasType('openharmony.app-item')).assertEqual(true);
1108    let types = unifiedData.getTypes();
1109    expect(types.length).assertEqual(3);
1110    expect(types.includes(textType)).assertTrue();
1111    expect(types.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1112    expect(types.includes('openharmony.app-item')).assertTrue();
1113
1114    let html = new UDC.HTML();
1115    unifiedData.addRecord(html);
1116    expect(unifiedData.hasType(textType)).assertEqual(true);
1117    expect(unifiedData.hasType(htmlType)).assertEqual(true);
1118    expect(unifiedData.hasType(plaintextType)).assertEqual(false);
1119    types = unifiedData.getTypes();
1120    expect(types.length).assertEqual(4);
1121    expect(types.includes(textType)).assertTrue();
1122    expect(types.includes(htmlType)).assertTrue();
1123    expect(types.includes(textType)).assertTrue();
1124    expect(types.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1125    expect(types.includes('openharmony.app-item')).assertTrue();
1126  });
1127
1128  /**
1129   * @tc.name UnifiedRecordConstruct001
1130   * @tc.desc Test Js UnifiedRecord testcase
1131   * @tc.type: FUNC
1132   * @tc.require:
1133   */
1134  it('UnifiedRecordConstruct001', 0, async function () {
1135    const TAG = 'UnifiedRecordConstruct001';
1136    console.info(TAG, 'start');
1137
1138    const dataUri = new ArrayBuffer(256);
1139    let view1 = new Uint32Array(dataUri);
1140    view1[0] = 123456;
1141    let record1 = new UDC.UnifiedRecord('general.message', dataUri);
1142    const data1 = record1.getValue();
1143    expect(data1.byteLength).assertEqual(256);
1144    let view2 = new Uint32Array(data1);
1145    expect(view1[0]).assertEqual(view2[0]);
1146
1147    let record2 = new UDC.UnifiedRecord('general.message', 'xxx.com');
1148    const data2 = record2.getValue();
1149    expect(data2).assertEqual('xxx.com');
1150
1151    let record3 = new UDC.UnifiedRecord('general.message', 8899);
1152    const data3 = record3.getValue();
1153    expect(data3).assertEqual(8899);
1154
1155    let record4 = new UDC.UnifiedRecord('general.message', 8899.7788);
1156    const data4 = record4.getValue();
1157    expect(data4).assertEqual(8899.7788);
1158
1159    const buffer = new ArrayBuffer(128);
1160    const opt = {
1161      size: { height: 5, width: 5 },
1162      pixelFormat: 3,
1163      editable: true,
1164      alphaType: 1,
1165      scaleMode: 1,
1166    };
1167    const pixelMap = await image.createPixelMap(buffer, opt);
1168    let record5 = new UDC.UnifiedRecord('openharmony.pixel-map', pixelMap);
1169    const data5 = record5.getValue();
1170    data5.getImageInfo().then((imageInfo)=>{
1171      expect(imageInfo.size.height).assertEqual(opt.size.height);
1172      expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
1173    });
1174
1175    const wantText = {
1176      bundleName: 'com.example.myapplication1',
1177      abilityName: 'com.example.myapplication1.MainAbility',
1178    };
1179    let record6 = new UDC.UnifiedRecord('openharmony.want', wantText);
1180    const data6 = record6.getValue();
1181    expect(data6.bundleName).assertEqual(wantText.bundleName);
1182    expect(data6.abilityName).assertEqual(wantText.abilityName);
1183  });
1184
1185  /**
1186   * @tc.name UnifiedRecordConstruct002
1187   * @tc.desc Test Js UnifiedData GetRecords testcase
1188   * @tc.type: FUNC
1189   * @tc.require:
1190   */
1191  it('UnifiedRecordConstruct002', 0, async function () {
1192    const TAG = 'UnifiedRecordConstruct002';
1193    console.info(TAG, 'start');
1194
1195    const dataUri = new ArrayBuffer(256);
1196    let view1 = new Uint32Array(dataUri);
1197    view1[0] = 123456;
1198    let record1 = new UDC.UnifiedRecord('general.message', dataUri);
1199
1200    let unifiedData = new UDC.UnifiedData(record1);
1201    let records = unifiedData.getRecords();
1202    expect(records.length).assertEqual(1);
1203
1204    let record2 = new UDC.UnifiedRecord('general.message', 'xxx.com');
1205    unifiedData.addRecord(record2);
1206    let record3 = new UDC.UnifiedRecord('general.message', 8899);
1207    unifiedData.addRecord(record3);
1208    let record4 = new UDC.UnifiedRecord('general.message', 8899.7788);
1209    unifiedData.addRecord(record4);
1210    const buffer = new ArrayBuffer(128);
1211    const opt = {
1212      size: { height: 5, width: 5 },
1213      pixelFormat: 3,
1214      editable: true,
1215      alphaType: 1,
1216      scaleMode: 1,
1217    };
1218    const pixelMap = await image.createPixelMap(buffer, opt);
1219    let record5 = new UDC.UnifiedRecord('openharmony.pixel-map', pixelMap);
1220    unifiedData.addRecord(record5);
1221    const wantText = {
1222      bundleName: 'com.example.myapplication1',
1223      abilityName: 'com.example.myapplication1.MainAbility',
1224    };
1225    let record6 = new UDC.UnifiedRecord('openharmony.want', wantText);
1226    unifiedData.addRecord(record6);
1227
1228    records = unifiedData.getRecords();
1229    expect(records.length).assertEqual(6);
1230    const data1 = records[0].getValue();
1231    expect(data1.byteLength).assertEqual(256);
1232    let view2 = new Uint32Array(data1);
1233    expect(view1[0]).assertEqual(view2[0]);
1234    const data2 = records[1].getValue();
1235    expect(data2).assertEqual('xxx.com');
1236    const data3 = records[2].getValue();
1237    expect(data3).assertEqual(8899);
1238    const data4 = records[3].getValue();
1239    expect(data4).assertEqual(8899.7788);
1240    const data5 = records[4].getValue();
1241    data5.getImageInfo().then((imageInfo)=>{
1242      expect(imageInfo.size.height).assertEqual(opt.size.height);
1243      expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
1244    });
1245    const data6 = records[5].getValue();
1246    expect(data6.bundleName).assertEqual(wantText.bundleName);
1247    expect(data6.abilityName).assertEqual(wantText.abilityName);
1248  });
1249
1250  /**
1251   * @tc.name UnifiedRecordConstruct003
1252   * @tc.desc Test Js UnifiedData GetRecords testcase
1253   * @tc.type: FUNC
1254   * @tc.require:
1255   */
1256  it('UnifiedRecordConstruct003', 0, async function () {
1257    const TAG = 'UnifiedRecordConstruct003';
1258    console.info(TAG, 'start');
1259
1260    const dataUri = new ArrayBuffer(256);
1261    let view1 = new Uint32Array(dataUri);
1262    view1[0] = 123456;
1263    let record1 = new UDC.UnifiedRecord('general.text', dataUri);
1264    let unifiedData = new UDC.UnifiedData(record1);
1265    let record2 = new UDC.UnifiedRecord('general.text', 'xxx.com');
1266    unifiedData.addRecord(record2);
1267    let record3 = new UDC.UnifiedRecord('general.text', 8899);
1268    unifiedData.addRecord(record3);
1269    let record4 = new UDC.UnifiedRecord('general.text', 8899.7788);
1270    unifiedData.addRecord(record4);
1271
1272    let records = unifiedData.getRecords();
1273    expect(records.length).assertEqual(4);
1274    const data1 = records[0].getValue();
1275    expect(data1.byteLength).assertEqual(256);
1276    let view2 = new Uint32Array(data1);
1277    expect(view1[0]).assertEqual(view2[0]);
1278    const data2 = records[1].getValue();
1279    expect(data2).assertEqual('xxx.com');
1280    const data3 = records[2].getValue();
1281    expect(data3).assertEqual(8899);
1282    const data4 = records[3].getValue();
1283    expect(data4).assertEqual(8899.7788);
1284  });
1285
1286  /**
1287   * @tc.name UnifiedRecordConstruct004
1288   * @tc.desc Test Js UnifiedData GetRecords testcase
1289   * @tc.type: FUNC
1290   * @tc.require:
1291   */
1292  it('UnifiedRecordConstruct004', 0, async function () {
1293    const TAG = 'UnifiedRecordConstruct004';
1294    console.info(TAG, 'start');
1295
1296    const dataUri = new ArrayBuffer(256);
1297    let view1 = new Uint32Array(dataUri);
1298    view1[0] = 123456;
1299    let record1 = new UDC.UnifiedRecord('otherType', dataUri);
1300    let unifiedData = new UDC.UnifiedData(record1);
1301    let record2 = new UDC.UnifiedRecord('otherType', 'xxx.com');
1302    unifiedData.addRecord(record2);
1303    let record3 = new UDC.UnifiedRecord('otherType', 8899);
1304    unifiedData.addRecord(record3);
1305    let record4 = new UDC.UnifiedRecord('otherType', 8899.7788);
1306    unifiedData.addRecord(record4);
1307
1308    let records = unifiedData.getRecords();
1309    expect(records.length).assertEqual(4);
1310    const data1 = records[0].getValue();
1311    expect(data1.byteLength).assertEqual(256);
1312    let view2 = new Uint32Array(data1);
1313    expect(view1[0]).assertEqual(view2[0]);
1314    const data2 = records[1].getValue();
1315    expect(data2).assertEqual('xxx.com');
1316    const data3 = records[2].getValue();
1317    expect(data3).assertEqual(8899);
1318    const data4 = records[3].getValue();
1319    expect(data4).assertEqual(8899.7788);
1320  });
1321
1322  /**
1323   * @tc.name UDSTest001
1324   * @tc.desc
1325   * @tc.type: FUNC
1326   * @tc.require:
1327   */
1328  it('UDSTest001', 0, async function () {
1329    const TAG = 'UDSTest001';
1330    console.info(TAG, 'start');
1331
1332    let plainTextDetails = {
1333      'key1': 'value1',
1334      'key2': 'value2',
1335    };
1336    let plainText = {
1337      uniformDataType: UTD.UniformDataType.PLAIN_TEXT,
1338      textContent: 'This is plainText textContent example',
1339      abstract: 'this is abstract',
1340      details: plainTextDetails
1341    };
1342    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plainText);
1343    let unifiedData = new UDC.UnifiedData(record1);
1344    let records = unifiedData.getRecords();
1345    expect(records.length).assertEqual(1);
1346    const value1 = records[0].getValue();
1347
1348    expect(value1.uniformDataType).assertEqual(plainText.uniformDataType);
1349    expect(value1.textContent).assertEqual(plainText.textContent);
1350    expect(value1.abstract).assertEqual(plainText.abstract);
1351    expect(value1.details.key1).assertEqual(plainText.details.key1);
1352    expect(value1.details.key2).assertEqual(plainText.details.key2);
1353  });
1354
1355  /**
1356   * @tc.name UDSTest002
1357   * @tc.desc
1358   * @tc.type: FUNC
1359   * @tc.require:
1360   */
1361  it('UDSTest002', 0, async function (done) {
1362    const TAG = 'UDSTest002';
1363    console.info(TAG, 'start');
1364
1365    let plainTextDetails = {
1366      'key1': 'value1',
1367      'key2': 'value2',
1368    };
1369    let plainText = {
1370      uniformDataType: UTD.UniformDataType.PLAIN_TEXT,
1371      textContent: 'This is plainText textContent example',
1372      abstract: 'this is abstract',
1373      details: plainTextDetails
1374    };
1375    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plainText);
1376    let unifiedData = new UDC.UnifiedData(record1);
1377
1378    try {
1379      UDC.insertData(optionsValid, unifiedData).then((data) => {
1380        console.info(TAG, `insert success. The key: ${data}`);
1381        let options = { key: data };
1382        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1383        UDC.queryData(options).then((data) => {
1384          console.info(TAG, 'query success.');
1385          expect(data.length).assertEqual(1);
1386          let records = data[0].getRecords();
1387          expect(records.length).assertEqual(1);
1388          let value = records[0].getValue();
1389          expect(value.uniformDataType).assertEqual(plainText.uniformDataType);
1390          expect(value.textContent).assertEqual(plainText.textContent);
1391          expect(value.abstract).assertEqual(plainText.abstract);
1392          expect(value.details.key1).assertEqual(plainText.details.key1);
1393          expect(value.details.key2).assertEqual(plainText.details.key2);
1394          UDC.deleteData(options).then((data) => {
1395            console.info(TAG, 'delete success.');
1396            expect(data.length).assertEqual(1);
1397            done();
1398          }).catch(() => {
1399            console.error(TAG, 'Unreachable code!');
1400            expect(null).assertFail();
1401            done();
1402          });
1403        }).catch(() => {
1404          console.error(TAG, 'Unreachable code!');
1405          expect(null).assertFail();
1406          done();
1407        });
1408      }).catch(() => {
1409        console.error(TAG, 'Unreachable code!');
1410        expect(null).assertFail();
1411        done();
1412      });
1413    } catch (e) {
1414      console.error(TAG, 'Unreachable code!');
1415      expect(null).assertFail();
1416      done();
1417    }
1418  });
1419
1420  /**
1421   * @tc.name UDSTest003
1422   * @tc.desc
1423   * @tc.type: FUNC
1424   * @tc.require:
1425   */
1426  it('UDSTest003', 0, async function (done) {
1427    const TAG = 'UDSTest003';
1428    console.info(TAG, 'start');
1429
1430    let hyperLinkDetails = {
1431      'key1': 'value1',
1432      'key2': 'value2',
1433    };
1434    let hyperLink = {
1435      uniformDataType: UTD.UniformDataType.HYPERLINK,
1436      url: 'www.xxx',
1437      description: 'hyperlinkDescription',
1438      details: hyperLinkDetails
1439    };
1440    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.HYPERLINK, hyperLink);
1441    let unifiedData = new UDC.UnifiedData(record1);
1442
1443    try {
1444      UDC.insertData(optionsValid, unifiedData).then((data) => {
1445        console.info(TAG, `insert success. The key: ${data}`);
1446        let options = { key: data };
1447        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1448        UDC.queryData(options).then((data) => {
1449          console.info(TAG, 'query success.');
1450          expect(data.length).assertEqual(1);
1451          let records = data[0].getRecords();
1452          expect(records.length).assertEqual(1);
1453          let value = records[0].getValue();
1454          expect(value.uniformDataType).assertEqual(hyperLink.uniformDataType);
1455          expect(value.url).assertEqual(hyperLink.url);
1456          expect(value.description).assertEqual(hyperLink.description);
1457          expect(value.details.key1).assertEqual(hyperLink.details.key1);
1458          expect(value.details.key2).assertEqual(hyperLink.details.key2);
1459          UDC.deleteData(options).then((data) => {
1460            console.info(TAG, 'delete success.');
1461            expect(data.length).assertEqual(1);
1462            done();
1463          }).catch(() => {
1464            console.error(TAG, 'Unreachable code!');
1465            expect(null).assertFail();
1466            done();
1467          });
1468        }).catch(() => {
1469          console.error(TAG, 'Unreachable code!');
1470          expect(null).assertFail();
1471          done();
1472        });
1473      }).catch(() => {
1474        console.error(TAG, 'Unreachable code!');
1475        expect(null).assertFail();
1476        done();
1477      });
1478    } catch (e) {
1479      console.error(TAG, 'Unreachable code!');
1480      expect(null).assertFail();
1481      done();
1482    }
1483  });
1484
1485  /**
1486   * @tc.name UDSTest004
1487   * @tc.desc
1488   * @tc.type: FUNC
1489   * @tc.require:
1490   */
1491  it('UDSTest004', 0, async function (done) {
1492    const TAG = 'UDSTest004';
1493    console.info(TAG, 'start');
1494
1495    let htmlDetails = {
1496      'key1': 'value1',
1497      'key2': 'value2',
1498    };
1499    let html = {
1500      uniformDataType: UTD.UniformDataType.HTML,
1501      htmlContent: 'www.xxx',
1502      plainContent: 'htmlDescription',
1503      details: htmlDetails
1504    };
1505    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.HTML, html);
1506    let unifiedData = new UDC.UnifiedData(record1);
1507
1508    try {
1509      UDC.insertData(optionsValid, unifiedData).then((data) => {
1510        console.info(TAG, `insert success. The key: ${data}`);
1511        let options = { key: data };
1512        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1513        UDC.queryData(options).then((data) => {
1514          console.info(TAG, 'query success.');
1515          expect(data.length).assertEqual(1);
1516          let records = data[0].getRecords();
1517          expect(records.length).assertEqual(1);
1518          let value = records[0].getValue();
1519          expect(value.uniformDataType).assertEqual(html.uniformDataType);
1520          expect(value.htmlContent).assertEqual(html.htmlContent);
1521          expect(value.plainContent).assertEqual(html.plainContent);
1522          expect(value.details.key1).assertEqual(html.details.key1);
1523          expect(value.details.key2).assertEqual(html.details.key2);
1524          UDC.deleteData(options).then((data) => {
1525            console.info(TAG, 'delete success.');
1526            expect(data.length).assertEqual(1);
1527            done();
1528          }).catch(() => {
1529            console.error(TAG, 'Unreachable code!');
1530            expect(null).assertFail();
1531            done();
1532          });
1533        }).catch(() => {
1534          console.error(TAG, 'Unreachable code!');
1535          expect(null).assertFail();
1536          done();
1537        });
1538      }).catch(() => {
1539        console.error(TAG, 'Unreachable code!');
1540        expect(null).assertFail();
1541        done();
1542      });
1543    } catch (e) {
1544      console.error(TAG, 'Unreachable code!');
1545      expect(null).assertFail();
1546      done();
1547    }
1548  });
1549
1550  /**
1551   * @tc.name UDSTest005
1552   * @tc.desc
1553   * @tc.type: FUNC
1554   * @tc.require:
1555   */
1556  it('UDSTest005', 0, async function (done) {
1557    const TAG = 'UDSTest005';
1558    console.info(TAG, 'start');
1559
1560    let systemDefinedDetails = {
1561      'key1': 'value1',
1562      'key2': 'value2',
1563    };
1564    let systemDefined = {
1565      uniformDataType: 'openharmony.app-item',
1566      appId: 'app-itemAppId',
1567      appName: 'app-itemAppName',
1568      appIconId: 'app-itemAppIconId',
1569      appLabelId: 'app-itemAppLabelId',
1570      bundleName: 'app-itemBundleName',
1571      abilityName: 'app-itemAbilityName',
1572      details: systemDefinedDetails
1573    };
1574    let record1 = new UDC.UnifiedRecord('openharmony.app-item', systemDefined);
1575    let unifiedData = new UDC.UnifiedData(record1);
1576
1577    try {
1578      UDC.insertData(optionsValid, unifiedData).then((data) => {
1579        console.info(TAG, `insert success. The key: ${data}`);
1580        let options = { key: data };
1581        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1582        UDC.queryData(options).then((data) => {
1583          console.info(TAG, 'query success.');
1584          expect(data.length).assertEqual(1);
1585          let records = data[0].getRecords();
1586          expect(records.length).assertEqual(1);
1587          let value = records[0].getValue();
1588          expect(value.uniformDataType).assertEqual(systemDefined.uniformDataType);
1589          expect(value.appId).assertEqual(systemDefined.appId);
1590          expect(value.appName).assertEqual(systemDefined.appName);
1591          expect(value.appIconId).assertEqual(systemDefined.appIconId);
1592          expect(value.appLabelId).assertEqual(systemDefined.appLabelId);
1593          expect(value.bundleName).assertEqual(systemDefined.bundleName);
1594          expect(value.abilityName).assertEqual(systemDefined.abilityName);
1595          expect(value.details.key1).assertEqual(systemDefined.details.key1);
1596          expect(value.details.key2).assertEqual(systemDefined.details.key2);
1597          UDC.deleteData(options).then((data) => {
1598            console.info(TAG, 'delete success.');
1599            expect(data.length).assertEqual(1);
1600            done();
1601          }).catch(() => {
1602            console.error(TAG, 'Unreachable code!');
1603            expect(null).assertFail();
1604            done();
1605          });
1606        }).catch(() => {
1607          console.error(TAG, 'Unreachable code!');
1608          expect(null).assertFail();
1609          done();
1610        });
1611      }).catch(() => {
1612        console.error(TAG, 'Unreachable code!');
1613        expect(null).assertFail();
1614        done();
1615      });
1616    } catch (e) {
1617      console.error(TAG, 'Unreachable code!');
1618      expect(null).assertFail();
1619      done();
1620    }
1621  });
1622
1623  /**
1624   * @tc.name ObjectTest001
1625   * @tc.desc
1626   * @tc.type: FUNC
1627   * @tc.require:
1628   */
1629  it('ObjectTest001', 0, async function (done) {
1630    const TAG = 'ObjectTest001';
1631    console.info(TAG, 'start');
1632
1633    const data = new ArrayBuffer(256);
1634    let view1 = new Uint32Array(data);
1635    view1[0] = 123456;
1636
1637    let ObjectDetails1 = {
1638      'key1': 'value001',
1639      'key2': data,
1640      'key3': undefined,
1641      'key4': null,
1642    };
1643    let ObjectDetails2 = {
1644      'key1': 'value100',
1645      'key2': data,
1646      'key3': undefined,
1647      'key4': null,
1648      details: ObjectDetails1
1649    };
1650    let systemDefined = {
1651      labelId: 'LabelId',
1652      details: ObjectDetails2
1653    };
1654    let record1 = new UDC.UnifiedRecord('self_defined_type', systemDefined);
1655    let unifiedData = new UDC.UnifiedData(record1);
1656
1657    try {
1658      UDC.insertData(optionsValid, unifiedData).then((data) => {
1659        console.info(TAG, `insert success. The key: ${data}`);
1660        let options = { key: data };
1661        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1662        UDC.queryData(options).then((data) => {
1663          console.info(TAG, 'query success.');
1664          expect(data.length).assertEqual(1);
1665          let records = data[0].getRecords();
1666          expect(records.length).assertEqual(1);
1667          let value = records[0].getValue();
1668          expect(value.labelId).assertEqual(systemDefined.labelId);
1669          expect(value.details.key1).assertEqual(systemDefined.details.key1);
1670          expect(value.details.key2.byteLength).assertEqual(systemDefined.details.key2.byteLength);
1671          let view2 = new Uint32Array(value.details.key2);
1672          expect(view2[0]).assertEqual(view1[0]);
1673          expect(value.details.key3).assertEqual(systemDefined.details.key3);
1674          expect(value.details.key4).assertEqual(systemDefined.details.key4);
1675          expect(value.details.details.key1).assertEqual(systemDefined.details.details.key1);
1676          expect(value.details.details.key2.byteLength).assertEqual(systemDefined.details.details.key2.byteLength);
1677          let view3 = new Uint32Array(value.details.details.key2);
1678          expect(view3[0]).assertEqual(view1[0]);
1679          expect(value.details.details.key3).assertEqual(systemDefined.details.details.key3);
1680          expect(value.details.details.key4).assertEqual(systemDefined.details.details.key4);
1681          UDC.deleteData(options).then((data) => {
1682            console.info(TAG, 'delete success.');
1683            expect(data.length).assertEqual(1);
1684            done();
1685          }).catch(() => {
1686            console.error(TAG, 'Unreachable code!');
1687            expect(null).assertFail();
1688            done();
1689          });
1690        }).catch(() => {
1691          console.error(TAG, 'Unreachable code!');
1692          expect(null).assertFail();
1693          done();
1694        });
1695      }).catch(() => {
1696        console.error(TAG, 'Unreachable code!');
1697        expect(null).assertFail();
1698        done();
1699      });
1700    } catch (e) {
1701      console.error(TAG, 'Unreachable code!');
1702      expect(null).assertFail();
1703      done();
1704    }
1705  });
1706
1707  /**
1708   * @tc.name UdmfSetAppShareOptionsTest001
1709   * @tc.desc Test Js Api setAppShareOptions, error intention
1710   * @tc.type: FUNC
1711   * @tc.require:
1712   */
1713  it('UdmfSetAppShareOptionsTest001', 0, function () {
1714    const TAG = 'UdmfSetAppShareOptionsTest001:';
1715    console.info(TAG, 'start');
1716    try {
1717      UDC.setAppShareOptions(UDC.Intention.DATA_HUB, UDC.ShareOptions.IN_APP);
1718      console.error(TAG, 'Unreachable code!');
1719      expect(null).assertFail();
1720    } catch (e) {
1721      console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
1722      expect(e.code === ERROR_PARAMETER).assertTrue();
1723    }
1724    console.info(TAG, 'end');
1725  });
1726
1727  /**
1728   * @tc.name UdmfRemoveAppShareOptionsTest001
1729   * @tc.desc Test Js Api removeAppShareOptions, error intention
1730   * @tc.type: FUNC
1731   * @tc.require:
1732   */
1733  it('UdmfRemoveAppShareOptionsTest001', 0, function () {
1734    const TAG = 'UdmfRemoveAppShareOptionsTest001:';
1735    console.info(TAG, 'start');
1736    try {
1737      UDC.removeAppShareOptions(UDC.Intention.DATA_HUB);
1738      console.error(TAG, 'Unreachable code!');
1739      expect(null).assertFail();
1740    } catch (e) {
1741      console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
1742      expect(e.code === ERROR_PARAMETER).assertTrue();
1743    }
1744    console.info(TAG, 'end');
1745  });
1746
1747  /**
1748   * @tc.name MultiEntryTest001
1749   * @tc.desc
1750   * @tc.type: FUNC
1751   * @tc.require:
1752   */
1753  it('MultiEntryTest001', 0, async function (done) {
1754    const TAG = 'MultiEntryTest001';
1755    console.info(TAG, 'start');
1756    let hyperLinkDetails = {
1757      'key1': 'value1',
1758      'key2': 'value2',
1759    };
1760    let hyperLink = {
1761      uniformDataType: UTD.UniformDataType.HYPERLINK,
1762      url: 'www.xxx',
1763      description: 'hyperlinkDescription',
1764      details: hyperLinkDetails
1765    };
1766    let systemDefinedDetails = {
1767      'key1': 'value1',
1768      'key2': 'value2',
1769    };
1770    let systemDefined = {
1771      uniformDataType: 'openharmony.app-item',
1772      appId: 'app-itemAppId',
1773      appName: 'app-itemAppName',
1774      appIconId: 'app-itemAppIconId',
1775      appLabelId: 'app-itemAppLabelId',
1776      bundleName: 'app-itemBundleName',
1777      abilityName: 'app-itemAbilityName',
1778      details: systemDefinedDetails
1779    };
1780
1781    let plainTextDetails = {
1782      'key1': 'value1',
1783      'key2': 'value2',
1784    };
1785    let plainText = {
1786      uniformDataType: UTD.UniformDataType.PLAIN_TEXT,
1787      textContent: 'This is plainText textContent example',
1788      abstract: 'this is abstract',
1789      details: plainTextDetails
1790    };
1791
1792    const buffer = new ArrayBuffer(128);
1793    const opt = {
1794      size: { height: 5, width: 5 },
1795      pixelFormat: 3,
1796      editable: true,
1797      alphaType: 1,
1798      scaleMode: 1,
1799    };
1800    const pixelMap = await image.createPixelMap(buffer, opt);
1801    let pixelMapUds = {
1802      uniformDataType: 'openharmony.pixel-map',
1803      pixelMap: pixelMap,
1804      details: {
1805        'key1': 'value1',
1806        'key2': 'value2',
1807      }
1808    };
1809    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plainText);
1810    record1.addEntry(UTD.UniformDataType.HYPERLINK, hyperLink);
1811    record1.addEntry('openharmony.app-item', systemDefined);
1812    record1.addEntry('openharmony.pixel-map', pixelMapUds);
1813    let entries = record1.getEntries();
1814
1815    let unifiedData = new UDC.UnifiedData(record1);
1816    let records = unifiedData.getRecords();
1817    expect(records.length).assertEqual(1);
1818    const value1 = records[0].getValue();
1819    let types = records[0].getTypes();
1820    let systemDefined1 = records[0].getEntry('openharmony.app-item');
1821    let hyperlink1 = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
1822    let pixelMapUds1 = records[0].getEntry('openharmony.pixel-map');
1823
1824    expect(value1.uniformDataType).assertEqual(plainText.uniformDataType);
1825    expect(value1.textContent).assertEqual(plainText.textContent);
1826    expect(value1.abstract).assertEqual(plainText.abstract);
1827    expect(value1.details.key1).assertEqual(plainText.details.key1);
1828    expect(value1.details.key2).assertEqual(plainText.details.key2);
1829    expect(hyperlink1.url).assertEqual('www.xxx');
1830    pixelMapUds1.pixelMap.getImageInfo().then((imageInfo)=>{
1831      expect(imageInfo.size.height).assertEqual(opt.size.height);
1832      expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
1833    });
1834    expect(pixelMapUds1.details.key1).assertEqual('value1');
1835    expect(hyperlink1.details.key1).assertEqual('value1');
1836    expect(systemDefined1.appId).assertEqual('app-itemAppId');
1837    expect(systemDefined1.details.key1).assertEqual('value1');
1838    expect(types.length).assertEqual(4);
1839    expect(types.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
1840    expect(types.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1841    expect(types.includes('openharmony.pixel-map')).assertTrue();
1842    expect(types.includes('openharmony.app-item')).assertTrue();
1843    expect(entries['openharmony.app-item'].appIconId).assertEqual('app-itemAppIconId');
1844    expect(entries['openharmony.app-item'].details.key1).assertEqual('value1');
1845    expect(entries['general.hyperlink'].url).assertEqual('www.xxx');
1846    expect(entries['general.hyperlink'].details.key1).assertEqual('value1');
1847    expect(entries['general.plain-text'].textContent).assertEqual('This is plainText textContent example');
1848    expect(entries['general.plain-text'].details.key1).assertEqual('value1');
1849    entries['openharmony.pixel-map'].pixelMap.getImageInfo().then((imageInfo)=>{
1850      expect(imageInfo.size.height).assertEqual(opt.size.height);
1851      expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
1852    });
1853    expect(entries['openharmony.pixel-map'].details.key1).assertEqual('value1');
1854
1855    try {
1856      UDC.insertData(optionsValid, unifiedData).then((data) => {
1857        console.info(TAG, `insert success. The key: ${data}`);
1858        let options = { key: data };
1859        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1860        UDC.queryData(options).then((data) => {
1861          console.info(TAG, 'query success.');
1862          expect(data.length).assertEqual(1);
1863          let records = data[0].getRecords();
1864          expect(records.length).assertEqual(1);
1865          const valueQuery = records[0].getValue();
1866          const hyperlinkQuery = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
1867          const systemDefinedQuery = records[0].getEntry('openharmony.app-item');
1868          const entriesQuery = records[0].getEntries();
1869          const types1 = records[0].getTypes();
1870          expect(valueQuery.uniformDataType).assertEqual(plainText.uniformDataType);
1871          expect(valueQuery.textContent).assertEqual(plainText.textContent);
1872          expect(valueQuery.abstract).assertEqual(plainText.abstract);
1873          expect(valueQuery.details.key1).assertEqual(plainText.details.key1);
1874          expect(valueQuery.details.key2).assertEqual(plainText.details.key2);
1875          expect(hyperlinkQuery.url).assertEqual('www.xxx');
1876          expect(hyperlinkQuery.details.key1).assertEqual('value1');
1877          expect(systemDefinedQuery.appId).assertEqual('app-itemAppId');
1878          expect(systemDefinedQuery.details.key1).assertEqual('value1');
1879          expect(types1.length).assertEqual(4);
1880          expect(types1.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
1881          expect(types1.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1882          expect(types1.includes('openharmony.pixel-map')).assertTrue();
1883          expect(types1.includes('openharmony.app-item')).assertTrue();
1884
1885          expect(entriesQuery['openharmony.app-item'].appIconId).assertEqual('app-itemAppIconId');
1886          expect(entriesQuery['openharmony.app-item'].details.key1).assertEqual('value1');
1887          expect(entriesQuery['general.hyperlink'].url).assertEqual('www.xxx');
1888          expect(entriesQuery['general.hyperlink'].details.key1).assertEqual('value1');
1889          expect(entriesQuery['general.plain-text'].textContent).assertEqual('This is plainText textContent example');
1890          expect(entriesQuery['general.plain-text'].details.key1).assertEqual('value1');
1891          entriesQuery['openharmony.pixel-map'].pixelMap.getImageInfo().then((imageInfo)=>{
1892            expect(imageInfo.size.height).assertEqual(opt.size.height);
1893            expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
1894          });
1895          expect(entriesQuery['openharmony.pixel-map'].details.key1).assertEqual('value1');
1896
1897          UDC.deleteData(options).then((data) => {
1898            console.info(TAG, 'delete success.');
1899            expect(data.length).assertEqual(1);
1900            done();
1901          }).catch(() => {
1902            console.error(TAG, 'Unreachable code!');
1903            expect(null).assertFail();
1904            done();
1905          });
1906        }).catch(() => {
1907          console.error(TAG, 'Unreachable code!');
1908          expect(null).assertFail();
1909          done();
1910        });
1911      }).catch(() => {
1912        console.error(TAG, 'Unreachable code!');
1913        expect(null).assertFail();
1914        done();
1915      });
1916    } catch (e) {
1917      console.error(TAG, 'Unreachable code!');
1918      expect(null).assertFail();
1919      done();
1920    }
1921  });
1922
1923  /**
1924   * @tc.name MultiEntryTest002
1925   * @tc.desc
1926   * @tc.type: FUNC
1927   * @tc.require:
1928   */
1929  it('MultiEntryTest002', 0, async function (done) {
1930    const TAG = 'MultiEntryTest002';
1931    console.info(TAG, 'start');
1932    let hyperLinkDetails = {
1933      'key1': 'value1',
1934      'key2': 'value2',
1935    };
1936    let hyperLink = {
1937      uniformDataType: UTD.UniformDataType.HYPERLINK,
1938      url: 'www.xxx',
1939      description: 'hyperlinkDescription',
1940      details: hyperLinkDetails
1941    };
1942    let plainTextDetails = {
1943      'key1': 'value1',
1944      'key2': 'value2',
1945    };
1946    let plainText = new UDC.PlainText();
1947    plainText.textContent = 'This is plainText textContent example';
1948    plainText.abstract = 'this is abstract';
1949    plainText.details = plainTextDetails;
1950    plainText.addEntry(UTD.UniformDataType.HYPERLINK, hyperLink);
1951
1952    let unifiedData = new UDC.UnifiedData(plainText);
1953    let records = unifiedData.getRecords();
1954    expect(records.length).assertEqual(1);
1955    let entries = records[0].getEntries();
1956    let types = records[0].getTypes();
1957    let hyperlink1 = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
1958    expect(records[0].textContent).assertEqual(plainText.textContent);
1959    expect(records[0].abstract).assertEqual(plainText.abstract);
1960    expect(records[0].details.key1).assertEqual(plainText.details.key1);
1961    expect(records[0].details.key2).assertEqual(plainText.details.key2);
1962    expect(hyperlink1.url).assertEqual('www.xxx');
1963    expect(hyperlink1.details.key1).assertEqual('value1');
1964    expect(types.length).assertEqual(2);
1965    expect(types.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
1966    expect(types.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1967    expect(entries['general.hyperlink'].url).assertEqual('www.xxx');
1968    expect(entries['general.hyperlink'].details.key1).assertEqual('value1');
1969    expect(entries['general.plain-text'].textContent).assertEqual('This is plainText textContent example');
1970    expect(entries['general.plain-text'].details.key1).assertEqual('value1');
1971
1972    try {
1973      UDC.insertData(optionsValid, unifiedData).then((data) => {
1974        console.info(TAG, `insert success. The key: ${data}`);
1975        let options = { key: data };
1976        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
1977        UDC.queryData(options).then((data) => {
1978          console.info(TAG, 'query success.');
1979          expect(data.length).assertEqual(1);
1980          let records = data[0].getRecords();
1981          expect(records.length).assertEqual(1);
1982          const hyperlinkQuery = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
1983          const systemDefinedQuery = records[0].getEntry('openharmony.app-item');
1984          const entriesQuery = records[0].getEntries();
1985          let types1 = records[0].getTypes();
1986          expect(records[0].textContent).assertEqual(plainText.textContent);
1987          expect(records[0].abstract).assertEqual(plainText.abstract);
1988          expect(records[0].details.key1).assertEqual(plainText.details.key1);
1989          expect(records[0].details.key2).assertEqual(plainText.details.key2);
1990          expect(systemDefinedQuery).assertEqual(undefined);
1991          expect(hyperlinkQuery.url).assertEqual('www.xxx');
1992          expect(hyperlinkQuery.details.key1).assertEqual('value1');
1993          expect(types1.length).assertEqual(2);
1994          expect(types1.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
1995          expect(types1.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
1996
1997          expect(entriesQuery['general.hyperlink'].url).assertEqual('www.xxx');
1998          expect(entriesQuery['general.hyperlink'].details.key1).assertEqual('value1');
1999          expect(entriesQuery['general.plain-text'].textContent).assertEqual('This is plainText textContent example');
2000          expect(entriesQuery['general.plain-text'].details.key1).assertEqual('value1');
2001
2002          UDC.deleteData(options).then((data) => {
2003            console.info(TAG, 'delete success.');
2004            expect(data.length).assertEqual(1);
2005            done();
2006          }).catch(() => {
2007            console.error(TAG, 'Unreachable code!');
2008            expect(null).assertFail();
2009            done();
2010          });
2011        }).catch(() => {
2012          console.error(TAG, 'Unreachable code!');
2013          expect(null).assertFail();
2014          done();
2015        });
2016      }).catch(() => {
2017        console.error(TAG, 'Unreachable code!');
2018        expect(null).assertFail();
2019        done();
2020      });
2021    } catch (e) {
2022      console.error(TAG, 'Unreachable code!');
2023      expect(null).assertFail();
2024      done();
2025    }
2026  });
2027
2028  /**
2029   * @tc.name MultiEntryTest003
2030   * @tc.desc
2031   * @tc.type: FUNC
2032   * @tc.require:
2033   */
2034  it('MultiEntryTest003', 0, async function (done) {
2035    const TAG = 'MultiEntryTest003';
2036    console.info(TAG, 'start');
2037
2038    let plaintextValue = 'plaintextValue';
2039    let systemDefinedValue = 'systemDefinedValue';
2040    let hyperlinkValue = 'hyperlinkValue';
2041    let record1 = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plaintextValue);
2042    record1.addEntry(UTD.UniformDataType.HYPERLINK, hyperlinkValue);
2043    record1.addEntry('openharmony.app-item', systemDefinedValue);
2044
2045    let entries = record1.getEntries();
2046
2047    let unifiedData = new UDC.UnifiedData(record1);
2048    let records = unifiedData.getRecords();
2049    expect(records.length).assertEqual(1);
2050    const value1 = records[0].getValue();
2051    let types = records[0].getTypes();
2052    let systemDefined1 = records[0].getEntry('openharmony.app-item');
2053    let hyperlink1 = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
2054    expect(value1).assertEqual(plaintextValue);
2055    expect(value1.textContent).assertEqual(undefined);
2056    expect(hyperlink1).assertEqual(hyperlinkValue);
2057    expect(hyperlink1.details).assertEqual(undefined);
2058    expect(systemDefined1).assertEqual(systemDefinedValue);
2059    expect(systemDefined1.details).assertEqual(undefined);
2060    expect(types.length).assertEqual(3);
2061    expect(types.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
2062    expect(types.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
2063    expect(types.includes('openharmony.app-item')).assertTrue();
2064    expect(entries['openharmony.app-item']).assertEqual(systemDefinedValue);
2065    expect(entries['general.hyperlink']).assertEqual(hyperlinkValue);
2066    expect(entries['general.plain-text'].VALUE_TYPE).assertEqual(plaintextValue);
2067
2068    try {
2069      UDC.insertData(optionsValid, unifiedData).then((data) => {
2070        console.info(TAG, `insert success. The key: ${data}`);
2071        let options = { key: data };
2072        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
2073        UDC.queryData(options).then((data) => {
2074          console.info(TAG, 'query success.');
2075          expect(data.length).assertEqual(1);
2076          let records = data[0].getRecords();
2077          expect(records.length).assertEqual(1);
2078          const valueQuery = records[0].getValue();
2079          const hyperlinkQuery = records[0].getEntry(UTD.UniformDataType.HYPERLINK);
2080          const systemDefinedQuery = records[0].getEntry('openharmony.app-item');
2081          const entriesQuery = records[0].getEntries();
2082          const types1 = records[0].getTypes();
2083          expect(valueQuery).assertEqual(plaintextValue);
2084          expect(hyperlinkQuery).assertEqual(hyperlinkValue);
2085          expect(systemDefinedQuery).assertEqual(systemDefinedValue);
2086          expect(types1.length).assertEqual(3);
2087          expect(types1.includes(UTD.UniformDataType.PLAIN_TEXT)).assertTrue();
2088          expect(types1.includes(UTD.UniformDataType.HYPERLINK)).assertTrue();
2089          expect(types1.includes('openharmony.app-item')).assertTrue();
2090          expect(entriesQuery['openharmony.app-item']).assertEqual(systemDefinedValue);
2091          expect(entriesQuery['general.hyperlink']).assertEqual(hyperlinkValue);
2092          expect(entriesQuery['general.plain-text'].VALUE_TYPE).assertEqual(plaintextValue);
2093
2094          UDC.deleteData(options).then((data) => {
2095            console.info(TAG, 'delete success.');
2096            expect(data.length).assertEqual(1);
2097            done();
2098          }).catch(() => {
2099            console.error(TAG, 'Unreachable code!');
2100            expect(null).assertFail();
2101            done();
2102          });
2103        }).catch(() => {
2104          console.error(TAG, 'Unreachable code!');
2105          expect(null).assertFail();
2106          done();
2107        });
2108      }).catch(() => {
2109        console.error(TAG, 'Unreachable code!');
2110        expect(null).assertFail();
2111        done();
2112      });
2113    } catch (e) {
2114      console.error(TAG, 'Unreachable code!');
2115      expect(null).assertFail();
2116      done();
2117    }
2118  });
2119
2120  /**
2121   * @tc.name MultiEntryTest004
2122   * @tc.desc
2123   * @tc.type: FUNC
2124   * @tc.require:
2125   */
2126  it('MultiEntryTest004', 0, async function (done) {
2127    const TAG = 'MultiEntryTest004';
2128    console.info(TAG, 'start');
2129    const buffer = new ArrayBuffer(128);
2130    const opt = {
2131      size: { height: 5, width: 5 },
2132      pixelFormat: 3,
2133      editable: true,
2134      alphaType: 1,
2135      scaleMode: 1,
2136    };
2137    const pixelMap = await image.createPixelMap(buffer, opt);
2138    let pixelMapUds = {
2139      uniformDataType: 'openharmony.pixel-map',
2140      pixelMap: pixelMap,
2141      details: {
2142        'key1': 'value1',
2143        'key2': 'value2',
2144      }
2145    };
2146    let record = new UDC.UnifiedRecord('openharmony.pixel-map', pixelMapUds);
2147    let unifiedData = new UDC.UnifiedData(record);
2148
2149    try {
2150      UDC.insertData(optionsValid, unifiedData).then((data) => {
2151        console.info(TAG, `insert success. The key: ${data}`);
2152        let options = { key: data };
2153        console.info(TAG, `query start. The options: ${JSON.stringify(options)}`);
2154        UDC.queryData(options).then((data) => {
2155          console.info(TAG, 'query success.');
2156          expect(data.length).assertEqual(1);
2157          let records = data[0].getRecords();
2158          expect(records.length).assertEqual(1);
2159          const valueQuery = records[0].getValue();
2160          expect(valueQuery.uniformDataType).assertEqual('openharmony.pixel-map');
2161          valueQuery.pixelMap.getImageInfo().then((imageInfo)=>{
2162            expect(imageInfo.size.height).assertEqual(opt.size.height);
2163            expect(imageInfo.pixelFormat).assertEqual(opt.pixelFormat);
2164          });
2165          expect(valueQuery.details.key1).assertEqual('value1');
2166          UDC.deleteData(options).then((data) => {
2167            console.info(TAG, 'delete success.');
2168            expect(data.length).assertEqual(1);
2169            done();
2170          }).catch(() => {
2171            console.error(TAG, 'Unreachable code!');
2172            expect(null).assertFail();
2173            done();
2174          });
2175        }).catch(() => {
2176          console.error(TAG, 'Unreachable code!');
2177          expect(null).assertFail();
2178          done();
2179        });
2180      }).catch(() => {
2181        console.error(TAG, 'Unreachable code!');
2182        expect(null).assertFail();
2183        done();
2184      });
2185    } catch (e) {
2186      console.error(TAG, 'Unreachable code!');
2187      expect(null).assertFail();
2188      done();
2189    }
2190  });
2191
2192    /**
2193   * @tc.name MultiEntryTest005
2194   * @tc.desc
2195   * @tc.type: FUNC
2196   * @tc.require:
2197   */
2198    it('MultiEntryTest005', 0, async function () {
2199      const TAG = 'MultiEntryTest005';
2200      console.info(TAG, 'start');
2201      try {
2202        let plaintextValue = 'plaintextValue';
2203        let systemDefinedValue = 'systemDefinedValue';
2204        let record = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plaintextValue);
2205        record.addEntry(undefined, systemDefinedValue);
2206      } catch (e) {
2207        console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
2208        expect(e.code === ERROR_PARAMETER).assertTrue();
2209      }
2210      try {
2211        let plaintextValue = 'plaintextValue';
2212        let systemDefinedValue = 'systemDefinedValue';
2213        let record = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plaintextValue);
2214        record.addEntry(null, systemDefinedValue);
2215      } catch (e) {
2216        console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
2217        expect(e.code === ERROR_PARAMETER).assertTrue();
2218      }
2219      console.info(TAG, 'end');
2220    });
2221
2222    /**
2223     * @tc.name MultiEntryTest006
2224     * @tc.desc
2225     * @tc.type: FUNC
2226     * @tc.require:
2227     */
2228    it('MultiEntryTest006', 0, async function () {
2229      const TAG = 'MultiEntryTest006';
2230      console.info(TAG, 'start');
2231      try {
2232        let plaintextValue = 'plaintextValue';
2233        let systemDefinedValue = 'systemDefinedValue';
2234        let record = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plaintextValue);
2235        record.addEntry('openharmony.app-item', systemDefinedValue);
2236        record.getEntry(undefined);
2237      } catch (e) {
2238        console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
2239        expect(e.code === ERROR_PARAMETER).assertTrue();
2240      }
2241      try {
2242        let plaintextValue = 'plaintextValue';
2243        let systemDefinedValue = 'systemDefinedValue';
2244        let record = new UDC.UnifiedRecord(UTD.UniformDataType.PLAIN_TEXT, plaintextValue);
2245        record.addEntry('openharmony.app-item', systemDefinedValue);
2246        record.getEntry(null);
2247      } catch (e) {
2248        console.error(TAG, `get e. code is ${e.code},message is ${e.message} `);
2249        expect(e.code === ERROR_PARAMETER).assertTrue();
2250      }
2251      console.info(TAG, 'end');
2252    });
2253});