summaryrefslogtreecommitdiff
path: root/tests/napi/coerce_test.js
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-12 13:46:50 -0700
committerGitHub <noreply@github.com>2024-02-12 13:46:50 -0700
commitf60720090c7bd8cdf91d7aebd0c42e01c86b3b83 (patch)
tree9becb7ff7e40d37769601fa049beccd101d58a98 /tests/napi/coerce_test.js
parentbd1358efab8ba7339a8e70034315fa7da840292e (diff)
chore: move test_ffi and test_nap to tests/ [WIP] (#22394)
Moving some additional NAPI and. FFI tests out of the tree root.
Diffstat (limited to 'tests/napi/coerce_test.js')
-rw-r--r--tests/napi/coerce_test.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/napi/coerce_test.js b/tests/napi/coerce_test.js
new file mode 100644
index 000000000..64f014801
--- /dev/null
+++ b/tests/napi/coerce_test.js
@@ -0,0 +1,74 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+import { assertEquals, loadTestLibrary } from "./common.js";
+
+const coerce = loadTestLibrary();
+
+Deno.test("napi coerce bool", function () {
+ assertEquals(coerce.test_coerce_bool(true), true);
+ assertEquals(coerce.test_coerce_bool(false), false);
+ assertEquals(coerce.test_coerce_bool(0), false);
+ assertEquals(coerce.test_coerce_bool(69), true);
+ assertEquals(coerce.test_coerce_bool(Number.MAX_SAFE_INTEGER), true);
+ assertEquals(coerce.test_coerce_bool(new Array(10)), true);
+ assertEquals(coerce.test_coerce_bool("Hello, Deno!"), true);
+ assertEquals(coerce.test_coerce_bool(Symbol("[[test]]")), true);
+ assertEquals(coerce.test_coerce_bool({}), true);
+ assertEquals(coerce.test_coerce_bool(() => false), true);
+ assertEquals(coerce.test_coerce_bool(undefined), false);
+ assertEquals(coerce.test_coerce_bool(null), false);
+});
+
+Deno.test("napi coerce number", function () {
+ assertEquals(coerce.test_coerce_number(true), 1);
+ assertEquals(coerce.test_coerce_number(false), 0);
+ assertEquals(coerce.test_coerce_number(0), 0);
+ assertEquals(coerce.test_coerce_number(69), 69);
+ assertEquals(coerce.test_coerce_number(""), 0);
+ assertEquals(
+ coerce.test_coerce_number(Number.MAX_SAFE_INTEGER),
+ Number.MAX_SAFE_INTEGER,
+ );
+ assertEquals(coerce.test_coerce_number(new Array(10)), NaN);
+ assertEquals(coerce.test_coerce_number("Hello, Deno!"), NaN);
+ assertEquals(coerce.test_coerce_number({}), NaN);
+ assertEquals(coerce.test_coerce_number(() => false), NaN);
+ assertEquals(coerce.test_coerce_number(undefined), NaN);
+ assertEquals(coerce.test_coerce_number(null), 0);
+});
+
+Deno.test("napi coerce string", function () {
+ assertEquals(coerce.test_coerce_string(true), "true");
+ assertEquals(coerce.test_coerce_string(false), "false");
+ assertEquals(coerce.test_coerce_string(0), "0");
+ assertEquals(coerce.test_coerce_string(69), "69");
+ assertEquals(coerce.test_coerce_string(""), "");
+ assertEquals(
+ coerce.test_coerce_string(Number.MAX_SAFE_INTEGER),
+ "9007199254740991",
+ );
+ assertEquals(coerce.test_coerce_string(new Array(10)), ",,,,,,,,,");
+ assertEquals(coerce.test_coerce_string("Hello, Deno!"), "Hello, Deno!");
+ assertEquals(coerce.test_coerce_string({}), "[object Object]");
+ assertEquals(coerce.test_coerce_string(() => false), "() => false");
+ assertEquals(coerce.test_coerce_string(undefined), "undefined");
+ assertEquals(coerce.test_coerce_string(null), "null");
+});
+
+Deno.test("napi coerce object", function () {
+ assertEquals(coerce.test_coerce_object(true), new Boolean(true));
+ assertEquals(coerce.test_coerce_object(false), new Boolean(false));
+ assertEquals(coerce.test_coerce_object(0), new Number(0));
+ assertEquals(coerce.test_coerce_object(69), new Number(0));
+ assertEquals(coerce.test_coerce_object(""), new String(""));
+ assertEquals(
+ coerce.test_coerce_object(Number.MAX_SAFE_INTEGER),
+ new Number(Number.MAX_SAFE_INTEGER),
+ );
+ assertEquals(coerce.test_coerce_object(new Array(10)), new Array(10));
+ assertEquals(
+ coerce.test_coerce_object("Hello, Deno!"),
+ new String("Hello, Deno!"),
+ );
+ assertEquals(coerce.test_coerce_object({}), {});
+});