1/* 2 * Copyright (c) 2024 SwanLink (Jiangsu) Technology Development Co., LTD. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import { MessageEvents, ThreadWorkerGlobalScope, worker } from '@kit.ArkTS'; 16import napitest from 'libnapitest.so'; 17// import napitest from 'libentry.so'; 18 19declare class ArkTools { 20 static forceFullGC(): void; 21} 22 23interface WorkerMessage { 24 messageType: string; 25 value: Length | object | boolean; 26} 27 28const workerPort: ThreadWorkerGlobalScope = worker.workerPort; 29 30/** 31 * Defines the event handler to be called when the worker thread receives a message sent by the host thread. 32 * The event handler is executed in the worker thread. 33 * 34 * @param e message data 35 */ 36workerPort.onmessage = (e: MessageEvents) => { 37 console.info('Worker received message:', e.data); 38 const data: WorkerMessage = e.data; 39 switch (data.messageType) { 40 case 'getLastError': { 41 const receivedValue = data.value; 42 console.info('Worker: received value is ' + receivedValue); 43 ArkTools.forceFullGC(); 44 const value: boolean = receivedValue === 2000; 45 workerPort.postMessage(value); 46 break; 47 } 48 case 'isError': { 49 const receivedValue = data.value; 50 console.info('Worker: received value is ' + receivedValue); 51 ArkTools.forceFullGC(); 52 const value: boolean = receivedValue === false; 53 workerPort.postMessage(value); 54 break; 55 } 56 case 'createError': { 57 const receivedValue = data.value; 58 console.info('Worker: received value is ' + receivedValue); 59 ArkTools.forceFullGC(); 60 const value: boolean = receivedValue === 0; 61 workerPort.postMessage(value); 62 break; 63 } 64 case 'createRangeError': { 65 const receivedValue = data.value; 66 console.info('Worker: received value is ' + receivedValue); 67 ArkTools.forceFullGC(); 68 const value: boolean = receivedValue === 0; 69 workerPort.postMessage(value); 70 break; 71 } 72 case 'isExceptionPending': { 73 const receivedValue = data.value; 74 console.info('Worker: received value is ' + receivedValue); 75 ArkTools.forceFullGC(); 76 const value: boolean = receivedValue === 0; 77 workerPort.postMessage(value); 78 break; 79 } 80 case 'createReference': { 81 const receivedValue = data.value; 82 console.info('Worker: received value is ' + receivedValue); 83 ArkTools.forceFullGC(); 84 const value: boolean = receivedValue === 0; 85 workerPort.postMessage(value); 86 break; 87 } 88 case 'referenceRefAndUnref': { 89 const receivedValue = data.value; 90 console.info('Worker: received value is ' + receivedValue); 91 ArkTools.forceFullGC(); 92 const value: boolean = receivedValue === 0; 93 workerPort.postMessage(value); 94 break; 95 } 96 case 'createArrayAndGetLength': { 97 const receivedValue = data.value; 98 console.info('Worker: received value is ' + receivedValue); 99 ArkTools.forceFullGC(); 100 const value: boolean = receivedValue.toString() === '1,2'; 101 workerPort.postMessage(value); 102 break; 103 } 104 case 'createExternal': { 105 const receivedValue = data.value; 106 console.info('Worker: received value is ' + receivedValue); 107 ArkTools.forceFullGC(); 108 const value: boolean = receivedValue === 0; 109 workerPort.postMessage(value); 110 break; 111 } 112 case 'createExternalArraybuffer': { 113 const receivedValue = data.value; 114 console.info('Worker: received value is ' + receivedValue); 115 ArkTools.forceFullGC(); 116 const value = receivedValue instanceof ArrayBuffer; 117 workerPort.postMessage(value); 118 break; 119 } 120 case 'createObject': { 121 const receivedValue = data.value; 122 console.info('Worker: createObject value is ', receivedValue); 123 ArkTools.forceFullGC(); 124 const createObjectRes = receivedValue instanceof Object; 125 workerPort.postMessage(createObjectRes); 126 break; 127 } 128 case 'createSymbol': { 129 const receivedValue = data.value; 130 console.info('Worker: createSymbol value is ', receivedValue); 131 ArkTools.forceFullGC(); 132 const value: boolean = receivedValue === 0; 133 workerPort.postMessage(value); 134 break; 135 } 136 case 'createTypeArray': { 137 const receivedValue = data.value; 138 console.info('Worker: createTypeArray value is ', receivedValue); 139 ArkTools.forceFullGC(); 140 const isArrayType = receivedValue instanceof Int32Array; 141 workerPort.postMessage(isArrayType); 142 break; 143 } 144 case 'getValueBool': { 145 const receivedValue = data.value; 146 console.info('Worker: getValueBool value is ', receivedValue); 147 ArkTools.forceFullGC(); 148 const value: boolean = receivedValue === false; 149 workerPort.postMessage(value); 150 break; 151 } 152 case 'createAndGetInt32': { 153 const receivedValue = data.value; 154 console.info('Worker: createAndGetInt32 value is ', receivedValue); 155 ArkTools.forceFullGC(); 156 const value: boolean = receivedValue === 32; 157 workerPort.postMessage(value); 158 break; 159 } 160 case 'createAndGetUInt32': { 161 const receivedValue = data.value; 162 console.info('Worker: createAndGetUInt32 value is ', receivedValue); 163 ArkTools.forceFullGC(); 164 const value: boolean = receivedValue === 32; 165 workerPort.postMessage(value); 166 break; 167 } 168 case 'createAndGetInt64': { 169 const receivedValue = data.value; 170 console.info('Worker: createAndGetInt64 value is ', receivedValue); 171 ArkTools.forceFullGC(); 172 const value: boolean = receivedValue === 23; 173 workerPort.postMessage(value); 174 break; 175 } 176 case 'createDouble': { 177 const receivedValue = data.value; 178 console.info('Worker: createDouble value is ', receivedValue); 179 ArkTools.forceFullGC(); 180 const value: boolean = receivedValue === 24.67; 181 workerPort.postMessage(value); 182 break; 183 } 184 case 'createAndGetStringUtf16': { 185 const receivedValue = data.value; 186 console.info('Worker: createAndGetStringUtf16 value is ', receivedValue); 187 ArkTools.forceFullGC(); 188 const value: boolean = receivedValue === 'he'; 189 workerPort.postMessage(value); 190 break; 191 } 192 case 'stringUtf16OfCase': { 193 const receivedValue = data.value; 194 console.info('Worker: stringUtf16OfCase value is ', receivedValue); 195 ArkTools.forceFullGC(); 196 const value: boolean = receivedValue === 'abc2'; 197 workerPort.postMessage(value); 198 break; 199 } 200 case 'getValueDouble': { 201 const receivedValue = data.value; 202 console.info('Worker: getValueDouble value is ', receivedValue); 203 ArkTools.forceFullGC(); 204 const value = receivedValue === 24.5; 205 workerPort.postMessage(value); 206 break; 207 } 208 case 'getValueExternal': { 209 const receivedValue = data.value; 210 console.info('Worker: getValueExternal value is ', receivedValue); 211 ArkTools.forceFullGC(); 212 const value = receivedValue === 0; 213 workerPort.postMessage(value); 214 break; 215 } 216 case 'getNull': { 217 const receivedValue = data.value; 218 console.info('Worker: getNull value is ', receivedValue); 219 ArkTools.forceFullGC(); 220 const value = receivedValue == 0; 221 workerPort.postMessage(value); 222 break; 223 } 224 case 'getUndefined': { 225 const receivedValue = data.value; 226 console.info('Worker: getUndefined value is ', receivedValue); 227 ArkTools.forceFullGC(); 228 const value = receivedValue == 0; 229 workerPort.postMessage(value); 230 break; 231 } 232 case 'coerceToBool': { 233 const receivedValue = data.value; 234 console.info('Worker: coerceToBool value is ', receivedValue); 235 ArkTools.forceFullGC(); 236 const value = receivedValue === false; 237 workerPort.postMessage(value); 238 break; 239 } 240 case 'coerceToNumber': { 241 const receivedValue = data.value; 242 console.info('Worker: coerceToNumber value is ', receivedValue); 243 ArkTools.forceFullGC(); 244 const value = receivedValue === 12; 245 workerPort.postMessage(value); 246 break; 247 } 248 case 'coerceToObject': { 249 const receivedValue = data.value; 250 console.info('Worker: coerceToObject value is ', receivedValue); 251 ArkTools.forceFullGC(); 252 const value = JSON.stringify(receivedValue) === '[2,3]'; 253 workerPort.postMessage(value); 254 break; 255 } 256 case 'coerceToString': { 257 const receivedValue = data.value; 258 console.info('Worker: coerceToString value is ', receivedValue); 259 ArkTools.forceFullGC(); 260 const value = receivedValue === '123'; 261 workerPort.postMessage(value); 262 break; 263 } 264 case 'typeOf': { 265 const receivedValue = data.value; 266 console.info('Worker: typeOf value is ', receivedValue); 267 ArkTools.forceFullGC(); 268 const value = receivedValue === 0; 269 workerPort.postMessage(value); 270 break; 271 } 272 case 'isArray': { 273 const receivedValue = data.value; 274 console.info('Worker: isArray value is ', receivedValue); 275 ArkTools.forceFullGC(); 276 const value = receivedValue === 0; 277 workerPort.postMessage(value); 278 break; 279 } 280 case 'strictEquals': { 281 const receivedValue = data.value; 282 console.info('Worker: strictEquals value is ', receivedValue); 283 ArkTools.forceFullGC(); 284 const value = receivedValue === 0; 285 workerPort.postMessage(value); 286 break; 287 } 288 case 'getPropertyNames': { 289 const receivedValue = data.value; 290 console.info('Worker: getPropertyNames value is ', receivedValue); 291 ArkTools.forceFullGC(); 292 const value = receivedValue === 0; 293 workerPort.postMessage(value); 294 break; 295 } 296 case 'setProperty': { 297 const receivedValue = data.value; 298 console.info('Worker: setProperty value is ', receivedValue); 299 ArkTools.forceFullGC(); 300 const value = receivedValue instanceof Object; 301 workerPort.postMessage(value); 302 break; 303 } 304 case 'getProperty': { 305 const receivedValue = data.value; 306 console.info('Worker: getProperty value is ', receivedValue); 307 ArkTools.forceFullGC(); 308 const value = receivedValue instanceof Object; 309 workerPort.postMessage(value); 310 break; 311 } 312 case 'hasProperty': { 313 const receivedValue = data.value; 314 console.info('Worker: hasProperty value is ', receivedValue); 315 ArkTools.forceFullGC(); 316 const value = receivedValue === 0; 317 workerPort.postMessage(value); 318 break; 319 } 320 case 'setAndDeleteProperty': { 321 const receivedValue = data.value; 322 console.info('Worker: setAndDeleteProperty value is ', receivedValue); 323 ArkTools.forceFullGC(); 324 const value = receivedValue === 0; 325 workerPort.postMessage(value); 326 break; 327 } 328 case 'hasOwnProperty': { 329 const receivedValue = data.value; 330 console.info('Worker: hasOwnProperty value is ', receivedValue); 331 ArkTools.forceFullGC(); 332 workerPort.postMessage(receivedValue); 333 break; 334 } 335 case 'setNamedProperty': { 336 const receivedValue = data.value; 337 console.info('Worker: setNamedProperty value is ', receivedValue); 338 ArkTools.forceFullGC(); 339 workerPort.postMessage(receivedValue); 340 break; 341 } 342 case 'getNamedProperty': { 343 const receivedValue = data.value; 344 console.info('Worker: getNamedProperty value is ', receivedValue); 345 ArkTools.forceFullGC(); 346 const value = receivedValue === 'zhangsan'; 347 workerPort.postMessage(value); 348 break; 349 } 350 case 'hasNamedProperty': { 351 const receivedValue = data.value; 352 console.info('Worker: hasNamedProperty value is ', receivedValue); 353 ArkTools.forceFullGC(); 354 workerPort.postMessage(receivedValue); 355 break; 356 } 357 case 'setElement': { 358 const receivedValue = data.value; 359 console.info('Worker: setElement value is ', receivedValue); 360 ArkTools.forceFullGC(); 361 const value = receivedValue instanceof Object; 362 workerPort.postMessage(value); 363 break; 364 } 365 case 'getElement': { 366 const receivedValue = data.value; 367 console.info('Worker: getElement value is ', receivedValue); 368 ArkTools.forceFullGC(); 369 const value = receivedValue instanceof Object; 370 workerPort.postMessage(value); 371 break; 372 } 373 case 'hasElement': { 374 const receivedValue = data.value; 375 console.info('Worker: hasElement value is ', receivedValue); 376 ArkTools.forceFullGC(); 377 const value = receivedValue instanceof Object; 378 workerPort.postMessage(value); 379 break; 380 } 381 case 'deleteElement': { 382 const receivedValue = data.value; 383 console.info('Worker: deleteElement value is ', receivedValue); 384 ArkTools.forceFullGC(); 385 const value = receivedValue instanceof Object; 386 workerPort.postMessage(value); 387 break; 388 } 389 case 'defineProperties': { 390 const receivedValue = data.value; 391 console.info('Worker: defineProperties value is ', receivedValue); 392 ArkTools.forceFullGC(); 393 const value = receivedValue instanceof Object; 394 workerPort.postMessage(value); 395 break; 396 } 397 case 'callFunctionNull': { 398 const receivedValue = data.value; 399 console.info('Worker: callFunctionNull value is ', receivedValue); 400 ArkTools.forceFullGC(); 401 const value = receivedValue === 1; 402 workerPort.postMessage(value); 403 break; 404 } 405 case 'napiCreateFunctionFuncNull': { 406 const receivedValue = data.value; 407 console.info('Worker: napiCreateFunctionFuncNull value is ', receivedValue); 408 ArkTools.forceFullGC(); 409 const value = receivedValue === 0; 410 workerPort.postMessage(value); 411 break; 412 } 413 case 'napiGetCbInfo': { 414 const receivedValue = data.value; 415 console.info('Worker: napiGetCbInfo value is ', receivedValue); 416 ArkTools.forceFullGC(); 417 const value = receivedValue === 12.06; 418 workerPort.postMessage(value); 419 break; 420 } 421 case 'unwrap': { 422 const receivedValue = data.value; 423 console.info('Worker: unwrap value is ', receivedValue); 424 ArkTools.forceFullGC(); 425 const value = receivedValue === 0; 426 workerPort.postMessage(value); 427 break; 428 } 429 case 'removeWrap': { 430 const receivedValue = data.value; 431 console.info('Worker: removeWrap value is ', receivedValue); 432 ArkTools.forceFullGC(); 433 const value = receivedValue === 0; 434 workerPort.postMessage(value); 435 break; 436 } 437 case 'getVersion': { 438 const receivedValue = data.value; 439 console.info('Worker: getVersion value is ', receivedValue); 440 ArkTools.forceFullGC(); 441 const value = receivedValue === 8; 442 workerPort.postMessage(value); 443 break; 444 } 445 case 'createPromise': { 446 const receivedValue = data.value; 447 console.info('Worker: createPromise value is ', receivedValue); 448 ArkTools.forceFullGC(); 449 const value = receivedValue === 0; 450 workerPort.postMessage(value); 451 break; 452 } 453 case 'resolveAndRejectDeferred': { 454 const receivedValue = data.value; 455 console.info('Worker: resolveAndRejectDeferred value is ', receivedValue); 456 ArkTools.forceFullGC(); 457 const value = receivedValue === 0; 458 workerPort.postMessage(value); 459 break; 460 } 461 case 'isPromise': { 462 const receivedValue = data.value; 463 console.info('Worker: isPromise value is ', receivedValue); 464 ArkTools.forceFullGC(); 465 const value = receivedValue === 0; 466 workerPort.postMessage(value); 467 break; 468 } 469 case 'napiCreateThreadsafeFunction': { 470 const receivedValue = data.value; 471 console.info('Worker: napiCreateThreadsafeFunction value is ', receivedValue); 472 ArkTools.forceFullGC(); 473 const value = receivedValue === 0; 474 workerPort.postMessage(value); 475 break; 476 } 477 case 'napiDeleteSerializationDataTest': { 478 const receivedValue = data.value; 479 console.info('Worker: napiDeleteSerializationDataTest value is ', receivedValue); 480 ArkTools.forceFullGC(); 481 const value = receivedValue === 2000; 482 workerPort.postMessage(value); 483 break; 484 } 485 case 'napiCallThreadsafeFunction': { 486 const receivedValue = data.value; 487 console.info('Worker: napiCallThreadsafeFunction value is ', receivedValue); 488 ArkTools.forceFullGC(); 489 const value = receivedValue === 0; 490 workerPort.postMessage(value); 491 break; 492 } 493 case 'napiAnotherThreadSafeTest': { 494 const receivedValue = data.value; 495 console.info('Worker: napiAnotherThreadSafeTest value is ', receivedValue); 496 ArkTools.forceFullGC(); 497 const value = receivedValue === 1; 498 workerPort.postMessage(value); 499 break; 500 } 501 case 'napiRefThreadsafeFunction': { 502 const receivedValue = data.value; 503 console.info('Worker: napiRefThreadsafeFunction value is ', receivedValue); 504 ArkTools.forceFullGC(); 505 const value = receivedValue === 0; 506 workerPort.postMessage(value); 507 break; 508 } 509 case 'napiCreateDate': { 510 const receivedValue = data.value; 511 console.info('Worker: napiCreateDate value is ', receivedValue); 512 ArkTools.forceFullGC(); 513 const value = receivedValue === 1; 514 workerPort.postMessage(value); 515 break; 516 } 517 case 'napiCreateBigintInt64': { 518 const receivedValue = data.value; 519 console.info('Worker: napiCreateBigintInt64 value is: ', receivedValue); 520 ArkTools.forceFullGC(); 521 const value = receivedValue === 1; 522 workerPort.postMessage(value); 523 break; 524 } 525 case 'napiCreateBigintUint64': { 526 const receivedValue = data.value; 527 console.info('Worker: napiCreateBigintUint64 value is: ', receivedValue); 528 ArkTools.forceFullGC(); 529 const value = receivedValue === 1; 530 workerPort.postMessage(value); 531 break; 532 } 533 case 'napiCreateBigintWords': { 534 const receivedValue = data.value; 535 console.info('Worker: napiCreateBigintWords value is: ', receivedValue); 536 ArkTools.forceFullGC(); 537 const value = receivedValue === 1; 538 workerPort.postMessage(value); 539 break; 540 } 541 case 'GetAllPropertyNamesEnvNull': { 542 const receivedValue = data.value; 543 console.info('Worker: GetAllPropertyNamesEnvNull value is: ', receivedValue); 544 ArkTools.forceFullGC(); 545 const value = receivedValue === 1; 546 workerPort.postMessage(value); 547 break; 548 } 549 case 'napiSetInstanceData': { 550 const receivedValue = data.value; 551 console.info('Worker: napiSetInstanceData value is: ', receivedValue); 552 ArkTools.forceFullGC(); 553 const value = receivedValue === 1; 554 workerPort.postMessage(value); 555 break; 556 } 557 case 'getModuleFileName': { 558 const receivedValue = data.value; 559 console.info('Worker: getModuleFileName value is: ', receivedValue); 560 ArkTools.forceFullGC(); 561 const value = receivedValue >= 0; 562 workerPort.postMessage(value); 563 break; 564 } 565 case 'createAsyncResource': { 566 const receivedValue = data.value; 567 console.info('Worker: createAsyncResource value is: ', receivedValue); 568 ArkTools.forceFullGC(); 569 const value = receivedValue instanceof Object; 570 workerPort.postMessage(value); 571 break; 572 } 573 case 'asyncWorkWithQos': { 574 const receivedValue = data.value; 575 console.info('Worker: asyncWorkWithQos value is: ', receivedValue); 576 ArkTools.forceFullGC(); 577 const value = receivedValue === 0; 578 workerPort.postMessage(value); 579 break; 580 } 581 case 'napiRunScriptPathEnvNull': { 582 const receivedValue = data.value; 583 console.info('Worker: napiRunScriptPathEnvNull value is: ', receivedValue); 584 ArkTools.forceFullGC(); 585 const value = receivedValue === 1; 586 workerPort.postMessage(value); 587 break; 588 } 589 case 'napiLoadModuleTest': { 590 const receivedValue = data.value; 591 console.info('Worker: napiLoadModuleTest value is: ', receivedValue); 592 ArkTools.forceFullGC(); 593 const value = receivedValue === 0; 594 workerPort.postMessage(value); 595 break; 596 } 597 case 'createObjectWithProperties': { 598 const receivedValue = data.value; 599 console.info('Worker: createObjectWithProperties value is: ', receivedValue); 600 ArkTools.forceFullGC(); 601 const value = receivedValue === 0; 602 workerPort.postMessage(value); 603 break; 604 } 605 case 'createObjectWithNamedProperties': { 606 const receivedValue = data.value; 607 console.info('Worker: createObjectWithNamedProperties value is: ', receivedValue); 608 ArkTools.forceFullGC(); 609 const value = receivedValue === 0; 610 workerPort.postMessage(value); 611 break; 612 } 613 case 'coerceToNativeBindingObjectEnvNull': { 614 const receivedValue = data.value; 615 console.info('Worker: coerceToNativeBindingObjectEnvNull value is: ', receivedValue); 616 ArkTools.forceFullGC(); 617 const value = receivedValue === 1; 618 workerPort.postMessage(value); 619 break; 620 } 621 case 'napiSerializeTest': { 622 const receivedValue = data.value; 623 console.info('Worker: napiSerializeTest value is: ', receivedValue); 624 ArkTools.forceFullGC(); 625 const value = receivedValue === 2000; 626 workerPort.postMessage(value); 627 break; 628 } 629 case 'napiDeSerializeTest': { 630 const receivedValue = data.value; 631 console.info('Worker: napiDeSerializeTest value is: ', receivedValue); 632 ArkTools.forceFullGC(); 633 const value = receivedValue === 2000; 634 workerPort.postMessage(value); 635 break; 636 } 637 case 'napiIsSendableTest': { 638 const receivedValue = data.value; 639 console.info('Worker: napiIsSendableTest value is: ', receivedValue); 640 ArkTools.forceFullGC(); 641 const value = receivedValue === false; 642 workerPort.postMessage(value); 643 break; 644 } 645 case 'napiCreateSendableObjectTest': { 646 const receivedValue = Number(data.value); 647 console.info('Worker: napiCreateSendableObject value is: ', receivedValue); 648 ArkTools.forceFullGC(); 649 const value = napitest.NapiIsSendable(receivedValue); 650 workerPort.postMessage(value); 651 break; 652 } 653 case 'napiCreateSendableArrayTest': { 654 const receivedValue = Number(data.value); 655 console.info('Worker: napiCreateSendableArrayTest value is: ', receivedValue); 656 ArkTools.forceFullGC(); 657 const value = napitest.NapiIsSendable(receivedValue); 658 workerPort.postMessage(value); 659 break; 660 } 661 case 'napiCreateSendableArrayWithLengthTest': { 662 const receivedValue = Number(data.value); 663 console.info('Worker: napiCreateSendableArrayWithLengthTest value is: ', receivedValue); 664 ArkTools.forceFullGC(); 665 const value = napitest.NapiIsSendable(receivedValue); 666 workerPort.postMessage(value); 667 break; 668 } 669 case 'napiCreateSendableArrayBufferTest': { 670 const receivedValue = Number(data.value); 671 console.info('Worker: napiCreateSendableArrayBufferTest value is: ', receivedValue); 672 ArkTools.forceFullGC(); 673 const value = napitest.NapiIsSendable(receivedValue); 674 workerPort.postMessage(value); 675 break; 676 } 677 case 'napiCreateSendableTypedArrayTest': { 678 const receivedValue = Number(data.value); 679 console.info('Worker: napiCreateSendableTypedArrayTest value is: ', receivedValue); 680 ArkTools.forceFullGC(); 681 const value = napitest.NapiIsSendable(receivedValue); 682 workerPort.postMessage(value); 683 break; 684 } 685 case 'napiWrapSendableTest': { 686 const receivedValue = data.value as object; 687 console.info('Worker: napiWrapSendableTest value is: ', receivedValue); 688 let res1 = napitest.NapiUnwrapSendable(receivedValue) == 'data'; 689 let res2 = napitest.NapiRemoveWrapSendable(receivedValue) == 'data'; 690 let res3 = napitest.NapiUnwrapSendable(receivedValue) == undefined; 691 workerPort.postMessage(res1 && res2 && res3); 692 break; 693 } 694 case 'napiWrapSendableWithSizeTest': { 695 const receivedValue = data.value as object; 696 console.info('Worker: napiWrapSendableWithSizeTest value is: ', receivedValue); 697 let res1 = napitest.NapiUnwrapSendable(receivedValue) == 'data'; 698 let res2 = napitest.NapiRemoveWrapSendable(receivedValue) == 'data'; 699 let res3 = napitest.NapiUnwrapSendable(receivedValue) == undefined; 700 workerPort.postMessage(res1 && res2 && res3); 701 break; 702 } 703 default: 704 console.warn('Worker received unknown message type.'); 705 break; 706 } 707};