1/*
2 * Copyright (C) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the 'License');
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an 'AS IS' BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15// @ts-nocheck
16import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index';
17import pasteboard from '@ohos.pasteboard';
18import image from '@ohos.multimedia.image';
19import Want from '@ohos.app.ability.Want';
20import List from '@ohos.util.List';
21
22const myType = 'my-mime-type';
23const allTypes = [pasteboard.MIMETYPE_TEXT_PLAIN, pasteboard.MIMETYPE_TEXT_HTML, pasteboard.MIMETYPE_TEXT_URI,
24  pasteboard.MIMETYPE_TEXT_WANT, pasteboard.MIMETYPE_PIXELMAP, myType
25];
26
27describe('PasteBoardJSTest', function () {
28  beforeAll(async function () {
29    console.info('beforeAll');
30  });
31
32  afterAll(async function () {
33    console.info('afterAll');
34  });
35
36  /**
37   * @tc.name      pasteboard_promise_test1
38   * @tc.desc      Adds PlainTextData
39   * @tc.type      Function
40   * @tc.require   AR000H5HVI
41   */
42  it('pasteboard_promise_test1', 0, async function (done) {
43    const systemPasteboard = pasteboard.getSystemPasteboard();
44    await systemPasteboard.clearData();
45    const textData1 = 'Hello World!';
46    const pasteData = pasteboard.createPlainTextData(textData1);
47    await systemPasteboard.setPasteData(pasteData);
48    const res = await systemPasteboard.hasPasteData();
49    expect(res).assertEqual(true);
50    const types = pasteData.getMimeTypes();
51    expect('text/plain').assertEqual(types[0]);
52    systemPasteboard.getPasteData().then((data) => {
53      const pasteData1 = data;
54      expect(pasteData1.getRecordCount()).assertEqual(1);
55      const primaryText = pasteData1.getPrimaryText();
56      expect(primaryText).assertEqual(textData1);
57      expect(pasteboard.MAX_RECORD_NUM).assertEqual(512);
58      expect(pasteData1.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_PLAIN);
59      done();
60    });
61  });
62
63  /**
64   * @tc.name      pasteboard_promise_test2
65   * @tc.desc      Adds PlainTextData = ''
66   * @tc.type      Function
67   * @tc.require   AR000H5HVI
68   */
69  it('pasteboard_promise_test2', 0, async function (done) {
70    const systemPasteboard = pasteboard.getSystemPasteboard();
71    await systemPasteboard.clearData();
72    const textData2 = '';
73    const pasteData = pasteboard.createPlainTextData(textData2);
74    await systemPasteboard.setPasteData(pasteData);
75    const res2 = await systemPasteboard.hasPasteData();
76    expect(res2).assertEqual(true);
77    systemPasteboard.getPasteData().then((data) => {
78      const recordCount2 = data.getRecordCount();
79      expect(recordCount2).assertEqual(1);
80      done();
81    });
82  });
83
84  /**
85   * @tc.name      pasteboard_promise_test3
86   * @tc.desc      Adds PlainTextData = 'Hello 中国!@#$%^&*()_+{}\?.'
87   * @tc.type      Function
88   * @tc.require   AR000H5HVI
89   */
90  it('pasteboard_promise_test3', 0, async function (done) {
91    const systemPasteboard = pasteboard.getSystemPasteboard();
92    await systemPasteboard.clearData();
93    const textData3 = 'Hello 中国!@#$%^&*()_+{}?.';
94    const pasteData = pasteboard.createPlainTextData(textData3);
95    await systemPasteboard.setPasteData(pasteData);
96    const res3 = await systemPasteboard.hasPasteData();
97    expect(res3).assertEqual(true);
98    systemPasteboard.getPasteData().then((data) => {
99      const pasteData3 = data;
100      expect(pasteData3.getRecordCount()).assertEqual(1);
101      const primaryText = pasteData3.getPrimaryText();
102      expect(primaryText).assertEqual(textData3);
103      expect(pasteData3.hasMimeType(pasteboard.MIMETYPE_TEXT_PLAIN)).assertEqual(true);
104      done();
105    });
106  });
107
108  /**
109   * @tc.name      pasteboard_promise_test4
110   * @tc.desc      Adds 300K PlainTextData
111   * @tc.type      Function
112   * @tc.require   AR000H5HVI
113   */
114  it('pasteboard_promise_test4', 0, async function (done) {
115    const systemPasteboard = pasteboard.getSystemPasteboard();
116    await systemPasteboard.clearData();
117    let textData4 = '';
118    for (let i = 0; i < 300; i++) {
119      textData4 = textData4 + 'A';
120    }
121    const pasteData = pasteboard.createPlainTextData(textData4);
122    await systemPasteboard.setPasteData(pasteData);
123    const res4 = await systemPasteboard.hasPasteData();
124    expect(res4).assertEqual(true);
125    systemPasteboard.getPasteData().then((data) => {
126      const pasteData4 = data;
127      expect(pasteData4.getRecordCount()).assertEqual(1);
128      const primaryText = pasteData4.getPrimaryText();
129      expect(primaryText).assertEqual(textData4);
130      expect(pasteData4.hasMimeType(pasteboard.MIMETYPE_TEXT_PLAIN)).assertEqual(true);
131      expect(pasteData4.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_PLAIN);
132      done();
133    });
134  });
135
136  /**
137   * @tc.name      pasteboard_promise_test5
138   * @tc.desc      Adds htmlText
139   * @tc.type      Function
140   * @tc.require   AR000H5HVI
141   */
142  it('pasteboard_promise_test5', 0, async function (done) {
143    const systemPasteboard = pasteboard.getSystemPasteboard();
144    await systemPasteboard.clearData();
145    const htmlText5 = '<html><head></head><body>Hello World!</body></html>';
146    const pasteData = pasteboard.createHtmlData(htmlText5);
147    await systemPasteboard.setPasteData(pasteData);
148    const res5 = await systemPasteboard.hasPasteData();
149    expect(res5).assertEqual(true);
150    systemPasteboard.getPasteData().then((data) => {
151      const pasteData5 = data;
152      expect(pasteData5.getRecordCount()).assertEqual(1);
153      const primaryHtml6 = pasteData5.getPrimaryHtml();
154      expect(primaryHtml6).assertEqual(htmlText5);
155      expect(pasteData5.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
156      expect(pasteData5.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
157      done();
158    });
159  });
160
161  /**
162   * @tc.name      pasteboard_promise_test6
163   * @tc.desc      Adds htmlText = ''
164   * @tc.type      Function
165   * @tc.require   AR000H5HVI
166   */
167  it('pasteboard_promise_test6', 0, async function (done) {
168    const systemPasteboard = pasteboard.getSystemPasteboard();
169    await systemPasteboard.clearData();
170    const htmlText6 = '';
171    const pasteData = pasteboard.createHtmlData(htmlText6);
172    await systemPasteboard.setPasteData(pasteData);
173    const res6 = await systemPasteboard.hasPasteData();
174    expect(res6).assertEqual(true);
175    systemPasteboard.getPasteData().then((data) => {
176      expect(data.getRecordCount()).assertEqual(1);
177      const primaryHtml6 = data.getPrimaryHtml();
178      expect(primaryHtml6).assertEqual(htmlText6);
179      expect(data.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
180      expect(data.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
181      done();
182    });
183  });
184
185  /**
186   * @tc.name      pasteboard_promise_test7
187   * @tc.desc      Adds htmlText = 'Hello 中国!@#$%^&*()_+{}\?.'
188   * @tc.type      Function
189   * @tc.require   AR000H5HVI
190   */
191  it('pasteboard_promise_test7', 0, async function (done) {
192    const systemPasteboard = pasteboard.getSystemPasteboard();
193    await systemPasteboard.clearData();
194    const htmlText = 'Hello 中国!@#$%^&*()_+{}?.';
195    const pasteData = pasteboard.createHtmlData(htmlText);
196    await systemPasteboard.setPasteData(pasteData);
197    const res = await systemPasteboard.hasPasteData();
198    expect(res).assertEqual(true);
199    systemPasteboard.getPasteData().then((data) => {
200      expect(data.getRecordCount()).assertEqual(1);
201      expect(data.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
202      expect(data.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
203      expect(data.getPrimaryHtml()).assertEqual(htmlText);
204      done();
205    });
206  });
207
208  /**
209   * @tc.name      pasteboard_promise_test8
210   * @tc.desc      Adds uriText
211   * @tc.type      Function
212   * @tc.require   AR000H5HVI
213   */
214  it('pasteboard_promise_test8', 0, async function (done) {
215    const systemPasteboard = pasteboard.getSystemPasteboard();
216    await systemPasteboard.clearData();
217    const uriText8 = 'https://www.baidu.com/';
218    const pasteData = pasteboard.createUriData(uriText8);
219    await systemPasteboard.setPasteData(pasteData);
220    const res8 = await systemPasteboard.hasPasteData();
221    expect(res8).assertEqual(true);
222    systemPasteboard.getPasteData().then((data) => {
223      expect(data.getRecordCount()).assertEqual(1);
224      const primaryUri8 = data.getPrimaryUri();
225      expect(primaryUri8).assertEqual(uriText8);
226      expect(data.hasMimeType(pasteboard.MIMETYPE_TEXT_URI)).assertEqual(true);
227      done();
228    });
229  });
230
231  /**
232   * @tc.name      pasteboard_promise_test9
233   * @tc.desc      Adds uriText = ''
234   * @tc.type      Function
235   * @tc.require   AR000H5HVI
236   */
237  it('pasteboard_promise_test9', 0, async function (done) {
238    const systemPasteboard = pasteboard.getSystemPasteboard();
239    await systemPasteboard.clearData();
240    const uriText9 = '';
241    const pasteData = pasteboard.createUriData(uriText9);
242    await systemPasteboard.setPasteData(pasteData);
243    const res9 = await systemPasteboard.hasPasteData();
244    expect(res9).assertEqual(true);
245    systemPasteboard.getPasteData().then((data) => {
246      expect(data.getRecordCount()).assertEqual(1);
247      expect(data.getPrimaryUri()).assertEqual(uriText9);
248      done();
249    });
250  });
251
252  /**
253   * @tc.name      pasteboard_promise_test10
254   * @tc.desc      Set uriText = 'Hello //'
255   * @tc.type      Function
256   * @tc.require   AR000H5HVI
257   */
258  it('pasteboard_promise_test10', 0, async function (done) {
259    const systemPasteboard = pasteboard.getSystemPasteboard();
260    await systemPasteboard.clearData();
261    const uriText10 = 'Hello//';
262    const pasteData = pasteboard.createUriData(uriText10);
263    await systemPasteboard.setPasteData(pasteData);
264    const res10 = await systemPasteboard.hasPasteData();
265    expect(res10).assertEqual(true);
266    systemPasteboard.getPasteData().then((data) => {
267      expect(data.getRecordCount()).assertEqual(1);
268      expect(data.hasMimeType(pasteboard.MIMETYPE_TEXT_URI)).assertEqual(true);
269      expect(data.getPrimaryUri()).assertEqual(uriText10);
270      done();
271    });
272  });
273
274  /**
275   * @tc.name      pasteboard_promise_test11
276   * @tc.desc      Adds want
277   * @tc.type      Function
278   * @tc.require   AR000H5HVI
279   */
280  it('pasteboard_promise_test11', 0, async function (done) {
281    const systemPasteboard = pasteboard.getSystemPasteboard();
282    await systemPasteboard.clearData();
283    const want11 = {
284      bundleName: 'com.example.myapplication8',
285      abilityName: 'com.example.myapplication8.MainAbility',
286    };
287    const pasteData = pasteboard.createWantData(want11);
288    await systemPasteboard.setPasteData(pasteData);
289    const res11 = await systemPasteboard.hasPasteData();
290    expect(res11).assertEqual(true);
291    systemPasteboard.getPasteData().then((data) => {
292      expect(data.getRecordCount()).assertEqual(1);
293      const primaryWant = data.getPrimaryWant();
294      expect(want11.bundleName).assertEqual(primaryWant.bundleName);
295      expect(want11.abilityName).assertEqual(primaryWant.abilityName);
296      expect(data.hasMimeType(pasteboard.MIMETYPE_TEXT_WANT)).assertEqual(true);
297      done();
298    });
299  });
300
301  /**
302   * @tc.name      pasteboard_promise_test12
303   * @tc.desc      Adds one record(s)
304   * @tc.type      Function
305   * @tc.require   AR000H5HVI
306   */
307  it('pasteboard_promise_test12', 0, async function (done) {
308    const systemPasteboard = pasteboard.getSystemPasteboard();
309    await systemPasteboard.clearData();
310    const textData12 = 'Hello World!';
311    const pasteData = pasteboard.createPlainTextData(textData12);
312    await systemPasteboard.setPasteData(pasteData);
313    const res12 = await systemPasteboard.hasPasteData();
314    expect(res12).assertEqual(true);
315    systemPasteboard.getPasteData().then((data) => {
316      expect(data.getRecordCount()).assertEqual(1);
317      let recordText12 = data.getRecordAt(0).plainText;
318      expect(recordText12).assertEqual(textData12);
319      done();
320    });
321  });
322
323  /**
324   * @tc.name      pasteboard_promise_test13
325   * @tc.desc      Adds 2 record(s)
326   * @tc.type      Function
327   * @tc.require   AR000H5HVI
328   */
329  it('pasteboard_promise_test13', 0, async function (done) {
330    const systemPasteboard = pasteboard.getSystemPasteboard();
331    await systemPasteboard.clearData();
332    const textData130 = 'Hello World!';
333    const pasteData = pasteboard.createPlainTextData(textData130);
334    const textData131 = 'Hello World1';
335    pasteData.addTextRecord(textData131);
336    await systemPasteboard.setPasteData(pasteData);
337    const res13 = await systemPasteboard.hasPasteData();
338    expect(res13).assertEqual(true);
339    systemPasteboard.getPasteData().then((data) => {
340      expect(data.getRecordCount()).assertEqual(2);
341      const dataRecord130 = data.getRecordAt(0);
342      const dataRecord131 = data.getRecordAt(1);
343      expect(dataRecord130.plainText).assertEqual(textData131);
344      expect(dataRecord131.plainText).assertEqual(textData130);
345      done();
346    });
347  });
348
349  /**
350   * @tc.name      pasteboard_promise_test14
351   * @tc.desc      Adds 15 record(s)
352   * @tc.type      Function
353   * @tc.require   AR000H5HVI
354   */
355  it('pasteboard_promise_test14', 0, async function (done) {
356    const systemPasteboard = pasteboard.getSystemPasteboard();
357    await systemPasteboard.clearData();
358    const textData140 = 'Hello World!';
359    const pasteData = pasteboard.createPlainTextData(textData140);
360    let textData14 = '';
361    for (let i = 1; i < 15; i++) {
362      textData14 = 'Hello World';
363      textData14 = textData14 + i;
364      pasteData.addTextRecord(textData14);
365    }
366    await systemPasteboard.setPasteData(pasteData);
367    const res14 = await systemPasteboard.hasPasteData();
368    expect(res14).assertEqual(true);
369    systemPasteboard.getPasteData().then((data) => {
370      expect(data.getRecordCount()).assertEqual(15);
371      const dataRecord14 = data.getRecordAt(14);
372      expect(dataRecord14.plainText).assertEqual(textData140);
373      done();
374    });
375  });
376
377  /**
378   * @tc.name      pasteboard_promise_test15
379   * @tc.desc      Adds 30 record(s)
380   * @tc.type      Function
381   * @tc.require   AR000H5HVI
382   */
383  it('pasteboard_promise_test15', 0, async function (done) {
384    const systemPasteboard = pasteboard.getSystemPasteboard();
385    await systemPasteboard.clearData();
386    const textData150 = 'Hello World!';
387    const pasteData = pasteboard.createPlainTextData(textData150);
388    let textData15 = '';
389    for (let i = 1; i < 30; i++) {
390      textData15 = 'Hello World';
391      textData15 = textData15 + i;
392      pasteData.addTextRecord(textData15);
393    }
394    await systemPasteboard.setPasteData(pasteData);
395    const res15 = await systemPasteboard.hasPasteData();
396    expect(res15).assertEqual(true);
397    systemPasteboard.getPasteData().then((data) => {
398      expect(data.getRecordCount()).assertEqual(30);
399      const dataRecord15 = data.getRecordAt(0);
400      expect(dataRecord15.plainText).assertEqual('Hello World29');
401      done();
402    });
403  });
404
405  /**
406   * @tc.name      pasteboard_promise_test16
407   * @tc.desc      Adds 31 record(s)
408   * @tc.type      Function
409   * @tc.require   AR000H5HVI
410   */
411  it('pasteboard_promise_test16', 0, async function (done) {
412    const systemPasteboard = pasteboard.getSystemPasteboard();
413    await systemPasteboard.clearData();
414    const textData160 = 'Hello World!';
415    const pasteData = pasteboard.createPlainTextData(textData160);
416    let textData16 = '';
417    for (let i = 1; i < 31; i++) {
418      textData16 = 'Hello World';
419      textData16 = textData16 + i;
420      pasteData.addTextRecord(textData16);
421    }
422    await systemPasteboard.setPasteData(pasteData);
423    const res16 = await systemPasteboard.hasPasteData();
424    expect(res16).assertEqual(true);
425    systemPasteboard.getPasteData().then((data) => {
426      const recordCount16 = data.getRecordCount();
427      expect(recordCount16).assertEqual(31);
428      const dataRecord16 = data.getRecordAt(0);
429      expect(dataRecord16.plainText).assertEqual('Hello World30');
430      done();
431    });
432  });
433
434  /**
435   * @tc.name      pasteboard_promise_test17
436   * @tc.desc      Adds PlainText,HtmlText,UriText
437   * @tc.type      Function
438   * @tc.require   AR000H5HVI
439   */
440  it('pasteboard_promise_test17', 0, async function (done) {
441    const systemPasteboard = pasteboard.getSystemPasteboard();
442    await systemPasteboard.clearData();
443    const textData17 = 'Hello World!';
444    const pasteData = pasteboard.createPlainTextData(textData17);
445    const htmlText17 = '<html><head></head><body>Hello World!</body></html>';
446    pasteData.addHtmlRecord(htmlText17);
447    const uriText17 = 'https://www.baidu.com/';
448    pasteData.addUriRecord(uriText17);
449    const want17 = {
450      bundleName: 'com.example.myapplication8',
451      abilityName: 'com.example.myapplication8.MainAbility',
452    };
453    pasteData.addWantRecord(want17);
454    await systemPasteboard.setPasteData(pasteData);
455    const res17 = await systemPasteboard.hasPasteData();
456    expect(res17).assertEqual(true);
457    systemPasteboard.getPasteData().then((data) => {
458      expect(data.getRecordCount()).assertEqual(4);
459      const wantRecord17 = data.getPrimaryWant();
460      expect(wantRecord17.bundleName).assertEqual(want17.bundleName);
461      expect(wantRecord17.abilityName).assertEqual(want17.abilityName);
462      done();
463    });
464  });
465
466  /**
467   * @tc.name      pasteboard_promise_test18
468   * @tc.desc      Delete one PlainTextData
469   * @tc.type      Function
470   * @tc.require   AR000H5HVI
471   */
472  it('pasteboard_promise_test18', 0, async function (done) {
473    const systemPasteboard = pasteboard.getSystemPasteboard();
474    await systemPasteboard.clearData();
475    const textData18 = 'Hello World!';
476    const pasteData = pasteboard.createPlainTextData(textData18);
477    await systemPasteboard.setPasteData(pasteData);
478    const res18 = await systemPasteboard.hasPasteData();
479    expect(res18).assertEqual(true);
480    const pasteData18 = await systemPasteboard.getPasteData();
481    expect(pasteData18.getRecordCount()).assertEqual(1);
482    expect(pasteData18.removeRecordAt(0)).assertEqual(true);
483    await systemPasteboard.setPasteData(pasteData18);
484    systemPasteboard.getPasteData().then((data) => {
485      const recordCount18 = data.getRecordCount();
486      expect(recordCount18).assertEqual(0);
487      done();
488    });
489  });
490
491  /**
492   * @tc.name      pasteboard_promise_test19
493   * @tc.desc      Delete one htmlText
494   * @tc.type      Function
495   * @tc.require   AR000H5HVI
496   */
497  it('pasteboard_promise_test19', 0, async function (done) {
498    const systemPasteboard = pasteboard.getSystemPasteboard();
499    await systemPasteboard.clearData();
500    const htmlText19 = '<html><head></head><body>Hello World!</body></html>';
501    const pasteData = pasteboard.createHtmlData(htmlText19);
502    await systemPasteboard.setPasteData(pasteData);
503    const res19 = await systemPasteboard.hasPasteData();
504    expect(res19).assertEqual(true);
505    const pasteData19 = await systemPasteboard.getPasteData();
506    expect(pasteData19.getRecordCount()).assertEqual(1);
507    expect(pasteData19.removeRecordAt(0)).assertEqual(true);
508    await systemPasteboard.setPasteData(pasteData19);
509    systemPasteboard.getPasteData().then((data) => {
510      const recordCount19 = data.getRecordCount();
511      expect(recordCount19).assertEqual(0);
512      done();
513    });
514  });
515
516  /**
517   * @tc.name      pasteboard_promise_test20
518   * @tc.desc      Delete one uriText
519   * @tc.type      Function
520   * @tc.require   AR000H5HVI
521   */
522  it('pasteboard_promise_test20', 0, async function (done) {
523    const systemPasteboard = pasteboard.getSystemPasteboard();
524    await systemPasteboard.clearData();
525    const uriText20 = 'https://www.baidu.com/';
526    const pasteData = pasteboard.createUriData(uriText20);
527    await systemPasteboard.setPasteData(pasteData);
528    const res20 = await systemPasteboard.hasPasteData();
529    expect(res20).assertEqual(true);
530    const pasteData20 = await systemPasteboard.getPasteData();
531    expect(pasteData20.getRecordCount()).assertEqual(1);
532    expect(pasteData20.removeRecordAt(0)).assertEqual(true);
533    await systemPasteboard.setPasteData(pasteData20);
534    systemPasteboard.getPasteData().then((data) => {
535      const recordCount20 = data.getRecordCount();
536      expect(recordCount20).assertEqual(0);
537      done();
538    });
539  });
540
541  /**
542   * @tc.name      pasteboard_promise_test21
543   * @tc.desc      Delete one want
544   * @tc.type      Function
545   * @tc.require   AR000H5I1D
546   */
547  it('pasteboard_promise_test21', 0, async function (done) {
548    const systemPasteboard = pasteboard.getSystemPasteboard();
549    await systemPasteboard.clearData();
550    const want21 = {
551      bundleName: 'com.example.myapplication8',
552      abilityName: 'com.example.myapplication8.MainAbility',
553    };
554    const pasteData = pasteboard.createWantData(want21);
555    await systemPasteboard.setPasteData(pasteData);
556    const res21 = await systemPasteboard.hasPasteData();
557    expect(res21).assertEqual(true);
558    const pasteData21 = await systemPasteboard.getPasteData();
559    expect(pasteData21.getRecordCount()).assertEqual(1);
560    expect(pasteData21.removeRecordAt(0)).assertEqual(true);
561    await systemPasteboard.setPasteData(pasteData21);
562    systemPasteboard.getPasteData().then((data) => {
563      const recordCount21 = data.getRecordCount();
564      expect(recordCount21).assertEqual(0);
565      done();
566    });
567  });
568
569  /**
570   * @tc.name      pasteboard_promise_test22
571   * @tc.desc      Deletes 300K PlainTextData
572   * @tc.type      Function
573   * @tc.require   AR000H5I1D
574   */
575  it('pasteboard_promise_test22', 0, async function (done) {
576    const systemPasteboard = pasteboard.getSystemPasteboard();
577    await systemPasteboard.clearData();
578    let textData22 = '';
579    for (let i = 0; i < 300; i++) {
580      textData22 = textData22 + 'A';
581    }
582    const pasteData = pasteboard.createPlainTextData(textData22);
583    await systemPasteboard.setPasteData(pasteData);
584    const res22 = await systemPasteboard.hasPasteData();
585    expect(res22).assertEqual(true);
586    const pasteData22 = await systemPasteboard.getPasteData();
587    expect(pasteData22.getRecordCount()).assertEqual(1);
588    expect(pasteData22.removeRecordAt(0)).assertEqual(true);
589    await systemPasteboard.setPasteData(pasteData22);
590    systemPasteboard.getPasteData().then((data) => {
591      const recordCount22 = data.getRecordCount();
592      expect(recordCount22).assertEqual(0);
593      done();
594    });
595  });
596
597  /**
598   * @tc.name      pasteboard_promise_test23
599   * @tc.desc      Deletes 30 record(s)
600   * @tc.type      Function
601   * @tc.require   AR000H5I1D
602   */
603  it('pasteboard_promise_test23', 0, async function (done) {
604    const systemPasteboard = pasteboard.getSystemPasteboard();
605    await systemPasteboard.clearData();
606    const textData230 = 'Hello World';
607    const pasteData = pasteboard.createPlainTextData(textData230);
608    let textData23 = '';
609    for (let i = 1; i < 30; i++) {
610      textData23 = 'Hello World';
611      textData23 = textData23 + i;
612      pasteData.addTextRecord(textData23);
613    }
614    await systemPasteboard.setPasteData(pasteData);
615    const res23 = await systemPasteboard.hasPasteData();
616    expect(res23).assertEqual(true);
617    const pasteData23 = await systemPasteboard.getPasteData();
618    expect(pasteData23.getRecordCount()).assertEqual(30);
619    for (let i = 0; i < 30; i++) {
620      expect(pasteData23.removeRecordAt(0)).assertEqual(true);
621    }
622    expect(pasteData23.getRecordCount()).assertEqual(0);
623    systemPasteboard.setPasteData(pasteData23).then(() => {
624      systemPasteboard.getPasteData().then((data) => {
625        let recordCount23 = data.getRecordCount();
626        expect(recordCount23).assertEqual(0);
627        done();
628      });
629    });
630  });
631
632  /**
633   * @tc.name      pasteboard_promise_test24
634   * @tc.desc      Deletes replaced record
635   * @tc.type      Function
636   * @tc.require   AR000H5I1D
637   */
638  it('pasteboard_promise_test24', 0, async function (done) {
639    const systemPasteboard = pasteboard.getSystemPasteboard();
640    await systemPasteboard.clearData();
641    const textData24 = 'Hello World!';
642    const pasteData = pasteboard.createPlainTextData(textData24);
643    await systemPasteboard.setPasteData(pasteData);
644    const res24 = await systemPasteboard.hasPasteData();
645    expect(res24).assertEqual(true);
646    const pasteData24 = await systemPasteboard.getPasteData();
647    expect(pasteData24.getRecordCount()).assertEqual(1);
648    const textData241 = 'Hello World1';
649    const pasteDataRecord = pasteboard.createPlainTextRecord(textData241);
650    const replace = pasteData24.replaceRecordAt(0, pasteDataRecord);
651    expect(replace).assertEqual(true);
652    const primaryText = pasteData24.getPrimaryText();
653    expect(primaryText).assertEqual(textData241);
654    expect(pasteData24.hasMimeType(pasteboard.MIMETYPE_TEXT_PLAIN)).assertEqual(true);
655    const dataRecord = pasteData24.getRecordAt(0);
656    expect(dataRecord.plainText).assertEqual(textData241);
657    expect(pasteData24.removeRecordAt(0)).assertEqual(true);
658    systemPasteboard.setPasteData(pasteData24).then(() => {
659      systemPasteboard.getPasteData().then((data) => {
660        const recordCount24 = data.getRecordCount();
661        expect(recordCount24).assertEqual(0);
662        done();
663      });
664    });
665  });
666
667  /**
668   * @tc.name      pasteboard_promise_test25
669   * @tc.desc      Deletes 文本、uri、html
670   * @tc.type      Function
671   * @tc.require   AR000H5I1D
672   */
673  it('pasteboard_promise_test25', 0, async function (done) {
674    const systemPasteboard = pasteboard.getSystemPasteboard();
675    await systemPasteboard.clearData();
676    const textData25 = 'Hello World!';
677    const pasteData = pasteboard.createPlainTextData(textData25);
678    const htmlText25 = '<html><head></head><body>Hello World!</body></html>';
679    pasteData.addHtmlRecord(htmlText25);
680    const uriText25 = 'https://www.baidu.com/';
681    pasteData.addUriRecord(uriText25);
682    await systemPasteboard.setPasteData(pasteData);
683    const res25 = await systemPasteboard.hasPasteData();
684    expect(res25).assertEqual(true);
685    const pasteData25 = await systemPasteboard.getPasteData();
686    expect(pasteData25.getRecordCount()).assertEqual(3);
687    expect(pasteData25.removeRecordAt(0)).assertEqual(true);
688    expect(pasteData25.removeRecordAt(0)).assertEqual(true);
689    expect(pasteData25.removeRecordAt(0)).assertEqual(true);
690    systemPasteboard.setPasteData(pasteData25).then(() => {
691      systemPasteboard.getPasteData().then((data) => {
692        const recordCount25 = data.getRecordCount();
693        expect(recordCount25).assertEqual(0);
694        done();
695      });
696    });
697  });
698
699  /**
700   * @tc.name      pasteboard_promise_test26
701   * @tc.desc      Replaces 文本 record
702   * @tc.type      Function
703   * @tc.require   AR000H5I1D
704   */
705  it('pasteboard_promise_test26', 0, async function (done) {
706    const systemPasteboard = pasteboard.getSystemPasteboard();
707    await systemPasteboard.clearData();
708    const textData26 = 'Hello World!';
709    const pasteData = pasteboard.createPlainTextData(textData26);
710    await systemPasteboard.setPasteData(pasteData);
711    const res26 = await systemPasteboard.hasPasteData();
712    expect(res26).assertEqual(true);
713    systemPasteboard.getPasteData().then((data) => {
714      const pasteData26 = data;
715      expect(pasteData26.getRecordCount()).assertEqual(1);
716      const textData261 = 'Hello World1';
717      const pasteDataRecord = pasteboard.createPlainTextRecord(textData261);
718      const replace26 = pasteData26.replaceRecordAt(0, pasteDataRecord);
719      expect(replace26).assertEqual(true);
720      const primaryText26 = pasteData26.getPrimaryText();
721      expect(primaryText26).assertEqual(textData261);
722      done();
723    });
724  });
725
726  /**
727   * @tc.name      pasteboard_promise_test27
728   * @tc.desc      Replaces htmlText record
729   * @tc.type      Function
730   * @tc.require   AR000H5I1D
731   */
732  it('pasteboard_promise_test27', 0, async function (done) {
733    const systemPasteboard = pasteboard.getSystemPasteboard();
734    await systemPasteboard.clearData();
735    const htmlText27 = '<html><head></head><body>Hello World!</body></html>';
736    const pasteData = pasteboard.createHtmlData(htmlText27);
737    await systemPasteboard.setPasteData(pasteData);
738    const res27 = await systemPasteboard.hasPasteData();
739    expect(res27).assertEqual(true);
740    systemPasteboard.getPasteData().then((data) => {
741      const pasteData27 = data;
742      expect(pasteData27.getRecordCount()).assertEqual(1);
743      const htmlText27 = '<html><head></head><body>Hello World 1</body></html>';
744      const pasteDataRecord = pasteboard.createHtmlTextRecord(htmlText27);
745      const replace27 = pasteData27.replaceRecordAt(0, pasteDataRecord);
746      expect(replace27).assertEqual(true);
747      const primaryHtml271 = pasteData27.getPrimaryHtml();
748      expect(primaryHtml271).assertEqual(htmlText27);
749      expect(pasteData27.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
750      const primaryHtml272 = pasteData27.getPrimaryHtml();
751      expect(primaryHtml272).assertEqual(htmlText27);
752      done();
753    });
754  });
755
756  /**
757   * @tc.name      pasteboard_promise_test28
758   * @tc.desc      Replaces uri record
759   * @tc.type      Function
760   * @tc.require   AR000H5I1D
761   */
762  it('pasteboard_promise_test28', 0, async function (done) {
763    const systemPasteboard = pasteboard.getSystemPasteboard();
764    await systemPasteboard.clearData();
765    const uriText28 = 'https://www.baidu.com/';
766    const pasteData = pasteboard.createUriData(uriText28);
767    await systemPasteboard.setPasteData(pasteData);
768    const res28 = await systemPasteboard.hasPasteData();
769    expect(res28).assertEqual(true);
770    systemPasteboard.getPasteData().then((data) => {
771      const pasteData28 = data;
772      expect(pasteData28.getRecordCount()).assertEqual(1);
773      const uriText281 = 'https://www.baidu.com/1';
774      const pasteDataRecord = pasteboard.createUriRecord(uriText281);
775      const replace28 = pasteData28.replaceRecordAt(0, pasteDataRecord);
776      expect(replace28).assertEqual(true);
777      const primaryUri1 = pasteData28.getPrimaryUri();
778      expect(primaryUri1).assertEqual(uriText281);
779      expect(pasteData28.hasMimeType(pasteboard.MIMETYPE_TEXT_URI)).assertEqual(true);
780      const primaryUri2 = pasteData28.getPrimaryUri();
781      expect(primaryUri2).assertEqual(uriText281);
782      done();
783    });
784  });
785
786  /**
787   * @tc.name      pasteboard_promise_test29
788   * @tc.desc      Replaces want record
789   * @tc.type      Function
790   * @tc.require   AR000H5I1D
791   */
792  it('pasteboard_promise_test29', 0, async function (done) {
793    const systemPasteboard = pasteboard.getSystemPasteboard();
794    await systemPasteboard.clearData();
795    const wantText29 = {
796      bundleName: 'com.example.myapplication3',
797      abilityName: 'com.example.myapplication3.MainAbility',
798    };
799    const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_WANT, wantText29);
800    await systemPasteboard.setPasteData(pasteData);
801    const res29 = await systemPasteboard.hasPasteData();
802    expect(res29).assertEqual(true);
803    systemPasteboard.getPasteData().then((data) => {
804      const pasteData29 = data;
805      expect(pasteData29.getRecordCount()).assertEqual(1);
806      const wantText291 = {
807        bundleName: 'com.example.myapplication30',
808        abilityName: 'com.example.myapplication30.MainAbility',
809      };
810      const pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_WANT, wantText291);
811      const replace29 = pasteData29.replaceRecordAt(0, pasteDataRecord);
812      expect(replace29).assertEqual(true);
813      const primaryWant29 = pasteData29.getPrimaryWant();
814      expect(primaryWant29.bundleName).assertEqual(wantText291.bundleName);
815      expect(primaryWant29.abilityName).assertEqual(wantText291.abilityName);
816      done();
817    });
818  });
819
820  /**
821   * @tc.name      pasteboard_promise_test30
822   * @tc.desc      Replaces 300k文本 record
823   * @tc.type      Function
824   * @tc.require   AR000H5I1D
825   */
826  it('pasteboard_promise_test30', 0, async function (done) {
827    const systemPasteboard = pasteboard.getSystemPasteboard();
828    await systemPasteboard.clearData();
829    let textData30 = '';
830    for (let i = 0; i < 300; i++) {
831      textData30 = textData30 + 'A';
832    }
833    const pasteData = pasteboard.createPlainTextData(textData30);
834    await systemPasteboard.setPasteData(pasteData);
835    const res30 = await systemPasteboard.hasPasteData();
836    expect(res30).assertEqual(true);
837    systemPasteboard.getPasteData().then((data) => {
838      const pasteData30 = data;
839      expect(pasteData30.getRecordCount()).assertEqual(1);
840      const textData301 = 'Hello World1';
841      const pasteDataRecord = pasteboard.createPlainTextRecord(textData301);
842      const replace = pasteData30.replaceRecordAt(0, pasteDataRecord);
843      expect(replace).assertEqual(true);
844      const primaryText = pasteData30.getPrimaryText();
845      expect(primaryText).assertEqual(textData301);
846      done();
847    });
848  });
849
850  /**
851   * @tc.name      pasteboard_promise_test31
852   * @tc.desc      Clears pasteBoard, gets record count
853   * @tc.type      Function
854   * @tc.require   AR000H5I1D
855   */
856  it('pasteboard_promise_test31', 0, async function (done) {
857    const systemPasteboard = pasteboard.getSystemPasteboard();
858    await systemPasteboard.clearData();
859    const textData31 = 'Hello World!';
860    const pasteData = pasteboard.createPlainTextData(textData31);
861    await systemPasteboard.setPasteData(pasteData);
862    const res31 = await systemPasteboard.hasPasteData();
863    expect(res31).assertEqual(true);
864    const pasteData31 = await systemPasteboard.getPasteData();
865    expect(pasteData31.getRecordCount()).assertEqual(1);
866    await systemPasteboard.clearData();
867    systemPasteboard.getPasteData().then((data) => {
868      const pasteData2 = data;
869      const recordCount = pasteData2.getRecordCount();
870      expect(recordCount).assertEqual(0);
871      done();
872    });
873  });
874
875  /**
876   * @tc.name      pasteboard_promise_test32
877   * @tc.desc      Adds Property
878   * @tc.type      Function
879   * @tc.require   AR000H5I1D
880   */
881  it('pasteboard_promise_test32', 0, async function (done) {
882    const systemPasteboard = pasteboard.getSystemPasteboard();
883    await systemPasteboard.clearData();
884    const textData32 = 'Hello World!';
885    const pasteData = pasteboard.createPlainTextData(textData32);
886    await systemPasteboard.setPasteData(pasteData);
887    const res32 = await systemPasteboard.hasPasteData();
888    expect(res32).assertEqual(true);
889    const pasteData32 = await systemPasteboard.getPasteData();
890    expect(pasteData32.getRecordCount()).assertEqual(1);
891    const pasteDataProperty = pasteData32.getProperty();
892    expect(pasteDataProperty.shareOption).assertEqual(pasteboard.ShareOption.CrossDevice);
893    pasteDataProperty.shareOption = pasteboard.ShareOption.InApp;
894    pasteData32.setProperty(pasteDataProperty);
895    expect(pasteData32.getProperty().shareOption).assertEqual(pasteboard.ShareOption.InApp);
896    done();
897  });
898
899  /**
900   * @tc.name      pasteboard_promise_test33
901   * @tc.desc      Clears pasteBoard and check property
902   * @tc.type      Function
903   * @tc.require   AR000H5I1D
904   */
905  it('pasteboard_promise_test33', 0, async function (done) {
906    const systemPasteboard = pasteboard.getSystemPasteboard();
907    await systemPasteboard.clearData();
908    const textData33 = 'Hello World!';
909    const pasteData = pasteboard.createPlainTextData(textData33);
910    await systemPasteboard.setPasteData(pasteData);
911    const res33 = await systemPasteboard.hasPasteData();
912    expect(res33).assertEqual(true);
913    systemPasteboard.getPasteData().then(async (data) => {
914      expect(data.getRecordCount()).assertEqual(1);
915      await systemPasteboard.clearData();
916      const newPasteData = await systemPasteboard.getPasteData();
917      expect(newPasteData.getProperty().shareOption).assertEqual(pasteboard.ShareOption.CrossDevice);
918      done();
919    });
920  });
921
922  /**
923   * @tc.name      pasteboard_promise_test34
924   * @tc.desc      打开内容变化通知功能
925   * @tc.type      Function
926   * @tc.require   AR000H5I1D
927   */
928  it('pasteboard_promise_test34', 0, async function (done) {
929    const systemPasteboard = pasteboard.getSystemPasteboard();
930    await systemPasteboard.clearData();
931    systemPasteboard.on('update', contentChanges);
932    const textData34 = 'Hello World!';
933    const pasteData = pasteboard.createPlainTextData(textData34);
934    await systemPasteboard.setPasteData(pasteData);
935    const res34 = await systemPasteboard.hasPasteData();
936    expect(res34).assertEqual(true);
937    systemPasteboard.getPasteData().then((data) => {
938      expect(data.getRecordCount()).assertEqual(1);
939      expect(data.removeRecordAt(0)).assertEqual(true);
940      expect(data.getRecordCount()).assertEqual(0);
941      done();
942    });
943  });
944
945  /**
946   * @tc.name      pasteboard_promise_test35
947   * @tc.desc      清除剪切板内的文本数据项
948   * @tc.type      Function
949   * @tc.require   AR000H5I1D
950   */
951  it('pasteboard_promise_test35', 0, async function (done) {
952    const systemPasteboard = pasteboard.getSystemPasteboard();
953    await systemPasteboard.clearData();
954    const textData35 = 'Hello World!';
955    const pasteData = pasteboard.createPlainTextData(textData35);
956    await systemPasteboard.setPasteData(pasteData);
957    const res35 = await systemPasteboard.hasPasteData();
958    expect(res35).assertEqual(true);
959    const pasteData35 = await systemPasteboard.getPasteData();
960    expect(pasteData35.getRecordCount()).assertEqual(1);
961    await systemPasteboard.clearData();
962    systemPasteboard.getPasteData().then((data) => {
963      const recordCount35 = data.getRecordCount();
964      expect(recordCount35).assertEqual(0);
965      done();
966    });
967  });
968
969  /**
970   * @tc.name      pasteboard_promise_test36
971   * @tc.desc      清除剪切板内的uri数据项
972   * @tc.type      Function
973   * @tc.require   AR000H5I1D
974   */
975  it('pasteboard_promise_test36', 0, async function (done) {
976    const systemPasteboard = pasteboard.getSystemPasteboard();
977    await systemPasteboard.clearData();
978    const uriText36 = 'https://www.baidu.com/';
979    const pasteData = pasteboard.createUriData(uriText36);
980    await systemPasteboard.setPasteData(pasteData);
981    const res36 = await systemPasteboard.hasPasteData();
982    expect(res36).assertEqual(true);
983    const pasteData36 = await systemPasteboard.getPasteData();
984    expect(pasteData36.getRecordCount()).assertEqual(1);
985    await systemPasteboard.clearData();
986    systemPasteboard.getPasteData().then((data) => {
987      const recordCount36 = data.getRecordCount();
988      expect(recordCount36).assertEqual(0);
989      done();
990    });
991  });
992
993  /**
994   * @tc.name      pasteboard_promise_test37
995   * @tc.desc      清除剪切板内的html数据项
996   * @tc.type      Function
997   * @tc.require   AR000H5I1D
998   */
999  it('pasteboard_promise_test37', 0, async function (done) {
1000    const systemPasteboard = pasteboard.getSystemPasteboard();
1001    await systemPasteboard.clearData();
1002    const htmlText37 = '<html><head></head><body>Hello World!</body></html>';
1003    const pasteData = pasteboard.createHtmlData(htmlText37);
1004    await systemPasteboard.setPasteData(pasteData);
1005    const res37 = await systemPasteboard.hasPasteData();
1006    expect(res37).assertEqual(true);
1007    const pasteData37 = await systemPasteboard.getPasteData();
1008    expect(pasteData37.getRecordCount()).assertEqual(1);
1009    await systemPasteboard.clearData();
1010    systemPasteboard.getPasteData().then((data) => {
1011      const recordCount37 = data.getRecordCount();
1012      expect(recordCount37).assertEqual(0);
1013      done();
1014    });
1015  });
1016
1017  /**
1018   * @tc.name      pasteboard_promise_test38
1019   * @tc.desc      清除剪切板内的want数据项
1020   * @tc.type      Function
1021   * @tc.require   AR000H5I1D
1022   */
1023  it('pasteboard_promise_test38', 0, async function (done) {
1024    const systemPasteboard = pasteboard.getSystemPasteboard();
1025    await systemPasteboard.clearData();
1026    const myWant38 = {
1027      bundleName: 'com.example.myapplication55',
1028      abilityName: 'com.example.myapplication55.MainAbility',
1029    };
1030    const pasteData381 = pasteboard.createWantData(myWant38);
1031    await systemPasteboard.setPasteData(pasteData381);
1032    const res38 = await systemPasteboard.hasPasteData();
1033    expect(res38).assertEqual(true);
1034    const pasteData38 = await systemPasteboard.getPasteData();
1035    expect(pasteData38.getRecordCount()).assertEqual(1);
1036    await systemPasteboard.clearData();
1037    systemPasteboard.getPasteData().then((data) => {
1038      const recordCount38 = data.getRecordCount();
1039      expect(recordCount38).assertEqual(0);
1040      done();
1041    });
1042  });
1043
1044  /**
1045   * @tc.name      pasteboard_promise_test39
1046   * @tc.desc      向剪切板内增加30条数据项,然后清除
1047   * @tc.type      Function
1048   * @tc.require   AR000H5I1D
1049   */
1050  it('pasteboard_promise_test39', 0, async function (done) {
1051    const systemPasteboard = pasteboard.getSystemPasteboard();
1052    await systemPasteboard.clearData();
1053    const textData390 = 'Hello World!';
1054    const pasteData = pasteboard.createPlainTextData(textData390);
1055    let textData39 = '';
1056    for (let i = 1; i < 30; i++) {
1057      textData39 = 'Hello World';
1058      textData39 = textData39 + i;
1059      pasteData.addTextRecord(textData39);
1060    }
1061    await systemPasteboard.setPasteData(pasteData);
1062    const res39 = await systemPasteboard.hasPasteData();
1063    expect(res39).assertEqual(true);
1064    const pasteData39 = await systemPasteboard.getPasteData();
1065    expect(pasteData39.getRecordCount()).assertEqual(30);
1066    await systemPasteboard.clearData();
1067    systemPasteboard.getPasteData().then((data) => {
1068      const recordCount39 = data.getRecordCount();
1069      expect(recordCount39).assertEqual(0);
1070      done();
1071    });
1072  });
1073
1074  /**
1075   * @tc.name      pasteboard_promise_test40
1076   * @tc.desc      向剪贴板数据各增加5条文本、uri、html数据,然后清除
1077   * @tc.type      Function
1078   * @tc.require   AR000H5I1D
1079   */
1080  it('pasteboard_promise_test40', 0, async function (done) {
1081    const systemPasteboard = pasteboard.getSystemPasteboard();
1082    await systemPasteboard.clearData();
1083    const textData400 = 'Hello World0';
1084    const pasteData = pasteboard.createPlainTextData(textData400);
1085    let textData40 = '';
1086    for (let i = 1; i < 5; i++) {
1087      textData40 = 'Hello World';
1088      textData40 = textData40 + i;
1089      pasteData.addTextRecord(textData40);
1090    }
1091    let htmlText40 = '';
1092    for (let i = 0; i < 5; i++) {
1093      htmlText40 = '<html><head></head><body>Hello World!</body></html>';
1094      htmlText40 = htmlText40 + i;
1095      pasteData.addHtmlRecord(htmlText40);
1096    }
1097    let uriText40 = '';
1098    for (let i = 0; i < 5; i++) {
1099      uriText40 = 'https://www.baidu.com/';
1100      uriText40 = uriText40 + i;
1101      pasteData.addUriRecord(uriText40);
1102    }
1103    await systemPasteboard.setPasteData(pasteData);
1104    const res40 = await systemPasteboard.hasPasteData();
1105    expect(res40).assertEqual(true);
1106    const data40 = await systemPasteboard.getPasteData();
1107    expect(data40.getRecordCount()).assertEqual(15);
1108    await systemPasteboard.clearData();
1109    systemPasteboard.getPasteData().then((data) => {
1110      const recordCount40 = data.getRecordCount();
1111      expect(recordCount40).assertEqual(0);
1112      done();
1113    });
1114  });
1115
1116  /**
1117   * @tc.name      pasteboard_promise_test41
1118   * @tc.desc      更新剪贴板数据,查询剪贴板存在剪贴板数据
1119   * @tc.type      Function
1120   * @tc.require   AR000HEECD
1121   */
1122  it('pasteboard_promise_test41', 0, async function (done) {
1123    const systemPasteboard = pasteboard.getSystemPasteboard();
1124    await systemPasteboard.clearData();
1125    const textData41 = 'Hello World!';
1126    const pasteData = pasteboard.createPlainTextData(textData41);
1127    await systemPasteboard.setPasteData(pasteData);
1128    const res41 = await systemPasteboard.hasPasteData();
1129    expect(res41).assertEqual(true);
1130    const pasteData41 = await systemPasteboard.getPasteData();
1131    expect(pasteData41.getRecordCount()).assertEqual(1);
1132    const textData411 = 'Hello World1';
1133    const pasteDataRecord = pasteboard.createPlainTextRecord(textData411);
1134    const replace41 = pasteData41.replaceRecordAt(0, pasteDataRecord);
1135    expect(replace41).assertEqual(true);
1136    await systemPasteboard.setPasteData(pasteData41);
1137    systemPasteboard.hasPasteData().then(async (data) => {
1138      expect(data).assertEqual(true);
1139      const newData41 = await systemPasteboard.getPasteData();
1140      expect(newData41.getPrimaryText()).assertEqual(textData411);
1141      const newPasteDataRecord = newData41.getRecordAt(0);
1142      expect(newPasteDataRecord.plainText).assertEqual(textData411);
1143      done();
1144    });
1145  });
1146
1147  /**
1148   * @tc.name      pasteboard_promise_test42
1149   * @tc.desc      删除所有的剪贴板数据,查询剪贴板不存在剪贴板数据
1150   * @tc.type      Function
1151   * @tc.require   AR000HEECD
1152   */
1153  it('pasteboard_promise_test42', 0, async function (done) {
1154    const systemPasteboard = pasteboard.getSystemPasteboard();
1155    await systemPasteboard.clearData();
1156    const textData42 = 'Hello World!';
1157    const data42 = pasteboard.createPlainTextData(textData42);
1158    await systemPasteboard.setPasteData(data42);
1159    const res42 = await systemPasteboard.hasPasteData();
1160    expect(res42).assertEqual(true);
1161    const pasteData42 = await systemPasteboard.getPasteData();
1162    const recordCount = pasteData42.getRecordCount();
1163    expect(recordCount).assertEqual(1);
1164    expect(pasteData42.removeRecordAt(0)).assertEqual(true);
1165    expect(pasteData42.getRecordCount()).assertEqual(0);
1166    const newData42 = await systemPasteboard.getPasteData();
1167    expect(newData42.getRecordCount()).assertEqual(1);
1168    done();
1169  });
1170
1171  /**
1172   * @tc.name      pasteboard_promise_test43
1173   * @tc.desc      将文本数据强制转换为文本
1174   * @tc.type      Function
1175   * @tc.require   AR000HEECD
1176   */
1177  it('pasteboard_promise_test43', 0, async function (done) {
1178    const systemPasteboard = pasteboard.getSystemPasteboard();
1179    await systemPasteboard.clearData();
1180    const textData43 = 'Hello World!';
1181    const pasteData = pasteboard.createPlainTextData(textData43);
1182    await systemPasteboard.setPasteData(pasteData);
1183    const res43 = await systemPasteboard.hasPasteData();
1184    expect(res43).assertEqual(true);
1185    systemPasteboard.getPasteData().then(async (data) => {
1186      const pasteData143 = data;
1187      expect(pasteData143.getRecordCount()).assertEqual(1);
1188      const pasteDataRecord = pasteData143.getRecordAt(0);
1189      const text43 = await pasteDataRecord.convertToText();
1190      expect(text43).assertEqual(textData43);
1191      done();
1192    });
1193  });
1194
1195  /**
1196   * @tc.name      pasteboard_promise_test44
1197   * @tc.desc      将一条含有特殊字符、中英混杂的文本数据强制转换为文本
1198   * @tc.type      Function
1199   * @tc.require   AR000HEECD
1200   */
1201  it('pasteboard_promise_test44', 0, async function (done) {
1202    const systemPasteboard = pasteboard.getSystemPasteboard();
1203    await systemPasteboard.clearData();
1204    const textData44 = 'Hello 中国!@#$%^&*()_+{}?.';
1205    const pasteData = pasteboard.createPlainTextData(textData44);
1206    await systemPasteboard.setPasteData(pasteData);
1207    const res44 = await systemPasteboard.hasPasteData();
1208    expect(res44).assertEqual(true);
1209    const pasteData44 = await systemPasteboard.getPasteData();
1210    expect(pasteData44.getRecordCount()).assertEqual(1);
1211    const pasteDataRecord = pasteData44.getRecordAt(0);
1212    pasteDataRecord.convertToText((err, text) => {
1213      if (err) {
1214        console.info('f_test44 pasteDataRecord.convertToText error: ' + error);
1215      } else {
1216        expect(textData44).assertEqual(text);
1217        done();
1218      }
1219    });
1220  });
1221
1222  /**
1223   * @tc.name      pasteboard_promise_test45
1224   * @tc.desc      将一条超长文本数据 (大小为301K)强制转换为文本
1225   * @tc.type      Function
1226   * @tc.require   AR000HEECD
1227   */
1228  it('pasteboard_promise_test45', 0, async function (done) {
1229    const systemPasteboard = pasteboard.getSystemPasteboard();
1230    await systemPasteboard.clearData();
1231    let textData45 = '';
1232    for (let i = 0; i < 301; i++) {
1233      textData45 = textData45 + 'A';
1234    }
1235    const pasteData = pasteboard.createPlainTextData(textData45);
1236    await systemPasteboard.setPasteData(pasteData);
1237    const res45 = await systemPasteboard.hasPasteData();
1238    expect(res45).assertEqual(true);
1239    const pasteData45 = await systemPasteboard.getPasteData();
1240    expect(pasteData45.getRecordCount()).assertEqual(1);
1241    const pasteDataRecord = pasteData45.getRecordAt(0);
1242    pasteDataRecord.convertToText((err, text) => {
1243      if (err) {
1244        console.info('f_test45 pasteDataRecord.convertToText error: ' + error);
1245      } else {
1246        expect(textData45).assertEqual(text);
1247        done();
1248      }
1249    });
1250  });
1251
1252  /**
1253   * @tc.name      pasteboard_promise_test46
1254   * @tc.desc      将uri数据强制转换为文本
1255   * @tc.type      Function
1256   * @tc.require   AR000HEECD
1257   */
1258  it('pasteboard_promise_test46', 0, async function (done) {
1259    const systemPasteboard = pasteboard.getSystemPasteboard();
1260    await systemPasteboard.clearData();
1261    const uriText46 = 'https://www.baidu.com/';
1262    const pasteData = pasteboard.createUriData(uriText46);
1263    await systemPasteboard.setPasteData(pasteData);
1264    const res46 = await systemPasteboard.hasPasteData();
1265    expect(res46).assertEqual(true);
1266    let pasteData46 = await systemPasteboard.getPasteData();
1267    expect(pasteData46.getRecordCount()).assertEqual(1);
1268    let pasteDataRecord = pasteData46.getRecordAt(0);
1269    pasteDataRecord
1270      .convertToText()
1271      .then((text) => {
1272        expect(uriText46).assertEqual(text);
1273        done();
1274      })
1275      .catch((error) => {
1276        console.info('f_test46 pasteDataRecord.convertToText error: ' + error);
1277      });
1278  });
1279
1280  /**
1281   * @tc.name      pasteboard_promise_test47
1282   * @tc.desc      复制文本、uri格式
1283   * @tc.type      Function
1284   * @tc.require   AR000HEECD
1285   */
1286  it('pasteboard_promise_test47', 0, async function (done) {
1287    const systemPasteboard = pasteboard.getSystemPasteboard();
1288    await systemPasteboard.clearData();
1289    const textData470 = 'Hello World0';
1290    const pasteData = pasteboard.createPlainTextData(textData470);
1291    const uriText47 = pasteboard.createUriRecord('https://www.baidu.com/');
1292    pasteData.addRecord(uriText47);
1293    await systemPasteboard.setPasteData(pasteData);
1294    const res47 = await systemPasteboard.hasPasteData();
1295    expect(res47).assertEqual(true);
1296    systemPasteboard.getPasteData().then((data) => {
1297      const recordCount47 = data.getRecordCount();
1298      expect(recordCount47).assertEqual(2);
1299      const pasteDataRecord1 = data.getRecordAt(0);
1300      const pasteDataRecord2 = data.getRecordAt(1);
1301      expect(pasteDataRecord1.uri).assertEqual(uriText47.uri);
1302      expect(pasteDataRecord2.plainText).assertEqual(textData470);
1303      done();
1304    });
1305  });
1306
1307  /**
1308   * @tc.name      pasteboard_promise_test48
1309   * @tc.desc      关闭内容变化通知功能:向剪贴板数据增加、删除等html数据项
1310   * @tc.type      Function
1311   * @tc.require   AR000HEECD
1312   */
1313  it('pasteboard_promise_test48', 0, async function (done) {
1314    const systemPasteboard = pasteboard.getSystemPasteboard();
1315    await systemPasteboard.clearData();
1316    systemPasteboard.off('update', contentChanges);
1317    const htmlText48 = '<html><head></head><body>Hello World!</body></html>';
1318    const pasteData = pasteboard.createHtmlData(htmlText48);
1319    await systemPasteboard.setPasteData(pasteData);
1320    const res48 = await systemPasteboard.hasPasteData();
1321    expect(res48).assertEqual(true);
1322    systemPasteboard.getPasteData().then((data) => {
1323      expect(data.getRecordCount()).assertEqual(1);
1324      expect(data.removeRecordAt(0)).assertEqual(true);
1325      expect(data.getRecordCount()).assertEqual(0);
1326      done();
1327    });
1328  });
1329
1330  /**
1331   * @tc.name      pasteboard_promise_test49
1332   * @tc.desc      创建pixelMap
1333   * @tc.type      Function
1334   * @tc.require   AR000HEECD
1335   */
1336  it('pasteboard_promise_test49', 0, async function (done) {
1337    const systemPasteboard = pasteboard.getSystemPasteboard();
1338    await systemPasteboard.clearData();
1339    const buffer49 = new ArrayBuffer(128);
1340    const opt49 = {
1341      size: { height: 5, width: 5 },
1342      pixelFormat: 3,
1343      editable: true,
1344      alphaType: 1,
1345      scaleMode: 1,
1346    };
1347    const pixelMap = await image.createPixelMap(buffer49, opt49);
1348    expect(pixelMap.getPixelBytesNumber()).assertEqual(100);
1349    const pasteData49 = pasteboard.createData(pasteboard.MIMETYPE_PIXELMAP, pixelMap);
1350    await systemPasteboard.setPasteData(pasteData49);
1351    const res49 = await systemPasteboard.hasPasteData();
1352    expect(res49).assertEqual(true);
1353    systemPasteboard.getPasteData().then(async (newPasteData) => {
1354      const recordCount49 = newPasteData.getRecordCount();
1355      expect(recordCount49).assertEqual(1);
1356      const newPixelMap49 = newPasteData.getPrimaryPixelMap();
1357      const PixelMapBytesNumber = newPixelMap49.getPixelBytesNumber();
1358      expect(PixelMapBytesNumber).assertEqual(100);
1359      const imageInfo = await newPixelMap49.getImageInfo();
1360      expect(imageInfo.size.height === 5 && imageInfo.size.width === 5).assertEqual(true);
1361      done();
1362    });
1363  });
1364
1365  /**
1366   * @tc.name      pasteboard_promise_test50
1367   * @tc.desc      创建kv Record
1368   * @tc.type      Function
1369   * @tc.require   AR000HEECD
1370   */
1371  it('pasteboard_promise_test50', 0, async function (done) {
1372    const systemPasteboard = pasteboard.getSystemPasteboard();
1373    await systemPasteboard.clearData();
1374    const dataXml50 = new ArrayBuffer(512);
1375    let int32view50 = new Int32Array(dataXml50);
1376    for (let i = 0; i < int32view50.length; i++) {
1377      int32view50[i] = 65535 + i;
1378    }
1379    const pasteDataRecord = pasteboard.createRecord('app/xml', dataXml50);
1380    const dataJpg50 = new ArrayBuffer(256);
1381    pasteDataRecord.data['image/ipg'] = dataJpg50;
1382    const pasteData50 = pasteboard.createHtmlData('application/xml');
1383    const replace = pasteData50.replaceRecordAt(0, pasteDataRecord);
1384    expect(replace).assertEqual(true);
1385    await systemPasteboard.setPasteData(pasteData50);
1386    const res50 = await systemPasteboard.hasPasteData();
1387    expect(res50).assertEqual(true);
1388    systemPasteboard.getPasteData().then((newPasteData) => {
1389      const recordCount50 = newPasteData.getRecordCount();
1390      expect(recordCount50).assertEqual(1);
1391      let newPasteDataRecord = newPasteData.getRecordAt(0);
1392      let newAppXml50 = newPasteDataRecord.data['app/xml'];
1393      let newImageIpg50 = newPasteDataRecord.data['image/ipg'];
1394      expect(newAppXml50.byteLength === 512 && newImageIpg50.byteLength === 256).assertEqual(true);
1395      let newAppXmlView50 = new Int32Array(newAppXml50);
1396      let newImageIpgView50 = new Int32Array(newImageIpg50);
1397      for (let i = 0; i < newAppXmlView50.length; i++) {
1398        console.info('newAppXml[' + i + '] = ' + newAppXmlView50[i]);
1399      }
1400      for (let i = 0; i < newImageIpgView50.length; i++) {
1401        console.info('newImageIpg[' + i + '] = ' + newImageIpg50[i]);
1402      }
1403      done();
1404    });
1405  });
1406
1407  /**
1408   * @tc.name      pasteboard_promise_test51
1409   * @tc.desc      测试addPixelMapRecord
1410   * @tc.type      Function
1411   * @tc.require   AR000HEECD
1412   */
1413  it('pasteboard_promise_test51', 0, async function (done) {
1414    const systemPasteboard = pasteboard.getSystemPasteboard();
1415    await systemPasteboard.clearData();
1416    const buffer51 = new ArrayBuffer(128);
1417    const opt51 = {
1418      size: { height: 5, width: 5 },
1419      pixelFormat: 3,
1420      editable: true,
1421      alphaType: 1,
1422      scaleMode: 1,
1423    };
1424    const pasteData51 = pasteboard.createHtmlData('application/xml');
1425    const pixelMap = await image.createPixelMap(buffer51, opt51);
1426    expect(pixelMap.getPixelBytesNumber() === 100).assertEqual(true);
1427    pasteData51.addRecord(pasteboard.MIMETYPE_PIXELMAP, pixelMap);
1428    await systemPasteboard.setPasteData(pasteData51);
1429    const res51 = await systemPasteboard.hasPasteData();
1430    expect(res51).assertEqual(true);
1431    systemPasteboard.getPasteData().then(async (newPasteData) => {
1432      const recordCount51 = newPasteData.getRecordCount();
1433      expect(recordCount51).assertEqual(2);
1434      const newPixelMap51 = newPasteData.getPrimaryPixelMap();
1435      const PixelMapBytesNumber51 = newPixelMap51.getPixelBytesNumber();
1436      expect(PixelMapBytesNumber51).assertEqual(100);
1437      const newHtmlData51 = newPasteData.getRecordAt(1);
1438      expect(newHtmlData51.htmlText).assertEqual('application/xml');
1439      const imageInfo51 = await newPixelMap51.getImageInfo();
1440      expect(imageInfo51.size.height === 5 && imageInfo51.size.width === 5).assertEqual(true);
1441      done();
1442    });
1443  });
1444
1445  /**
1446   * @tc.name      pasteboard_promise_test52
1447   * @tc.desc      支持512个record
1448   * @tc.type      Function
1449   * @tc.require   AR000HEECB
1450   */
1451  it('pasteboard_promise_test52', 0, async function (done) {
1452    const systemPasteboard = pasteboard.getSystemPasteboard();
1453    await systemPasteboard.clearData();
1454    const dataHtml52 = new ArrayBuffer(256);
1455    const htmlText52 = '<html><head></head><body>Hello!</body></html>';
1456    const uriText52 = 'https://www.baidu.com/';
1457    const wantText52 = {
1458      bundleName: 'com.example.myapplication3',
1459      abilityName: 'com.example.myapplication3.MainAbility',
1460    };
1461    const plainText52 = '';
1462    const pasteData52 = pasteboard.createData('x'.repeat(1024), dataHtml52);
1463    const record52 = pasteData52.getRecordAt(0);
1464    record52.htmlText = htmlText52;
1465    record52.plainText = plainText52;
1466    record52.uri = uriText52;
1467    record52.want = wantText52;
1468    const buffer52 = new ArrayBuffer(128);
1469    const opt52 = {
1470      size: { height: 5, width: 5 },
1471      pixelFormat: 3,
1472      editable: true,
1473      alphaType: 1,
1474      scaleMode: 1,
1475    };
1476    const pixelMap = await image.createPixelMap(buffer52, opt52);
1477    record52.pixelMap = pixelMap;
1478    pasteData52.replaceRecordAt(0, record52);
1479    for (let i = 0; i < 511; i++) {
1480      pasteData52.addRecord(record52);
1481    }
1482    await systemPasteboard.setPasteData(pasteData52);
1483    const res52 = await systemPasteboard.hasPasteData();
1484    expect(res52).assertTrue();
1485    systemPasteboard.getPasteData().then((data) => {
1486      expect(data.getRecordCount()).assertEqual(512);
1487      expect(data.getRecordAt(0).mimeType).assertEqual('x'.repeat(1024));
1488      expect(data.getPrimaryWant().bundleName).assertEqual(wantText52.bundleName);
1489      expect(data.getRecordAt(253).htmlText).assertEqual(htmlText52);
1490      expect(data.getRecordAt(511).plainText).assertEqual(plainText52);
1491      done();
1492    });
1493  });
1494
1495  /**
1496   * @tc.name      pasteboard_promise_test53
1497   * @tc.desc      html
1498   * @tc.type      Function
1499   * @tc.require   AR000H5HVI
1500   */
1501  it('pasteboard_promise_test53', 0, async function (done) {
1502    const systemPasteboard = pasteboard.getSystemPasteboard();
1503    await systemPasteboard.clearData();
1504    const textData = "<!DOCTYPE html><html><head><title>" +
1505    "的厚爱hi哦</title></head><body><h2>恶风无关痛痒和</h2>" +
1506    "<p>Greg任何人https://exampsaole.com问我的<a href=\"https://exaeqdwerfmple.com\">" +
1507    "如果qwiuyhw@huedqw.dsh站</a>。</p></body></html>";
1508    const pasteData = pasteboard.createHtmlData(textData);
1509    await systemPasteboard.setPasteData(pasteData);
1510    const res = await systemPasteboard.hasPasteData();
1511    expect(res).assertEqual(true);
1512    const patterns = [pasteboard.Pattern.EMAIL_ADDRESS, pasteboard.Pattern.NUMBER];
1513    systemPasteboard.detectPatterns(patterns).then((data) => {
1514      const patternsRight = [pasteboard.Pattern.EMAIL_ADDRESS];
1515      expect(data.sort().join('')).assertEqual(patternsRight.sort().join(''));
1516      done();
1517    }).catch((error)=>{
1518      console.error('promise_test53: systemPasteboard.detectPatterns promise error:' + error.message);
1519      return;
1520    });
1521  });
1522
1523  /**
1524   * @tc.name      pasteboard_promise_test54
1525   * @tc.desc      plaintext
1526   * @tc.type      Function
1527   * @tc.require   AR000H5HVI
1528   */
1529  it('pasteboard_promise_test54', 0, async function (done) {
1530    const systemPasteboard = pasteboard.getSystemPasteboard();
1531    await systemPasteboard.clearData();
1532    const textData = "部分人的十点半:\n" +
1533    "「而飞过海」\n" +
1534    "方法:\n" +
1535    "https://pr5yyye-drseyive.u54yk.cwerfe/s/42e1ewed77f3dab4" +
1536    "网gest加尔文iqru发的我ui哦计划任务i文化人:\n" +
1537    "~b0043fg3423tddj~";
1538    const pasteData = pasteboard.createPlainTextData(textData);
1539    await systemPasteboard.setPasteData(pasteData);
1540    const res = await systemPasteboard.hasPasteData();
1541    expect(res).assertEqual(true);
1542    const patterns = [pasteboard.Pattern.EMAIL_ADDRESS,
1543      pasteboard.Pattern.URL, pasteboard.Pattern.NUMBER];
1544    systemPasteboard.detectPatterns(patterns).then((data) => {
1545      const patternsRight = [pasteboard.Pattern.NUMBER, pasteboard.Pattern.URL];
1546      expect(data.sort().join('')).assertEqual(patternsRight.sort().join(''));
1547      done();
1548    }).catch((error)=>{
1549      console.error('promise_test54: systemPasteboard.detectPatterns promise error:' + error.message);
1550      return;
1551    });
1552  });
1553
1554  /**
1555   * @tc.name      pasteboard_promise_test55
1556   * @tc.desc      Add html with local uri
1557   * @tc.type      Function
1558   * @tc.require   AR000H5HVI
1559   */
1560  it('pasteboard_promise_test55', 0, async function (done) {
1561    const systemPasteboard = pasteboard.getSystemPasteboard();
1562    await systemPasteboard.clearData();
1563    const htmlText5 = "<html><head></head><body><div class='item'><img " +
1564        "src='file:///com.example.webview/data/storage/el1/base/test.png'></div></body></html>";
1565    const pasteData = pasteboard.createHtmlData(htmlText5);
1566    await systemPasteboard.setPasteData(pasteData);
1567    const res5 = await systemPasteboard.hasPasteData();
1568    expect(res5).assertEqual(true);
1569    systemPasteboard.getPasteData().then((data) => {
1570      const pasteData5 = data;
1571      expect(pasteData5.getRecordCount()).assertEqual(1);
1572      const primaryHtml6 = pasteData5.getPrimaryHtml();
1573      expect(primaryHtml6).assertEqual(htmlText5);
1574      expect(pasteData5.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
1575      expect(pasteData5.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
1576      done();
1577    });
1578  });
1579
1580  /**
1581   * @tc.name      pasteboard_promise_test56
1582   * @tc.desc      Add html with distributed uri
1583   * @tc.type      Function
1584   * @tc.require   AR000H5HVI
1585   */
1586  it('pasteboard_promise_test56', 0, async function (done) {
1587    const systemPasteboard = pasteboard.getSystemPasteboard();
1588    await systemPasteboard.clearData();
1589    const htmlText5 = "<html><head></head><body><div class='item'><img src='file://com.byy.testdpb/data/storage/el2/" +
1590        "distributedfiles/.remote_share/data/storage/el2/base/haps/entry/cache/t1.jpg'></div></body></html>";
1591    const pasteData = pasteboard.createHtmlData(htmlText5);
1592    await systemPasteboard.setPasteData(pasteData);
1593    const res5 = await systemPasteboard.hasPasteData();
1594    expect(res5).assertEqual(true);
1595    systemPasteboard.getPasteData().then((data) => {
1596      const pasteData5 = data;
1597      expect(pasteData5.getRecordCount()).assertEqual(1);
1598      const primaryHtml6 = pasteData5.getPrimaryHtml();
1599      expect(primaryHtml6).assertEqual(htmlText5);
1600      expect(pasteData5.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
1601      expect(pasteData5.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
1602      done();
1603    });
1604  });
1605
1606  /**
1607   * @tc.name      pasteboard_promise_test57
1608   * @tc.desc      Add html with uris
1609   * @tc.type      Function
1610   * @tc.require   AR000H5HVI
1611   */
1612  it('pasteboard_promise_test57', 0, async function (done) {
1613    const systemPasteboard = pasteboard.getSystemPasteboard();
1614    await systemPasteboard.clearData();
1615    const htmlText5 = "<html><head></head><body><div class='item'><img src='file://com.byy.testdpb/data/storage/el2/" +
1616        "distributedfiles/.remote_share/data/storage/el2/base/haps/entry/cache/t1.jpg'></div>" +
1617        "<div class='item'><img src='file:///com.example.webview/data/storage/el1/base/test.png'></div></body></html>";
1618    const pasteData = pasteboard.createHtmlData(htmlText5);
1619    await systemPasteboard.setPasteData(pasteData);
1620    const res5 = await systemPasteboard.hasPasteData();
1621    expect(res5).assertEqual(true);
1622    systemPasteboard.getPasteData().then((data) => {
1623      const pasteData5 = data;
1624      expect(pasteData5.getRecordCount()).assertEqual(1);
1625      const primaryHtml6 = pasteData5.getPrimaryHtml();
1626      expect(primaryHtml6).assertEqual(htmlText5);
1627      expect(pasteData5.hasMimeType(pasteboard.MIMETYPE_TEXT_HTML)).assertEqual(true);
1628      expect(pasteData5.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
1629      done();
1630    });
1631  });
1632
1633  /**
1634   * @tc.name      pasteboard_promise_test58
1635   * @tc.desc      test addEntry and getData
1636   * @tc.type      Function
1637   * @tc.require   AR000HEECD
1638   */
1639  it('pasteboard_promise_test58', 0, async function (done) {
1640    const htmlText = "<html><head></head><body>Hello World!</body></html>";
1641    const plainData = "Hello World!";
1642    const uriText = "https://www.AACCSVDSVSDV.com/";
1643    const buffer58 = new ArrayBuffer(128);
1644    const opt58 = {
1645      size: { height: 5, width: 5 },
1646      pixelFormat: 3,
1647      editable: true,
1648      alphaType: 1,
1649      scaleMode: 1,
1650    };
1651    const pixelMap = await image.createPixelMap(buffer58, opt58);
1652    const pasteRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText);
1653    pasteRecord.addEntry(pasteboard.MIMETYPE_TEXT_PLAIN, plainData);
1654    pasteRecord.addEntry(pasteboard.MIMETYPE_TEXT_URI, uriText);
1655    pasteRecord.addEntry(pasteboard.MIMETYPE_PIXELMAP, pixelMap);
1656
1657    const html = await pasteRecord.getData(pasteboard.MIMETYPE_TEXT_HTML);
1658    expect(html.toString()).assertEqual(htmlText.toString());
1659    const plain = await pasteRecord.getData(pasteboard.MIMETYPE_TEXT_PLAIN);
1660    expect(plain.toString()).assertEqual(plainData.toString());
1661    const uri = await pasteRecord.getData(pasteboard.MIMETYPE_TEXT_URI);
1662    expect(uri.toString()).assertEqual(uriText.toString());
1663    const pixel = await pasteRecord.getData(pasteboard.MIMETYPE_PIXELMAP);
1664    const PixelMapBytesNumber = pixel.getPixelBytesNumber();
1665    expect(PixelMapBytesNumber).assertEqual(100);
1666    const imageInfo = await pixel.getImageInfo();
1667    expect(imageInfo.size.height === 5 && imageInfo.size.width === 5).assertEqual(true);
1668
1669    done();
1670  });
1671
1672
1673  /**
1674   * @tc.name      pasteboard_promise_test59
1675   * @tc.desc      Single style with createData(Record) function.
1676   * @tc.type      Function
1677   * @tc.require   API 14
1678   */
1679  it('pasteboard_promise_test59', 0, async function (done) {
1680    const systemPasteboard = pasteboard.getSystemPasteboard();
1681    await systemPasteboard.clearData();
1682
1683    let inputData = 'Hello world.';
1684    let outputData = await copyPasteWithRecord(pasteboard.MIMETYPE_TEXT_PLAIN, inputData, systemPasteboard);
1685    expect(outputData).assertEqual(inputData);
1686
1687    inputData = '<p>Hello world.</p>';
1688    outputData = await copyPasteWithRecord(pasteboard.MIMETYPE_TEXT_HTML, inputData, systemPasteboard);
1689    expect(outputData).assertEqual(inputData);
1690
1691    inputData = 'file://abc/def.png';
1692    outputData = await copyPasteWithRecord(pasteboard.MIMETYPE_TEXT_URI, inputData, systemPasteboard);
1693    expect(outputData).assertEqual(inputData);
1694
1695    let inputWant = {
1696      deviceId: '',
1697      bundleName: 'test.bundle.name',
1698      abilityName: 'test.ability,name',
1699      moduleName: 'test.module.name',
1700    };
1701    outputData = await copyPasteWithRecord(pasteboard.MIMETYPE_TEXT_WANT, inputWant, systemPasteboard);
1702    expect(outputData.bundleName).assertEqual(inputWant.bundleName);
1703
1704    let inputPixelMap = await buildPixelMap();
1705    outputData = await copyPasteWithRecord(pasteboard.MIMETYPE_PIXELMAP, inputPixelMap, systemPasteboard);
1706    expect(outputData.getImageInfoSync().size.width).assertEqual(inputPixelMap.getImageInfoSync().size.width);
1707    expect(outputData.getImageInfoSync().size.height).assertEqual(inputPixelMap.getImageInfoSync().size.height);
1708
1709    let inputArrayBuffer = string2ArrayBuffer('Hello world.');
1710    outputData = await copyPasteWithRecord('my-mime-type', inputArrayBuffer, systemPasteboard);
1711    expect(outputData.toString()).assertEqual(inputArrayBuffer.toString());
1712
1713    await systemPasteboard.clearData();
1714    done();
1715  });
1716
1717  /**
1718   * @tc.name      pasteboard_promise_test60
1719   * @tc.desc      Multi style with createData(Record) function.
1720   * @tc.type      Function
1721   * @tc.require   API 14
1722   */
1723  it('pasteboard_promise_test60', 0, async function (done) {
1724    const systemPasteboard = pasteboard.getSystemPasteboard();
1725    await systemPasteboard.clearData();
1726
1727    let record = await initRecordData();
1728    await systemPasteboard.setData(pasteboard.createData(record));
1729
1730    systemPasteboard.getData().then(async (outputData) => {
1731      const recordCount = outputData.getRecordCount();
1732      console.log('actual recordCount: ' + recordCount);
1733      expect(recordCount).assertEqual(1);
1734
1735      const outRecord = outputData.getRecord(0);
1736      const outTypes = outRecord.getValidTypes(allTypes);
1737      console.log('outTypes: ' + outTypes.toString());
1738
1739      for (const type of outTypes) {
1740        console.log('check type: ' + type);
1741        const outValue = await outRecord.getData(type);
1742        expect(outValue != null).assertTrue();
1743        const inValue = record[type];
1744        if (type === pasteboard.MIMETYPE_TEXT_WANT) {
1745          console.log('actual bundleName: ' + outValue.bundleName);
1746          expect(outValue.bundleName.length > 0).assertTrue();
1747        } else if (type === pasteboard.MIMETYPE_PIXELMAP) {
1748          expect(outValue !== null && outValue !== undefined).assertTrue();
1749        } else {
1750          console.log('type: ' + type + ', actual strValue: ' + outValue.toString() + ', expect strValue: ' + inValue.toString());
1751          expect(outValue.toString()).assertEqual(inValue.toString());
1752        }
1753      }
1754
1755      await systemPasteboard.clearData();
1756      done();
1757    });
1758  });
1759
1760  /**
1761   * @tc.name      pasteboard_promise_test61
1762   * @tc.desc      Multi style with addEntry function.
1763   * @tc.type      Function
1764   * @tc.require   API 14
1765   */
1766  it('pasteboard_promise_test61', 0, async function (done) {
1767    const systemPasteboard = pasteboard.getSystemPasteboard();
1768    await systemPasteboard.clearData();
1769
1770    let record = await initRecordData();
1771    let recordTmp = await initRecordData('temp');
1772
1773    let inData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, 'temp value');
1774
1775    for (const item of Object.entries(record)) {
1776      if (item[0] === pasteboard.MIMETYPE_TEXT_PLAIN) {
1777        continue;
1778      }
1779      let inRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_PLAIN, recordTmp[pasteboard.MIMETYPE_TEXT_PLAIN]);
1780      inRecord.addEntry(pasteboard.MIMETYPE_TEXT_PLAIN, record[pasteboard.MIMETYPE_TEXT_PLAIN]);
1781      inRecord.addEntry(item[0], recordTmp[item[0]]);
1782      inRecord.addEntry(item[0], item[1]);
1783      inData.replaceRecord(0, inRecord);
1784      await systemPasteboard.setData(inData);
1785
1786      console.log('copy success');
1787      const outputData = await systemPasteboard.getData();
1788
1789      console.log('actual recordCount: ' + outputData.getRecordCount());
1790      expect(outputData.getRecordCount()).assertEqual(1);
1791      const outRecord = outputData.getRecord(0);
1792
1793      const inTypes = [pasteboard.MIMETYPE_TEXT_PLAIN, item[0]];
1794      console.log('actual validTypes: ' + outRecord.getValidTypes(inTypes).toString());
1795      expect(outRecord.getValidTypes(inTypes).toString()).assertEqual(inTypes.toString());
1796      console.log('actual mimeType: ' + outRecord.mimeType);
1797      expect(outRecord.mimeType).assertEqual(pasteboard.MIMETYPE_TEXT_PLAIN);
1798      console.log('actual plainText: ' + outRecord.plainText);
1799      expect(outRecord.plainText).assertEqual(record[pasteboard.MIMETYPE_TEXT_PLAIN]);
1800
1801      const outValue = await outRecord.getData(item[0]);
1802      if (item[0] === pasteboard.MIMETYPE_TEXT_WANT) {
1803        console.log('actual bundleName: ' + outValue.bundleName);
1804        expect(outValue.bundleName).assertEqual(item[1].bundleName);
1805      } else if (item[0] === pasteboard.MIMETYPE_PIXELMAP) {
1806        console.log('actual width: ' + outValue.getImageInfoSync().size.width);
1807        expect(outValue.getImageInfoSync().size.width).assertEqual(item[1].getImageInfoSync().size.width);
1808        expect(outValue.getImageInfoSync().size.height).assertEqual(item[1].getImageInfoSync().size.height);
1809      } else {
1810        console.log('type: ' + item[0] + ', actual strValue: ' + outValue.toString());
1811        expect(outValue.toString()).assertEqual(item[1].toString());
1812      }
1813    }
1814
1815    await systemPasteboard.clearData();
1816    done();
1817  });
1818
1819  /**
1820   * @tc.name      pasteboard_promise_test62
1821   * @tc.desc      Paste record's getValidType function.
1822   * @tc.type      Function
1823   * @tc.require   API 14
1824   */
1825  it('pasteboard_promise_test62', 0, async function (done) {
1826    const systemPasteboard = pasteboard.getSystemPasteboard();
1827    await systemPasteboard.clearData();
1828
1829    let record = await initRecordData();
1830    await systemPasteboard.setData(pasteboard.createData(record));
1831
1832    const outputData = await systemPasteboard.getData();
1833    const recordCount = outputData.getRecordCount();
1834    console.log('actual recordCount: ' + recordCount);
1835    expect(recordCount).assertEqual(1);
1836
1837    const outRecord = outputData.getRecord(0);
1838    let outTypes = outRecord.getValidTypes(allTypes);
1839    console.log('actual outTypes1: ' + outTypes.toString());
1840    expect(outTypes.toString()).assertEqual(allTypes.toString());
1841
1842    const partilyTypes = [pasteboard.MIMETYPE_TEXT_HTML, myType];
1843    outTypes = outRecord.getValidTypes(partilyTypes);
1844    console.log('actual outTypes2: ' + outTypes.toString());
1845    expect(outTypes.toString()).assertEqual(partilyTypes.toString());
1846
1847    outTypes = outRecord.getValidTypes([]);
1848    console.log('actual outTypes3: ' + outTypes.toString());
1849    expect(outTypes.length).assertEqual(0);
1850
1851    await systemPasteboard.setData(pasteboard.createData({
1852      'text/plain' : 'hello world',
1853      'text/uri' : 'file://abc.def.png',
1854    }));
1855    const outRecord1 = (await systemPasteboard.getData()).getRecord(0);
1856    outTypes = outRecord1.getValidTypes(allTypes);
1857    console.log('actual outTypes4: ' + outTypes.toString());
1858    expect(outTypes.toString()).assertEqual([pasteboard.MIMETYPE_TEXT_PLAIN, pasteboard.MIMETYPE_TEXT_URI].toString());
1859
1860    await systemPasteboard.clearData();
1861    done();
1862  });
1863
1864  async function copyPasteWithRecord(mimeType, value, systemPasteboard) {
1865    let record = {};
1866    record[mimeType] = value;
1867    let data = pasteboard.createData(record);
1868    await systemPasteboard.setData(data);
1869
1870    let outData = await systemPasteboard.getData();
1871    if (outData.getRecordCount() !== 1) {
1872      return '';
1873    }
1874    let pasteRecord = outData.getRecord(0);
1875    let valieMimeType = pasteRecord.getValidTypes([mimeType]);
1876    return await pasteRecord.getData(valieMimeType.pop());
1877  }
1878
1879  async function buildPixelMap() {
1880    let buffer = new ArrayBuffer(500);
1881    let realSize = {height: 5, width: 100};
1882    let opt = {
1883      size: realSize,
1884      pixelFormat: 3,
1885      editable: true,
1886      alphaType: 1,
1887      scaleMode: 1,
1888    };
1889    return await image.createPixelMap(buffer, opt);
1890  }
1891
1892  function string2ArrayBuffer(input) {
1893     let arr = [];
1894     for (let index = 0; index < input.length; index++) {
1895       arr.push(input.charCodeAt(index));
1896     }
1897     let arrayBuffer = new Uint8Array(arr).buffer;
1898     return arrayBuffer;
1899  }
1900
1901  async function initRecordData(temp) {
1902    const inputPlainText = 'Hello world.' + (temp ? temp : '');
1903    const inputHtml = '<p>Hello world.' + (temp ? temp : '') + '</p>';
1904    const inputUri = 'file://abc/def' + (temp ? temp : '') + '.png';
1905    const inputWant = {
1906      deviceId: '',
1907      bundleName: 'test.bundle.name' + (temp ? temp : ''),
1908      abilityName: 'test.ability,name' + (temp ? temp : ''),
1909      moduleName: 'test.module.name' + (temp ? temp : ''),
1910    };
1911    const inputPixelMap = await buildPixelMap();
1912    const inputArrayBuffer = string2ArrayBuffer('Hello world.' + (temp ? temp : ''));
1913
1914    let record = {};
1915    record[pasteboard.MIMETYPE_TEXT_PLAIN] = inputPlainText;
1916    record[pasteboard.MIMETYPE_TEXT_HTML] = inputHtml;
1917    record[pasteboard.MIMETYPE_TEXT_URI] = inputUri;
1918    record[pasteboard.MIMETYPE_TEXT_WANT] = inputWant;
1919    record[pasteboard.MIMETYPE_PIXELMAP] = inputPixelMap;
1920    record[myType] = inputArrayBuffer;
1921
1922    return record;
1923  }
1924
1925  /**
1926   * @tc.name      pasteboard_promise_test63
1927   * @tc.desc      html
1928   * @tc.type      Function
1929   * @tc.require   AR20241012964265
1930   */
1931    it('pasteboard_promise_test63', 0, async function (done) {
1932      const systemPasteboard = pasteboard.getSystemPasteboard();
1933      await systemPasteboard.clearData();
1934      const textData = "<!DOCTYPE html><html><head><title>" +
1935      "的厚爱hi哦</title></head><body><h2>恶风无关痛痒和</h2>" +
1936      "<p>Greg任何人https://exampsaole.com问我的<a href=\"https://exaeqdwerfmple.com\">" +
1937      "如果qwiuyhw@huedqw.dsh站</a>。</p></body></html>";
1938      const pasteData = pasteboard.createHtmlData(textData);
1939      await systemPasteboard.setPasteData(pasteData);
1940      const res = await systemPasteboard.hasPasteData();
1941      expect(res).assertEqual(true);
1942      systemPasteboard.getMimeTypes().then((data) => {
1943        expect(data.length).assertEqual(1);
1944        expect(data[0]).assertEqual(pasteboard.MIMETYPE_TEXT_HTML);
1945        done();
1946      });
1947    });
1948
1949    /**
1950     * @tc.name      pasteboard_promise_test47
1951     * @tc.desc      复制文本、uri格式
1952     * @tc.type      Function
1953     * @tc.require   AR20241012964265
1954     */
1955    it('pasteboard_promise_test64', 0, async function (done) {
1956      const systemPasteboard = pasteboard.getSystemPasteboard();
1957      await systemPasteboard.clearData();
1958      const textData64 = 'Hello World0';
1959      const pasteData = pasteboard.createPlainTextData(textData64);
1960      const uriText64 = pasteboard.createUriRecord('https://www.baidu.com/');
1961      pasteData.addRecord(uriText64);
1962      const htmlText64 = '<html><head></head><body>Hello World 1</body></html>';
1963      const pasteDataRecord = pasteboard.createHtmlTextRecord(htmlText64);
1964      pasteData.addRecord(pasteDataRecord);
1965      await systemPasteboard.setPasteData(pasteData);
1966
1967      systemPasteboard.getMimeTypes().then((data) => {
1968        expect(data.length).assertEqual(3);
1969        const expectedMimeTypes = new Set([pasteboard.MIMETYPE_TEXT_PLAIN, pasteboard.MIMETYPE_TEXT_HTML, pasteboard.MIMETYPE_TEXT_URI]);
1970        expect(Array.from(data).every(type => expectedMimeTypes.has(type))).assertEqual(true);
1971        done();
1972      });
1973    });
1974
1975  /**
1976   *  The callback function is used for pasteboard content changes
1977   */
1978  function contentChanges() {
1979    console.info('#EVENT: The content is changed in the pasteboard');
1980  }
1981});