MCPcopy Create free account
hub / github.com/buke/quickjs-go / utf16_string

Function utf16_string

deps/quickjs/api-test.c:432–502  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

430}
431
432static void utf16_string(void)
433{
434 JSRuntime *rt = new_runtime();
435 JSContext *ctx = JS_NewContext(rt);
436 {
437 JSValue v = JS_NewStringUTF16(ctx, NULL, 0);
438 assert(!JS_IsException(v));
439 const char *s = JS_ToCString(ctx, v);
440 assert(s);
441 assert(!strcmp(s, ""));
442 JS_FreeCString(ctx, s);
443 JS_FreeValue(ctx, v);
444 }
445 {
446 JSValue v = JS_NewStringUTF16(ctx, (uint16_t[]){'o','k'}, 2);
447 assert(!JS_IsException(v));
448 const char *s = JS_ToCString(ctx, v);
449 assert(s);
450 assert(!strcmp(s, "ok"));
451 JS_FreeCString(ctx, s);
452 size_t n;
453 const uint16_t *u = JS_ToCStringLenUTF16(ctx, &n, v);
454 assert(u);
455 assert(n == 2);
456 assert(u[0] == 'o');
457 assert(u[1] == 'k');
458 JS_FreeCStringUTF16(ctx, u);
459 JS_FreeValue(ctx, v);
460 }
461 {
462 JSValue v = JS_NewStringUTF16(ctx, (uint16_t[]){0xD800}, 1);
463 assert(!JS_IsException(v));
464 const char *s = JS_ToCString(ctx, v);
465 assert(s);
466 // questionable but surrogates don't map to UTF-8 without WTF-8
467 assert(!strcmp(s, "\xED\xA0\x80"));
468 JS_FreeCString(ctx, s);
469 size_t n;
470 const uint16_t *u = JS_ToCStringLenUTF16(ctx, &n, v);
471 assert(u);
472 assert(n == 1);
473 assert(u[0] == 0xD800);
474 JS_FreeCStringUTF16(ctx, u);
475 JS_FreeValue(ctx, v);
476 }
477 {
478 JSValue v = JS_NewStringLen(ctx, "ok", 2); // ascii -> ucs
479 assert(!JS_IsException(v));
480 size_t n;
481 const uint16_t *u = JS_ToCStringLenUTF16(ctx, &n, v);
482 assert(u);
483 assert(n == 2);
484 assert(u[0] == 'o');
485 assert(u[1] == 'k');
486 JS_FreeCStringUTF16(ctx, u);
487 JS_FreeValue(ctx, v);
488 }
489 {

Callers 1

mainFunction · 0.85

Calls 4

new_runtimeFunction · 0.85
JS_IsExceptionFunction · 0.85
JS_ToCStringFunction · 0.85
assertFunction · 0.50

Tested by

no test coverage detected