summaryrefslogtreecommitdiff
path: root/tests/napi/coerce_test.js
blob: 64f0148016113b37d3ca3448571f8a4648e1ca24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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({}), {});
});