#include <stdio.h>
#include <string.h>
#include "napi_test_helpers.h"
int main(void) {
napi_env env = napi_wasm_init_env();
CHECK_OR_FAIL(env != NULL, "napi_wasm_init_env returned NULL");
{
napi_value str;
NAPI_CALL(env,
napi_create_string_utf8(env, "Hello, World!", 5, &str));
char buf[256];
size_t len;
NAPI_CALL(env,
napi_get_value_string_utf8(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 5, "explicit length: expected len 5");
CHECK_OR_FAIL(strcmp(buf, "Hello") == 0,
"explicit length: expected 'Hello'");
}
{
napi_value str;
NAPI_CALL(env,
napi_create_string_utf8(env, "auto length test",
NAPI_AUTO_LENGTH, &str));
char buf[256];
size_t len;
NAPI_CALL(env,
napi_get_value_string_utf8(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 16, "auto length: expected len 16");
CHECK_OR_FAIL(strcmp(buf, "auto length test") == 0,
"auto length: string mismatch");
}
{
napi_value str;
NAPI_CALL(env, napi_create_string_utf8(env, "", NAPI_AUTO_LENGTH, &str));
char buf[256];
size_t len;
NAPI_CALL(env,
napi_get_value_string_utf8(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 0, "empty string: expected len 0");
CHECK_OR_FAIL(strcmp(buf, "") == 0, "empty string: expected ''");
}
{
napi_value str;
NAPI_CALL(env,
napi_create_string_utf8(env, "measure me", NAPI_AUTO_LENGTH,
&str));
size_t len;
NAPI_CALL(env,
napi_get_value_string_utf8(env, str, NULL, 0, &len));
CHECK_OR_FAIL(len == 10, "length query: expected len 10");
}
{
napi_value str;
NAPI_CALL(env,
napi_create_string_utf8(env, "truncate me", NAPI_AUTO_LENGTH,
&str));
char buf[6];
size_t len;
NAPI_CALL(env,
napi_get_value_string_utf8(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 5, "truncation: expected copied len 5");
CHECK_OR_FAIL(strcmp(buf, "trunc") == 0,
"truncation: expected 'trunc'");
}
{
napi_value str;
NAPI_CALL(env,
napi_create_string_latin1(env, "Latin1 test", NAPI_AUTO_LENGTH,
&str));
char buf[256];
size_t len;
NAPI_CALL(env,
napi_get_value_string_latin1(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 11, "latin1: expected len 11");
CHECK_OR_FAIL(strcmp(buf, "Latin1 test") == 0,
"latin1: string mismatch");
}
{
napi_value str;
NAPI_CALL(env, napi_create_string_latin1(env, "abcdef", 3, &str));
char buf[256];
size_t len;
NAPI_CALL(env,
napi_get_value_string_latin1(env, str, buf, sizeof(buf), &len));
CHECK_OR_FAIL(len == 3, "latin1 explicit: expected len 3");
CHECK_OR_FAIL(strcmp(buf, "abc") == 0,
"latin1 explicit: expected 'abc'");
}
{
napi_value str;
NAPI_CALL(env,
napi_create_string_utf8(env, "typeof test", NAPI_AUTO_LENGTH,
&str));
napi_valuetype vtype;
NAPI_CALL(env, napi_typeof(env, str, &vtype));
CHECK_OR_FAIL(vtype == napi_string, "typeof: expected napi_string");
}
return PrintSuccess("TEST_STRING");
}