• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../../common');
3const assert = require('assert');
4
5// Testing api calls for string
6const test_string = require(`./build/${common.buildType}/test_string`);
7
8const empty = '';
9assert.strictEqual(test_string.TestLatin1(empty), empty);
10assert.strictEqual(test_string.TestUtf8(empty), empty);
11assert.strictEqual(test_string.TestUtf16(empty), empty);
12assert.strictEqual(test_string.Utf16Length(empty), 0);
13assert.strictEqual(test_string.Utf8Length(empty), 0);
14
15const str1 = 'hello world';
16assert.strictEqual(test_string.TestLatin1(str1), str1);
17assert.strictEqual(test_string.TestUtf8(str1), str1);
18assert.strictEqual(test_string.TestUtf16(str1), str1);
19assert.strictEqual(test_string.TestLatin1Insufficient(str1), str1.slice(0, 3));
20assert.strictEqual(test_string.TestUtf8Insufficient(str1), str1.slice(0, 3));
21assert.strictEqual(test_string.TestUtf16Insufficient(str1), str1.slice(0, 3));
22assert.strictEqual(test_string.Utf16Length(str1), 11);
23assert.strictEqual(test_string.Utf8Length(str1), 11);
24
25const str2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
26assert.strictEqual(test_string.TestLatin1(str2), str2);
27assert.strictEqual(test_string.TestUtf8(str2), str2);
28assert.strictEqual(test_string.TestUtf16(str2), str2);
29assert.strictEqual(test_string.TestLatin1Insufficient(str2), str2.slice(0, 3));
30assert.strictEqual(test_string.TestUtf8Insufficient(str2), str2.slice(0, 3));
31assert.strictEqual(test_string.TestUtf16Insufficient(str2), str2.slice(0, 3));
32assert.strictEqual(test_string.Utf16Length(str2), 62);
33assert.strictEqual(test_string.Utf8Length(str2), 62);
34
35const str3 = '?!@#$%^&*()_+-=[]{}/.,<>\'"\\';
36assert.strictEqual(test_string.TestLatin1(str3), str3);
37assert.strictEqual(test_string.TestUtf8(str3), str3);
38assert.strictEqual(test_string.TestUtf16(str3), str3);
39assert.strictEqual(test_string.TestLatin1Insufficient(str3), str3.slice(0, 3));
40assert.strictEqual(test_string.TestUtf8Insufficient(str3), str3.slice(0, 3));
41assert.strictEqual(test_string.TestUtf16Insufficient(str3), str3.slice(0, 3));
42assert.strictEqual(test_string.Utf16Length(str3), 27);
43assert.strictEqual(test_string.Utf8Length(str3), 27);
44
45const str4 = '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿';
46assert.strictEqual(test_string.TestLatin1(str4), str4);
47assert.strictEqual(test_string.TestUtf8(str4), str4);
48assert.strictEqual(test_string.TestUtf16(str4), str4);
49assert.strictEqual(test_string.TestLatin1Insufficient(str4), str4.slice(0, 3));
50assert.strictEqual(test_string.TestUtf8Insufficient(str4), str4.slice(0, 1));
51assert.strictEqual(test_string.TestUtf16Insufficient(str4), str4.slice(0, 3));
52assert.strictEqual(test_string.Utf16Length(str4), 31);
53assert.strictEqual(test_string.Utf8Length(str4), 62);
54
55const str5 = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ';
56assert.strictEqual(test_string.TestLatin1(str5), str5);
57assert.strictEqual(test_string.TestUtf8(str5), str5);
58assert.strictEqual(test_string.TestUtf16(str5), str5);
59assert.strictEqual(test_string.TestLatin1Insufficient(str5), str5.slice(0, 3));
60assert.strictEqual(test_string.TestUtf8Insufficient(str5), str5.slice(0, 1));
61assert.strictEqual(test_string.TestUtf16Insufficient(str5), str5.slice(0, 3));
62assert.strictEqual(test_string.Utf16Length(str5), 63);
63assert.strictEqual(test_string.Utf8Length(str5), 126);
64
65const str6 = '\u{2003}\u{2101}\u{2001}\u{202}\u{2011}';
66assert.strictEqual(test_string.TestUtf8(str6), str6);
67assert.strictEqual(test_string.TestUtf16(str6), str6);
68assert.strictEqual(test_string.TestUtf8Insufficient(str6), str6.slice(0, 1));
69assert.strictEqual(test_string.TestUtf16Insufficient(str6), str6.slice(0, 3));
70assert.strictEqual(test_string.Utf16Length(str6), 5);
71assert.strictEqual(test_string.Utf8Length(str6), 14);
72
73assert.throws(() => {
74  test_string.TestLargeUtf8();
75}, /^Error: Invalid argument$/);
76
77assert.throws(() => {
78  test_string.TestLargeLatin1();
79}, /^Error: Invalid argument$/);
80
81assert.throws(() => {
82  test_string.TestLargeUtf16();
83}, /^Error: Invalid argument$/);
84
85test_string.TestMemoryCorruption(' '.repeat(64 * 1024));
86