MCPcopy Index your code
hub / github.com/nodejs/node-addon-api / test

Function test

test/name.js:7–64  ·  view source on GitHub ↗
(binding)

Source from the content-addressed store, hash-verified

5module.exports = require('./common').runTest(test);
6
7function test (binding) {
8 const expected = '123456789';
9
10 assert.throws(binding.name.nullStringShouldThrow, {
11 name: 'Error',
12 message: 'Error in native callback'
13 });
14 assert.ok(binding.name.checkString(expected, 'utf8'));
15 assert.ok(binding.name.checkString(expected, 'utf16'));
16 assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf8', 3));
17 assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf16', 3));
18
19 const str1 = binding.name.createString('utf8');
20 assert.strictEqual(str1, expected);
21 assert.ok(binding.name.checkString(str1, 'utf8'));
22 assert.ok(binding.name.checkString(str1, 'utf16'));
23
24 const substr1 = binding.name.createString('utf8', 3);
25 assert.strictEqual(substr1, expected.substr(0, 3));
26 assert.ok(binding.name.checkString(substr1, 'utf8', 3));
27 assert.ok(binding.name.checkString(substr1, 'utf16', 3));
28
29 const str2 = binding.name.createString('utf16');
30 assert.strictEqual(str1, expected);
31 assert.ok(binding.name.checkString(str2, 'utf8'));
32 assert.ok(binding.name.checkString(str2, 'utf16'));
33
34 const substr2 = binding.name.createString('utf16', 3);
35 assert.strictEqual(substr1, expected.substr(0, 3));
36 assert.ok(binding.name.checkString(substr2, 'utf8', 3));
37 assert.ok(binding.name.checkString(substr2, 'utf16', 3));
38
39 // eslint-disable-next-line symbol-description
40 assert.ok(binding.name.checkSymbol(Symbol()));
41 assert.ok(binding.name.checkSymbol(Symbol('test')));
42
43 const sym1 = binding.name.createSymbol();
44 assert.strictEqual(typeof sym1, 'symbol');
45 assert.ok(binding.name.checkSymbol(sym1));
46
47 const sym2 = binding.name.createSymbol('test');
48 assert.strictEqual(typeof sym2, 'symbol');
49 assert.ok(binding.name.checkSymbol(sym1));
50
51 // Check for off-by-one errors which might only appear for strings of certain sizes,
52 // due to how std::string increments its capacity in chunks.
53 const longString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
54 for (let i = 10; i <= longString.length; i++) {
55 const str = longString.substr(0, i);
56 assert.strictEqual(binding.name.echoString(str, 'utf8'), str);
57 assert.strictEqual(binding.name.echoString(str, 'utf16'), str);
58 }
59
60 assert.strictEqual(binding.name.createStringFromStringView(), 'hello1');
61 const symFromStringView = binding.name.createSymbolFromStringView();
62 assert.strictEqual(typeof symFromStringView, 'symbol');
63 assert.strictEqual(symFromStringView.description, 'hello2');
64}

Callers

nothing calls this directly

Calls 1

SymbolClass · 0.85

Tested by

no test coverage detected