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'; 19 20describe('PasteBoardJSTest', function () { 21 const myType = 'my-mime-type'; 22 const allTypes = [pasteboard.MIMETYPE_TEXT_PLAIN, pasteboard.MIMETYPE_TEXT_HTML, pasteboard.MIMETYPE_TEXT_URI, 23 pasteboard.MIMETYPE_TEXT_WANT, pasteboard.MIMETYPE_PIXELMAP, myType 24 ]; 25 26 beforeAll(async function () { 27 console.info('beforeAll'); 28 }); 29 30 afterAll(async function () { 31 console.info('afterAll'); 32 }); 33 34 /** 35 * @tc.name pasteboard_exception_test1 36 * @tc.desc 自定义数据测试 37 * @tc.type Function 38 * @tc.require AR000HEECB 39 */ 40 it('pasteboard_exception_test1', 0, async function (done) { 41 const systemPasteboard = pasteboard.getSystemPasteboard(); 42 await systemPasteboard.clearData(); 43 let pasteData = undefined; 44 console.info('systemPasteboard clear data success'); 45 const dataUri = new ArrayBuffer(256); 46 pasteData = pasteboard.createData('xxx', dataUri); 47 const addUri = new ArrayBuffer(128); 48 pasteData.addRecord('xxx', addUri); 49 const recordUri = new ArrayBuffer(96); 50 const pasteDataRecord = pasteboard.createRecord('xxx', recordUri); 51 pasteData.addRecord(pasteDataRecord); 52 await systemPasteboard.setPasteData(pasteData); 53 console.info('Set pastedata success'); 54 const res = await systemPasteboard.hasPasteData(); 55 console.info('Check pastedata has data success, result: ' + res); 56 expect(res).assertTrue(); 57 const data = await systemPasteboard.getPasteData(); 58 console.info('Get paste data success'); 59 expect(data.getRecordCount()).assertEqual(3); 60 expect(data.getRecordAt(0).data['xxx'].byteLength).assertEqual(96); 61 expect(data.getRecordAt(1).data['xxx'].byteLength).assertEqual(128); 62 expect(data.getRecordAt(2).data['xxx'].byteLength).assertEqual(256); 63 done(); 64 }); 65 66 /** 67 * @tc.name pasteboard_exception_test2 68 * @tc.desc 自定义数据测试 69 * @tc.type Function 70 * @tc.require AR000HEECB 71 */ 72 it('pasteboard_exception_test2', 0, async function (done) { 73 const systemPasteboard = pasteboard.getSystemPasteboard(); 74 await systemPasteboard.clearData(); 75 console.info('systemPasteboard clear data success'); 76 let pasteData = undefined; 77 let pasteRecord = undefined; 78 const dataHtml = new ArrayBuffer(256); 79 pasteData = pasteboard.createData('xy', dataHtml); 80 expect(pasteData != undefined).assertTrue(); 81 pasteData.addRecord('x'.repeat(1024), dataHtml); 82 expect(pasteData.getRecordCount()).assertEqual(2); 83 pasteRecord = pasteboard.createRecord('xy2', dataHtml); 84 expect(pasteRecord != undefined).assertTrue(); 85 pasteData.addRecord(pasteRecord); 86 await systemPasteboard.setPasteData(pasteData); 87 console.info('set pastedata success'); 88 const res = await systemPasteboard.hasPasteData(); 89 console.info('Check pastedata has data success, result: ' + res); 90 expect(res).assertTrue(); 91 systemPasteboard.getPasteData().then((data) => { 92 console.info('get paste data success'); 93 expect(data.getRecordCount()).assertEqual(3); 94 expect(data.getRecordAt(0).mimeType).assertEqual('xy2'); 95 expect(data.getRecordAt(1).mimeType).assertEqual('x'.repeat(1024)); 96 expect(data.getRecordAt(2).mimeType).assertEqual('xy'); 97 done(); 98 }); 99 }); 100 101 /** 102 * @tc.name pasteboard_exception_test3 103 * @tc.desc 自定义数据异常测试 104 * @tc.type Function 105 * @tc.require AR000HEECB 106 */ 107 it('pasteboard_exception_test3', 0, async function (done) { 108 console.info('pasteboard_exception_test1 start'); 109 const systemPasteboard = pasteboard.getSystemPasteboard(); 110 await systemPasteboard.clearData(); 111 console.info('systemPasteboard clear data success'); 112 let pasteData = undefined; 113 let pasteRecord = undefined; 114 115 // test createData 116 let dataHtml = new ArrayBuffer(256); 117 try { 118 pasteData = pasteboard.createData('x'.repeat(1025), dataHtml); 119 expect(true === false).assertTrue(); 120 } catch (error) { 121 console.info(error.code); 122 console.info(error.message); 123 } 124 125 expect(pasteData).assertEqual(undefined); 126 pasteData = pasteboard.createData('x'.repeat(1024), dataHtml); 127 expect(pasteData != undefined).assertTrue(); 128 129 // test addRecord 130 try { 131 pasteData.addRecord('x'.repeat(1025), dataHtml); 132 expect(true === false).assertTrue(); 133 } catch (error) { 134 console.info(error.code); 135 console.info(error.message); 136 } 137 expect(pasteData.getRecordCount()).assertEqual(1); 138 pasteData.addRecord('x'.repeat(1024), dataHtml); 139 expect(pasteData.getRecordCount()).assertEqual(2); 140 141 let addHtml = new ArrayBuffer(128); 142 try { 143 pasteData.addRecord('x'.repeat(1025), addHtml); 144 expect(true === false).assertTrue(); 145 } catch (error) { 146 console.info(error.code); 147 console.info(error.message); 148 } 149 expect(pasteData.getRecordCount()).assertEqual(2); 150 pasteData.addRecord('x'.repeat(1024), addHtml); 151 expect(pasteData.getRecordCount()).assertEqual(3); 152 153 let recordHtml = new ArrayBuffer(64); 154 try { 155 pasteRecord = pasteboard.createRecord('x'.repeat(1025), recordHtml); 156 expect(true === false).assertTrue(); 157 } catch (error) { 158 console.info(error.code); 159 console.info(error.message); 160 } 161 expect(pasteRecord).assertEqual(undefined); 162 pasteRecord = pasteboard.createRecord('x'.repeat(1024), recordHtml); 163 expect(pasteRecord != undefined).assertTrue(); 164 pasteData.addRecord(pasteRecord); 165 expect(pasteData.getRecordCount()).assertEqual(4); 166 await systemPasteboard.setPasteData(pasteData); 167 console.info('set pastedata success'); 168 const res = await systemPasteboard.hasPasteData(); 169 console.info('Check pastedata has data success, result: ' + res); 170 expect(res).assertTrue(); 171 systemPasteboard.getPasteData().then((data) => { 172 console.info('get paste data success'); 173 expect(data.getRecordCount()).assertEqual(4); 174 done(); 175 }); 176 }); 177 178 /** 179 * @tc.name pasteboard_exception_test4 180 * @tc.desc 一个record中多个数据类型:get primary html、pixelMap、want、text、uri 181 * @tc.type Function 182 * @tc.require AR000HEECB 183 */ 184 it('pasteboard_exception_test4', 0, async function (done) { 185 const systemPasteboard = pasteboard.getSystemPasteboard(); 186 await systemPasteboard.clearData(); 187 const dataHtml = new ArrayBuffer(256); 188 const htmlText = '<html><head></head><body>Hello!</body></html>'; 189 const uriText = 'https://www.baidu.com/'; 190 const wantText = { 191 bundleName: 'com.example.myapplication3', 192 abilityName: 'com.example.myapplication3.MainAbility', 193 }; 194 let plainText = ''; 195 const pasteData = pasteboard.createData('x'.repeat(1024), dataHtml); 196 const record = pasteData.getRecordAt(0); 197 record.htmlText = htmlText; 198 record.plainText = plainText; 199 record.uri = uriText; 200 record.want = wantText; 201 const buffer = new ArrayBuffer(128); 202 const opt = { 203 size: { height: 5, width: 5 }, 204 pixelFormat: 3, 205 editable: true, 206 alphaType: 1, 207 scaleMode: 1, 208 }; 209 const pixelMap = await image.createPixelMap(buffer, opt); 210 record.pixelMap = pixelMap; 211 pasteData.replaceRecordAt(0, record); 212 await systemPasteboard.setPasteData(pasteData); 213 const hasData = await systemPasteboard.hasPasteData(); 214 expect(hasData).assertTrue(); 215 systemPasteboard.getPasteData().then((data) => { 216 expect(data.getRecordCount()).assertEqual(1); 217 expect(data.getRecordAt(0).mimeType).assertEqual('x'.repeat(1024)); 218 expect(data.getPrimaryWant().bundleName).assertEqual(wantText.bundleName); 219 expect(data.getPrimaryWant().abilityName).assertEqual(wantText.abilityName); 220 let newPixelMap = data.getPrimaryPixelMap(); 221 newPixelMap.getImageInfo().then((imageInfo) => { 222 expect(imageInfo.size.height).assertEqual(opt.size.height); 223 expect(imageInfo.size.width).assertEqual(opt.size.width); 224 }); 225 expect(data.getPrimaryUri()).assertEqual(uriText); 226 expect(data.getPrimaryText()).assertEqual(plainText); 227 expect(data.getPrimaryHtml()).assertEqual(htmlText); 228 done(); 229 }); 230 }); 231 232 /** 233 * @tc.name pasteboard_exception_test5 234 * @tc.desc Test CreateRecord throw error 235 * @tc.type Function 236 * @tc.require I5TYVJ 237 */ 238 it('pasteboard_exception_test5', 0, async function (done) { 239 const systemPasteboard = pasteboard.getSystemPasteboard(); 240 await systemPasteboard.clearData(); 241 const uriText = 'https://www.baidu.com/'; 242 const pasteData = pasteboard.createUriData(uriText); 243 await systemPasteboard.setPasteData(pasteData); 244 const res = await systemPasteboard.hasPasteData(); 245 expect(res).assertEqual(true); 246 systemPasteboard.getPasteData().then((data) => { 247 const pasteData1 = data; 248 expect(pasteData1.getRecordCount()).assertEqual(1); 249 const uriText1 = 'https://www.baidu.com/1'; 250 const pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_URI, uriText1); 251 const replace = pasteData1.replaceRecordAt(0, pasteDataRecord); 252 expect(replace).assertEqual(true); 253 const primaryUri1 = pasteData1.getPrimaryUri(); 254 expect(primaryUri1).assertEqual(uriText1); 255 expect(pasteData1.hasMimeType(pasteboard.MIMETYPE_TEXT_URI)).assertEqual(true); 256 const primaryUri2 = pasteData1.getPrimaryUri(); 257 expect(primaryUri2).assertEqual(uriText1); 258 done(); 259 }); 260 }); 261 262 /** 263 * @tc.name pasteboard_exception_test6 264 * @tc.desc Test CreateRecord throw error 265 * @tc.type Function 266 * @tc.require I5TYVJ 267 */ 268 it('pasteboard_exception_test6', 0, async function (done) { 269 const systemPasteboard = pasteboard.getSystemPasteboard(); 270 await systemPasteboard.clearData(); 271 const uriText6 = 'https://www.baidu.com/'; 272 const textData6 = 'Hello World!'; 273 const htmlText6 = '<html><head></head><body>Hello World!</body></html>'; 274 const wantText6 = { 275 bundleName: 'com.example.myapplication3', 276 abilityName: 'com.example.myapplication3.MainAbility', 277 }; 278 const dataHtml6 = new ArrayBuffer(256); 279 const buffer6 = new ArrayBuffer(128); 280 const opt6 = { 281 size: { height: 5, width: 5 }, 282 pixelFormat: 3, 283 editable: true, 284 alphaType: 1, 285 scaleMode: 1, 286 }; 287 const pixelMap = await image.createPixelMap(buffer6, opt6); 288 const pasteData = pasteboard.createUriData(uriText6); 289 290 try { 291 let pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_URI, uriText6); 292 pasteData.addRecord(pasteDataRecord); 293 pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_PLAIN, textData6); 294 pasteData.addRecord(pasteDataRecord); 295 pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText6); 296 pasteData.addRecord(pasteDataRecord); 297 pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_WANT, wantText6); 298 pasteData.addRecord(pasteDataRecord); 299 pasteDataRecord = pasteboard.createRecord('x'.repeat(1022), dataHtml6); 300 pasteData.addRecord(pasteDataRecord); 301 pasteDataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_PIXELMAP, pixelMap); 302 pasteData.addRecord(pasteDataRecord); 303 } catch (error) { 304 expect(error.code === undefined).assertTrue(); 305 expect(error.message === undefined).assertTrue(); 306 expect(True === false).assertTrue(); 307 } 308 await systemPasteboard.setPasteData(pasteData); 309 const res = await systemPasteboard.hasPasteData(); 310 expect(res).assertEqual(true); 311 systemPasteboard.getPasteData().then((data) => { 312 expect(data.getRecordCount()).assertEqual(7); 313 let dataRecord = data.getRecordAt(3); 314 expect(dataRecord.htmlText).assertEqual(htmlText6); 315 done(); 316 }); 317 }); 318 319 /** 320 * @tc.name pasteboard_exception_test7 321 * @tc.desc Test CreateRecord throw error 322 * @tc.type Function 323 * @tc.require I5TYVJ 324 */ 325 it('pasteboard_exception_test7', 0, async function (done) { 326 const systemPasteboard = pasteboard.getSystemPasteboard(); 327 await systemPasteboard.clearData(); 328 const uriText = 'https://www.baidu.com/'; 329 const htmlText = '<html><head></head><body>Hello World!</body></html>'; 330 const pasteData = pasteboard.createUriData(uriText); 331 332 try { 333 const pasteDataRecord = pasteboard.createRecord('xxddxx', htmlText); 334 pasteData.addRecord(pasteDataRecord); 335 expect(true === false).assertTrue(); 336 } catch (error) { 337 expect(error.code).assertEqual('401'); 338 expect(error.message).assertEqual('Parameter error. The mimeType is not an arraybuffer.'); 339 } 340 done(); 341 }); 342 343 /** 344 * @tc.name pasteboard_exception_test8 345 * @tc.desc Test Create Uri Data 346 * @tc.type Function 347 * @tc.require I5TYVJ 348 */ 349 it('pasteboard_exception_test8', 0, async function (done) { 350 const systemPasteboard = pasteboard.getSystemPasteboard(); 351 await systemPasteboard.clearData(); 352 let uriText = 'https://www.baidu.com/'; 353 let pasteData = undefined; 354 try { 355 pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 356 } catch (e) { 357 expect(true === false).assertTrue(); 358 } 359 await systemPasteboard.setPasteData(pasteData); 360 const res = await systemPasteboard.hasPasteData(); 361 expect(res).assertEqual(true); 362 systemPasteboard.getPasteData().then((data) => { 363 expect(data.getRecordCount()).assertEqual(1); 364 const dataRecord = data.getRecordAt(0); 365 expect(dataRecord.uri).assertEqual(uriText); 366 done(); 367 }); 368 }); 369 370 /** 371 * @tc.name pasteboard_exception_test9 372 * @tc.desc Test Create htmlText Data 373 * @tc.type Function 374 * @tc.require I5TYVJ 375 */ 376 it('pasteboard_exception_test9', 0, async function (done) { 377 const systemPasteboard = pasteboard.getSystemPasteboard(); 378 await systemPasteboard.clearData(); 379 const htmlText = '<html><head></head><body>Hello World!</body></html>'; 380 let pasteData = undefined; 381 try { 382 pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_HTML, htmlText); 383 } catch (e) { 384 expect(true === false).assertTrue(); 385 } 386 await systemPasteboard.setPasteData(pasteData); 387 const res = await systemPasteboard.hasPasteData(); 388 expect(res).assertEqual(true); 389 systemPasteboard.getPasteData().then((data) => { 390 expect(data.getRecordCount()).assertEqual(1); 391 const dataRecord = data.getRecordAt(0); 392 expect(dataRecord.htmlText).assertEqual(htmlText); 393 done(); 394 }); 395 }); 396 397 /** 398 * @tc.name pasteboard_exception_test10 399 * @tc.desc Test Create wantText Data 400 * @tc.type Function 401 * @tc.require I5TYVJ 402 */ 403 it('pasteboard_exception_test10', 0, async function (done) { 404 const systemPasteboard = pasteboard.getSystemPasteboard(); 405 await systemPasteboard.clearData(); 406 const wantText = { 407 bundleName: 'com.example.myapplication3', 408 abilityName: 'com.example.myapplication3.MainAbility', 409 }; 410 let pasteData = undefined; 411 try { 412 pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_WANT, wantText); 413 } catch (e) { 414 expect(true === false).assertTrue(); 415 } 416 await systemPasteboard.setPasteData(pasteData); 417 const res = await systemPasteboard.hasPasteData(); 418 expect(res).assertEqual(true); 419 systemPasteboard.getPasteData().then((data) => { 420 expect(data.getRecordCount()).assertEqual(1); 421 let primaryWant = data.getPrimaryWant(); 422 expect(primaryWant.bundleName).assertEqual(wantText.bundleName); 423 expect(primaryWant.abilityName).assertEqual(wantText.abilityName); 424 done(); 425 }); 426 }); 427 428 /** 429 * @tc.name pasteboard_exception_test11 430 * @tc.desc Test Create pixelMap Data 431 * @tc.type Function 432 * @tc.require I5TYVJ 433 */ 434 it('pasteboard_exception_test11', 0, async function (done) { 435 const systemPasteboard = pasteboard.getSystemPasteboard(); 436 await systemPasteboard.clearData(); 437 const buffer = new ArrayBuffer(128); 438 const opt = { 439 size: { height: 5, width: 5 }, 440 pixelFormat: 3, 441 editable: true, 442 alphaType: 1, 443 scaleMode: 1, 444 }; 445 let pasteData = undefined; 446 const pixelMap = await image.createPixelMap(buffer, opt); 447 try { 448 pasteData = pasteboard.createData(pasteboard.MIMETYPE_PIXELMAP, pixelMap); 449 } catch (e) { 450 expect(true === false).assertTrue(); 451 } 452 await systemPasteboard.setPasteData(pasteData); 453 const res = await systemPasteboard.hasPasteData(); 454 expect(res).assertEqual(true); 455 systemPasteboard.getPasteData().then(async (data) => { 456 expect(data.getRecordCount()).assertEqual(1); 457 const primaryPixelMap = data.getPrimaryPixelMap(); 458 const PixelMapBytesNumber = primaryPixelMap.getPixelBytesNumber(); 459 expect(PixelMapBytesNumber).assertEqual(100); 460 const imageInfo = await primaryPixelMap.getImageInfo(); 461 expect(imageInfo.size.height === 5 && imageInfo.size.width === 5).assertEqual(true); 462 done(); 463 }); 464 }); 465 466 /** 467 * @tc.name pasteboard_exception_test12 468 * @tc.desc Test CreateData throw error 469 * @tc.type Function 470 * @tc.require I5TYVJ 471 */ 472 it('pasteboard_exception_test12', 0, async function (done) { 473 const systemPasteboard = pasteboard.getSystemPasteboard(); 474 await systemPasteboard.clearData(); 475 let dataHtml = new ArrayBuffer(256); 476 let pasteData = undefined; 477 try { 478 pasteData = pasteboard.createData(pasteboard.MIMETYPE_PIXELMAP, dataHtml); 479 expect(true === false).assertTrue(); 480 } catch (e) { 481 expect(e.code).assertEqual('401'); 482 expect(e.message).assertEqual('Parameter error. Actual mimeType is not mimetype_pixelmap.'); 483 } 484 done(); 485 }); 486 487 /** 488 * @tc.name pasteboard_exception_test13 489 * @tc.desc Test Create KV Data 490 * @tc.type Function 491 * @tc.require I5TYVJ 492 */ 493 it('pasteboard_exception_test13', 0, async function (done) { 494 const systemPasteboard = pasteboard.getSystemPasteboard(); 495 await systemPasteboard.clearData(); 496 let dataHtml = new ArrayBuffer(256); 497 let pasteData = undefined; 498 try { 499 pasteData = pasteboard.createData('x'.repeat(1034), dataHtml); 500 expect(true === false).assertTrue(); 501 } catch (e) { 502 expect(e.code === '401').assertTrue(); 503 expect(e.message === 'Parameter error. The length of mimeType cannot be greater than 1024 bytes.').assertTrue(); 504 } 505 done(); 506 }); 507 508 /** 509 * @tc.name pasteboard_exception_test14 510 * @tc.desc Test addRecord throw error 511 * @tc.type Function 512 * @tc.require I5TYVJ 513 */ 514 it('pasteboard_exception_test14', 0, async function (done) { 515 const systemPasteboard = pasteboard.getSystemPasteboard(); 516 await systemPasteboard.clearData(); 517 const uriText14 = 'https://www.baidu.com/'; 518 const textData14 = 'Hello World!'; 519 const htmlText14 = '<html><head></head><body>Hello World!</body></html>'; 520 const wantText14 = { 521 bundleName: 'com.example.myapplication3', 522 abilityName: 'com.example.myapplication3.MainAbility', 523 }; 524 const dataHtml14 = new ArrayBuffer(256); 525 const buffer14 = new ArrayBuffer(128); 526 const opt14 = { 527 size: { height: 5, width: 5 }, 528 pixelFormat: 3, 529 editable: true, 530 alphaType: 1, 531 scaleMode: 1, 532 }; 533 const pixelMap = await image.createPixelMap(buffer14, opt14); 534 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText14); 535 536 try { 537 pasteData.addRecord(pasteboard.MIMETYPE_TEXT_HTML, htmlText14); 538 pasteData.addRecord(pasteboard.MIMETYPE_TEXT_URI, uriText14); 539 pasteData.addRecord(pasteboard.MIMETYPE_TEXT_PLAIN, textData14); 540 pasteData.addRecord(pasteboard.MIMETYPE_PIXELMAP, pixelMap); 541 pasteData.addRecord(pasteboard.MIMETYPE_TEXT_WANT, wantText14); 542 pasteData.addRecord('x'.repeat(100), dataHtml14); 543 } catch (error) { 544 expect(true === false).assertTrue(); 545 } 546 await systemPasteboard.setPasteData(pasteData); 547 const res = await systemPasteboard.hasPasteData(); 548 expect(res).assertEqual(true); 549 systemPasteboard.getPasteData().then((data) => { 550 expect(data.getRecordCount()).assertEqual(7); 551 let dataRecord = data.getRecordAt(6); 552 expect(dataRecord.uri).assertEqual(uriText14); 553 let primaryPixelMap = data.getPrimaryPixelMap(); 554 let PixelMapBytesNumber = primaryPixelMap.getPixelBytesNumber(); 555 expect(PixelMapBytesNumber).assertEqual(100); 556 done(); 557 }); 558 }); 559 560 /** 561 * @tc.name pasteboard_exception_test15 562 * @tc.desc Test addRecord throw error 563 * @tc.type Function 564 * @tc.require I5TYVJ 565 */ 566 it('pasteboard_exception_test15', 0, async function (done) { 567 let uriText = 'https://www.baidu.com/'; 568 let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 569 try { 570 pasteData.addRecord('xxxx', uriText); 571 expect(true === false).assertTrue(); 572 } catch (e) { 573 expect(e.code === '401').assertTrue(); 574 } 575 done(); 576 }); 577 578 /** 579 * @tc.name pasteboard_exception_test16 580 * @tc.desc Test addRecord throw error 581 * @tc.type Function 582 * @tc.require I5TYVJ 583 */ 584 it('pasteboard_exception_test16', 0, async function (done) { 585 const uriText = 'https://www.baidu.com/'; 586 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 587 const num = 600; 588 try { 589 for (let i = 0; i < num-1; i++) { 590 pasteData.addRecord(pasteboard.MIMETYPE_TEXT_URI, uriText); 591 } 592 expect(pasteData.getRecordCount()).assertEqual(num); 593 } catch (e) { 594 expect(e.code === '12900002').assertTrue(); 595 } 596 done(); 597 }); 598 599 /** 600 * @tc.name pasteboard_exception_test17 601 * @tc.desc Test getRecord throw error 602 * @tc.type Function 603 * @tc.require I5TYVJ 604 */ 605 it('pasteboard_exception_test17', 0, async function (done) { 606 const uriText = 'https://www.baidu.com/'; 607 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 608 try { 609 let dataRecord = pasteData.getRecord(0); 610 expect(dataRecord.uri).assertEqual(uriText); 611 } catch (e) { 612 expect(true === false).assertTrue(); 613 } 614 done(); 615 }); 616 617 /** 618 * @tc.name pasteboard_exception_test18 619 * @tc.desc Test getRecord throw error 620 * @tc.type Function 621 * @tc.require I5TYVJ 622 */ 623 it('pasteboard_exception_test18', 0, async function (done) { 624 const uriText = 'https://www.baidu.com/'; 625 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 626 try { 627 let dataRecord = pasteData.getRecord(5); 628 expect(true === false).assertTrue(); 629 } catch (e) { 630 expect(e.code === '12900001').assertTrue(); 631 } 632 done(); 633 }); 634 635 /** 636 * @tc.name pasteboard_exception_test19 637 * @tc.desc Test replaceRecord throw error 638 * @tc.type Function 639 * @tc.require I5TYVJ 640 */ 641 it('pasteboard_exception_test19', 0, async function (done) { 642 const uriText = 'https://www.baidu.com/'; 643 const uriText1 = 'https://www.baidu1.com/'; 644 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 645 const dataRecord = pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_URI, uriText1); 646 try { 647 pasteData.replaceRecord(0, dataRecord); 648 const record = pasteData.getRecord(0); 649 expect(record.uri).assertEqual(uriText1); 650 } catch (e) { 651 expect(true === false).assertTrue(); 652 } 653 done(); 654 }); 655 656 /** 657 * @tc.name pasteboard_exception_test20 658 * @tc.desc Test replaceRecord throw error 659 * @tc.type Function 660 * @tc.require I5TYVJ 661 */ 662 it('pasteboard_exception_test20', 0, async function (done) { 663 const uriText = 'https://www.baidu.com/'; 664 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 665 try { 666 pasteData.replaceRecord(0, 'xxxxxx'); 667 expect(true === false).assertTrue(); 668 } catch (e) { 669 expect(e.code === '401').assertTrue(); 670 } 671 done(); 672 }); 673 674 /** 675 * @tc.name pasteboard_exception_test21 676 * @tc.desc Test setData 677 * @tc.type Function 678 * @tc.require I5TYVJ 679 */ 680 it('pasteboard_exception_test21', 0, async function (done) { 681 const systemPasteboard = pasteboard.getSystemPasteboard(); 682 await systemPasteboard.clearData(); 683 const uriText = 'Hello//'; 684 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_URI, uriText); 685 await systemPasteboard.setData(pasteData); 686 const data = await systemPasteboard.hasData(); 687 expect(data).assertEqual(true); 688 systemPasteboard.getData().then((pasteData1) => { 689 expect(pasteData1.getRecordCount()).assertEqual(1); 690 expect(pasteData1.hasType(pasteboard.MIMETYPE_TEXT_URI)).assertEqual(true); 691 expect(pasteData1.getPrimaryUri()).assertEqual(uriText); 692 done(); 693 }); 694 }); 695 696 /** 697 * @tc.name pasteboard_exception_test22 698 * @tc.desc Test setData throw error 699 * @tc.type Function 700 * @tc.require I5TYVJ 701 */ 702 it('pasteboard_exception_test22', 0, async function (done) { 703 const systemPasteboard = pasteboard.getSystemPasteboard(); 704 try { 705 systemPasteboard.setData('xxxxx'); 706 expect(true === false).assertTrue(); 707 } catch (e) { 708 expect(e.code === '401').assertTrue(); 709 expect(e.message === 'Parameter error. The Type of data must be pasteData.').assertTrue(); 710 } 711 done(); 712 }); 713 714 /** 715 * @tc.name pasteboard_exception_test23 716 * @tc.desc Test setproperty throw error 717 * @tc.type Function 718 * @tc.require I5TYVJ 719 */ 720 it('pasteboard_exception_test23', 0, async function (done) { 721 const systemPasteboard = pasteboard.getSystemPasteboard(); 722 await systemPasteboard.clearData(); 723 const textData = 'Hello World!'; 724 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, textData); 725 const pasteDataProperty = pasteData.getProperty(); 726 expect(pasteDataProperty.shareOption).assertEqual(pasteboard.ShareOption.CrossDevice); 727 pasteDataProperty.shareOption = pasteboard.ShareOption.InApp; 728 pasteData.setProperty(pasteDataProperty); 729 expect(pasteData.getProperty().shareOption).assertEqual(pasteboard.ShareOption.InApp); 730 done(); 731 }); 732 733 /** 734 * @tc.name pasteboard_exception_test24 735 * @tc.desc Test setproperty throw error 736 * @tc.type Function 737 * @tc.require I5TYVJ 738 */ 739 it('pasteboard_exception_test24', 0, async function (done) { 740 const systemPasteboard = pasteboard.getSystemPasteboard(); 741 await systemPasteboard.clearData(); 742 const textData = 'Hello World!'; 743 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, textData); 744 try { 745 const obj = { shareOption: 1 }; 746 pasteData.setProperty(obj); 747 expect(true === false).assertTrue(); 748 } catch (e) { 749 expect(e.code === '401').assertTrue(); 750 expect(e.message === 'Parameter error. The type of property must be PasteDataProperty.').assertTrue(); 751 } 752 done(); 753 }); 754 755 /** 756 * @tc.name pasteboard_exception_test25 757 * @tc.desc Test createData throw error 758 * @tc.type Function 759 * @tc.require I5TYVJ 760 */ 761 it('pasteboard_exception_test25', 0, async function (done) { 762 const textData = 'Hello World!'; 763 const dataXml = new ArrayBuffer(512); 764 try { 765 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, dataXml); 766 expect(true === false).assertTrue(); 767 } catch (e) { 768 expect(e.code === '401').assertTrue(); 769 expect(e.message === 'Parameter error. The type of mimeType must be string.').assertTrue(); 770 } 771 done(); 772 }); 773 774 /** 775 * @tc.name pasteboard_exception_test26 776 * @tc.desc Test createData throw error 777 * @tc.type Function 778 * @tc.require I5TYVJ 779 */ 780 it('pasteboard_exception_test26', 0, async function (done) { 781 const textData = 'Hello World!'; 782 const dataXml = new ArrayBuffer(512); 783 try { 784 const pasteData = pasteboard.createData('xxxxx', textData); 785 expect(true === false).assertTrue(); 786 } catch (e) { 787 expect(e.code === '401').assertTrue(); 788 expect(e.message === 'Parameter error. The mimeType is not an arraybuffer.').assertTrue(); 789 } 790 done(); 791 }); 792 793 /** 794 * @tc.name pasteboard_exception_test27 795 * @tc.desc Test createData throw error 796 * @tc.type Function 797 * @tc.require I5TYVJ 798 */ 799 it('pasteboard_exception_test27', 0, async function (done) { 800 try { 801 const pasteData = pasteboard.createData(pasteboard.MIMETYPE_PIXELMAP, {}); 802 expect(true === false).assertTrue(); 803 } catch (e) { 804 expect(e.code === '401').assertTrue(); 805 expect(e.message === 'Parameter error. Actual mimeType is not mimetype_pixelmap.').assertTrue(); 806 } 807 done(); 808 }); 809 810 /** 811 * @tc.name pasteboard_exception_test28 812 * @tc.desc 异常值 非数组 813 * @tc.type Function 814 * @tc.require AR000H5HVI 815 */ 816 it('pasteboard_exception_test28', 0, async function (done) { 817 const systemPasteboard = pasteboard.getSystemPasteboard(); 818 await systemPasteboard.clearData(); 819 const textData = "部分人的十点半:\n" + 820 "https://pr5yyye-drseyive.u54yk.cwerfe/s/42e1ewed77f3dab4" + 821 "网gest加尔文iqru发的我ui哦计划任务i文化人:\n" + 822 "~b0043fg3423tddj~"; 823 const pasteData = pasteboard.createPlainTextData(textData); 824 await systemPasteboard.setPasteData(pasteData); 825 const res = await systemPasteboard.hasPasteData(); 826 expect(res).assertEqual(true); 827 const patterns = pasteboard.Pattern.EMAIL_ADDRESS; 828 try { 829 await systemPasteboard.detectPatterns(patterns); 830 } catch (e) { 831 expect(e.code == 401).assertTrue(); 832 } 833 done(); 834 }); 835 836 /** 837 * @tc.name pasteboard_exception_test29 838 * @tc.desc 异常值 传空 839 * @tc.type Function 840 * @tc.require AR000H5HVI 841 */ 842 it('pasteboard_exception_test29', 0, async function (done) { 843 const systemPasteboard = pasteboard.getSystemPasteboard(); 844 await systemPasteboard.clearData(); 845 const textData = "部分人的十点半:\n" + 846 "https://pr5yyye-drseyive.u54yk.cwerfe/s/42e1ewed77f3dab4" + 847 "网gest加尔文iqru发的我ui哦计划任务i文化人:\n" + 848 "~b0043fg3423tddj~"; 849 const pasteData = pasteboard.createPlainTextData(textData); 850 await systemPasteboard.setPasteData(pasteData); 851 const res = await systemPasteboard.hasPasteData(); 852 expect(res).assertEqual(true); 853 try { 854 await systemPasteboard.detectPatterns(); 855 } catch (e) { 856 expect(e.code == 401).assertTrue(); 857 } 858 done(); 859 }); 860 861 /** 862 * @tc.name pasteboard_exception_test30 863 * @tc.desc 异常值 数组内元素出错 864 * @tc.type Function 865 * @tc.require AR000H5HVI 866 */ 867 it('pasteboard_exception_test30', 0, async function (done) { 868 const systemPasteboard = pasteboard.getSystemPasteboard(); 869 await systemPasteboard.clearData(); 870 const textData = "部分人的十点半:\n" + 871 "https://pr5yyye-drseyive.u54yk.cwerfe/s/42e1ewed77f3dab4" + 872 "网gest加尔文iqru发的我ui哦计划任务i文化人:\n" + 873 "~b0043fg3423tddj~"; 874 const pasteData = pasteboard.createPlainTextData(textData); 875 await systemPasteboard.setPasteData(pasteData); 876 const res = await systemPasteboard.hasPasteData(); 877 expect(res).assertEqual(true); 878 const patterns = ["dsa", "fdsf", "da"]; 879 try { 880 await systemPasteboard.detectPatterns(patterns); 881 } catch (e) { 882 expect(e.code == 401).assertTrue(); 883 } 884 done(); 885 }); 886 887 /** 888 * @tc.name pasteboard_exception_test31 889 * @tc.desc 异常值 参数个数异常 890 * @tc.type Function 891 * @tc.require AR000H5HVI 892 */ 893 it('pasteboard_exception_test31', 0, async function (done) { 894 const systemPasteboard = pasteboard.getSystemPasteboard(); 895 await systemPasteboard.clearData(); 896 const textData = "部分人的十点半:\n" + 897 "https://pr5yyye-drseyive.u54yk.cwerfe/s/42e1ewed77f3dab4" + 898 "网gest加尔文iqru发的我ui哦计划任务i文化人:\n" + 899 "~b0043fg3423tddj~"; 900 const pasteData = pasteboard.createPlainTextData(textData); 901 await systemPasteboard.setPasteData(pasteData); 902 const res = await systemPasteboard.hasPasteData(); 903 expect(res).assertEqual(true); 904 const patterns1 = [0, 1]; 905 const patterns2 = [1, 2]; 906 try { 907 await systemPasteboard.detectPatterns(patterns1, patterns2); 908 } catch (e) { 909 expect(e.code == 401).assertTrue(); 910 } 911 done(); 912 }); 913 914 /** 915 * @tc.name pasteboard_exception_test32 916 * @tc.desc 异常值-非预期数字数组 917 * @tc.type Function 918 * @tc.require AR000H5HVI 919 */ 920 it('pasteboard_exception_test32', 0, async function (done) { 921 const systemPasteboard = pasteboard.getSystemPasteboard(); 922 await systemPasteboard.clearData(); 923 const textData = "<!DOCTYPE html><html><head><title>" + 924 ",尽快改好Greg就就。、</title></head><body><h2>访如果如果</h2>" + 925 "<p>搞了个<a href=\"https://grehtjeffxample.com\">" + 926 "剖一个v给ioadhoa@wdoiewf.com</a>。</p></body></html>"; 927 const pasteData = pasteboard.createHtmlData(textData); 928 await systemPasteboard.setPasteData(pasteData); 929 const res = await systemPasteboard.hasPasteData(); 930 expect(res).assertEqual(true); 931 const patterns1 = [0, 1, 23789, 238]; 932 try { 933 await systemPasteboard.detectPatterns(patterns1); 934 } catch (e) { 935 expect(e.code == 401).assertTrue(); 936 } 937 done(); 938 }); 939 940 /** 941 * @tc.name pasteboard_exception_test33 942 * @tc.desc 异常值-空数组 943 * @tc.type Function 944 * @tc.require AR000H5HVI 945 */ 946 it('pasteboard_exception_test33', 0, async function (done) { 947 const systemPasteboard = pasteboard.getSystemPasteboard(); 948 await systemPasteboard.clearData(); 949 const textData = "<!DOCTYPE html><html><head><title>" + 950 ",尽快改好Greg就就。、</title></head><body><h2>访如果如果</h2>" + 951 "<p>搞了个<a href=\"https://grehtjeffxample.com\">" + 952 "剖一个v给ioadhoa@wdoiewf.com</a>。</p></body></html>"; 953 const pasteData = pasteboard.createHtmlData(textData); 954 await systemPasteboard.setPasteData(pasteData); 955 const res = await systemPasteboard.hasPasteData(); 956 expect(res).assertEqual(true); 957 const patterns1 = []; 958 try { 959 await systemPasteboard.detectPatterns(patterns1); 960 } catch (e) { 961 expect(e.code == 401).assertTrue(); 962 } 963 done(); 964 }); 965 966 /** 967 * @tc.name pasteboard_exception_test34 968 * @tc.desc createData(Record) exception param. 969 * @tc.type Function 970 * @tc.require API 14 971 */ 972 it('pasteboard_exception_test34', 0, async function (done) { 973 const systemPasteboard = pasteboard.getSystemPasteboard(); 974 await systemPasteboard.clearData(); 975 976 let record = await initRecordData(); 977 let exceptionRecord = {} 978 exceptionRecord[pasteboard.MIMETYPE_TEXT_PLAIN] = record[pasteboard.MIMETYPE_PIXELMAP]; 979 await systemPasteboard.setData(pasteboard.createData(exceptionRecord)); 980 981 const outData = await systemPasteboard.getData(); 982 expect(outData.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_PLAIN); 983 const outValue = outData.getPrimaryText(); 984 expect(outValue).assertUndefined(); 985 986 let exceptionRecord1 = {} 987 exceptionRecord1[pasteboard.MIMETYPE_TEXT_WANT] = record[pasteboard.MIMETYPE_PIXELMAP]; 988 await systemPasteboard.setData(pasteboard.createData(exceptionRecord1)); 989 990 const outData1 = await systemPasteboard.getData(); 991 expect(outData1.getPrimaryMimeType()).assertEqual(pasteboard.MIMETYPE_TEXT_WANT); 992 const outValue1 = outData.getPrimaryWant(); 993 expect(outValue1).assertUndefined(); 994 995 let exceptionRecord2 = {} 996 exceptionRecord2[pasteboard.MIMETYPE_TEXT_WANT] = record[pasteboard.MIMETYPE_TEXT_HTML]; 997 exceptionRecord2[pasteboard.MIMETYPE_PIXELMAP] = record[pasteboard.MIMETYPE_TEXT_URI]; 998 exceptionRecord2[pasteboard.MIMETYPE_TEXT_PLAIN] = record[myType]; 999 await systemPasteboard.setData(pasteboard.createData(exceptionRecord2)); 1000 1001 const outData2 = await systemPasteboard.getData(); 1002 expect(outData2.getRecordCount()).assertEqual(1); 1003 const outRecord = outData2.getRecord(0); 1004 console.log('getValidTypes: ' + outRecord.getValidTypes(allTypes).toString()); 1005 expect(outRecord.getValidTypes(allTypes).toString()).assertEqual( 1006 [pasteboard.MIMETYPE_TEXT_PLAIN, pasteboard.MIMETYPE_TEXT_WANT, pasteboard.MIMETYPE_PIXELMAP].toString() 1007 ); 1008 1009 await systemPasteboard.clearData(); 1010 done(); 1011 }); 1012 1013 /** 1014 * @tc.name pasteboard_exception_test35 1015 * @tc.desc addEntry exception param. 1016 * @tc.type Function 1017 * @tc.require API 14 1018 */ 1019 it('pasteboard_exception_test35', 0, async function (done) { 1020 const systemPasteboard = pasteboard.getSystemPasteboard(); 1021 await systemPasteboard.clearData(); 1022 1023 const record = await initRecordData(); 1024 const pasteRecord = 1025 pasteboard.createRecord(pasteboard.MIMETYPE_TEXT_PLAIN, record[pasteboard.MIMETYPE_TEXT_PLAIN]); 1026 try { 1027 pasteRecord.addEntry(pasteboard.MIMETYPE_TEXT_URI, record[pasteboard.MIMETYPE_PIXELMAP]); 1028 } catch (err) { 1029 expect(err.code).assertEqual('401'); 1030 } 1031 1032 try { 1033 pasteRecord.addEntry(pasteboard.MIMETYPE_PIXELMAP, record[pasteboard.MIMETYPE_TEXT_PLAIN]); 1034 } catch (err) { 1035 expect(err.code).assertEqual('401'); 1036 } 1037 1038 try { 1039 pasteRecord.addEntry(pasteboard.MIMETYPE_TEXT_PLAIN, record[myType]); 1040 } catch (err) { 1041 expect(err.code).assertEqual('401'); 1042 } 1043 1044 try { 1045 pasteRecord.addEntry(myType, record[pasteboard.MIMETYPE_TEXT_PLAIN]); 1046 } catch (err) { 1047 expect(err.code).assertEqual('401'); 1048 } 1049 1050 await systemPasteboard.clearData(); 1051 done(); 1052 }); 1053 1054 async function buildPixelMap() { 1055 let buffer = new ArrayBuffer(500); 1056 let realSize = {height: 5, width: 100}; 1057 let opt = { 1058 size: realSize, 1059 pixelFormat: 3, 1060 editable: true, 1061 alphaType: 1, 1062 scaleMode: 1, 1063 }; 1064 return await image.createPixelMap(buffer, opt); 1065 } 1066 1067 function string2ArrayBuffer(input) { 1068 let arr = []; 1069 for (let index = 0; index < input.length; index++) { 1070 arr.push(input.charCodeAt(index)); 1071 } 1072 let arrayBuffer = new Uint8Array(arr).buffer; 1073 return arrayBuffer; 1074 } 1075 1076 async function initRecordData(temp) { 1077 const inputPlainText = 'Hello world.' + (temp ? temp : ''); 1078 const inputHtml = '<p>Hello world.' + (temp ? temp : '') + '</p>'; 1079 const inputUri = 'file://abc/def' + (temp ? temp : '') + '.png'; 1080 const inputWant = { 1081 deviceId: '', 1082 bundleName: 'test.bundle.name' + (temp ? temp : ''), 1083 abilityName: 'test.ability,name' + (temp ? temp : ''), 1084 moduleName: 'test.module.name' + (temp ? temp : ''), 1085 }; 1086 const inputPixelMap = await buildPixelMap(); 1087 const inputArrayBuffer = string2ArrayBuffer('Hello world.' + (temp ? temp : '')); 1088 1089 1090 let record = {}; 1091 record[pasteboard.MIMETYPE_TEXT_PLAIN] = inputPlainText; 1092 record[pasteboard.MIMETYPE_TEXT_HTML] = inputHtml; 1093 record[pasteboard.MIMETYPE_TEXT_URI] = inputUri; 1094 record[pasteboard.MIMETYPE_TEXT_WANT] = inputWant; 1095 record[pasteboard.MIMETYPE_PIXELMAP] = inputPixelMap; 1096 record[myType] = inputArrayBuffer; 1097 1098 return record; 1099 } 1100}); 1101