• 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.TestLatin1AutoLength(empty), empty);
13assert.strictEqual(test_string.TestUtf8AutoLength(empty), empty);
14assert.strictEqual(test_string.TestUtf16AutoLength(empty), empty);
15assert.strictEqual(test_string.TestLatin1External(empty), empty);
16assert.strictEqual(test_string.TestUtf16External(empty), empty);
17assert.strictEqual(test_string.TestLatin1ExternalAutoLength(empty), empty);
18assert.strictEqual(test_string.TestUtf16ExternalAutoLength(empty), empty);
19assert.strictEqual(test_string.Utf16Length(empty), 0);
20assert.strictEqual(test_string.Utf8Length(empty), 0);
21
22const str1 = 'hello world';
23assert.strictEqual(test_string.TestLatin1(str1), str1);
24assert.strictEqual(test_string.TestUtf8(str1), str1);
25assert.strictEqual(test_string.TestUtf16(str1), str1);
26assert.strictEqual(test_string.TestLatin1AutoLength(str1), str1);
27assert.strictEqual(test_string.TestUtf8AutoLength(str1), str1);
28assert.strictEqual(test_string.TestUtf16AutoLength(str1), str1);
29assert.strictEqual(test_string.TestLatin1External(str1), str1);
30assert.strictEqual(test_string.TestUtf16External(str1), str1);
31assert.strictEqual(test_string.TestLatin1ExternalAutoLength(str1), str1);
32assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str1), str1);
33assert.strictEqual(test_string.TestLatin1Insufficient(str1), str1.slice(0, 3));
34assert.strictEqual(test_string.TestUtf8Insufficient(str1), str1.slice(0, 3));
35assert.strictEqual(test_string.TestUtf16Insufficient(str1), str1.slice(0, 3));
36assert.strictEqual(test_string.Utf16Length(str1), 11);
37assert.strictEqual(test_string.Utf8Length(str1), 11);
38
39const str2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
40assert.strictEqual(test_string.TestLatin1(str2), str2);
41assert.strictEqual(test_string.TestUtf8(str2), str2);
42assert.strictEqual(test_string.TestUtf16(str2), str2);
43assert.strictEqual(test_string.TestLatin1AutoLength(str2), str2);
44assert.strictEqual(test_string.TestUtf8AutoLength(str2), str2);
45assert.strictEqual(test_string.TestUtf16AutoLength(str2), str2);
46assert.strictEqual(test_string.TestLatin1External(str2), str2);
47assert.strictEqual(test_string.TestUtf16External(str2), str2);
48assert.strictEqual(test_string.TestLatin1ExternalAutoLength(str2), str2);
49assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str2), str2);
50assert.strictEqual(test_string.TestLatin1Insufficient(str2), str2.slice(0, 3));
51assert.strictEqual(test_string.TestUtf8Insufficient(str2), str2.slice(0, 3));
52assert.strictEqual(test_string.TestUtf16Insufficient(str2), str2.slice(0, 3));
53assert.strictEqual(test_string.Utf16Length(str2), 62);
54assert.strictEqual(test_string.Utf8Length(str2), 62);
55
56const str3 = '?!@#$%^&*()_+-=[]{}/.,<>\'"\\';
57assert.strictEqual(test_string.TestLatin1(str3), str3);
58assert.strictEqual(test_string.TestUtf8(str3), str3);
59assert.strictEqual(test_string.TestUtf16(str3), str3);
60assert.strictEqual(test_string.TestLatin1AutoLength(str3), str3);
61assert.strictEqual(test_string.TestUtf8AutoLength(str3), str3);
62assert.strictEqual(test_string.TestUtf16AutoLength(str3), str3);
63assert.strictEqual(test_string.TestLatin1External(str3), str3);
64assert.strictEqual(test_string.TestUtf16External(str3), str3);
65assert.strictEqual(test_string.TestLatin1ExternalAutoLength(str3), str3);
66assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str3), str3);
67assert.strictEqual(test_string.TestLatin1Insufficient(str3), str3.slice(0, 3));
68assert.strictEqual(test_string.TestUtf8Insufficient(str3), str3.slice(0, 3));
69assert.strictEqual(test_string.TestUtf16Insufficient(str3), str3.slice(0, 3));
70assert.strictEqual(test_string.Utf16Length(str3), 27);
71assert.strictEqual(test_string.Utf8Length(str3), 27);
72
73const str4 = '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿';
74assert.strictEqual(test_string.TestLatin1(str4), str4);
75assert.strictEqual(test_string.TestUtf8(str4), str4);
76assert.strictEqual(test_string.TestUtf16(str4), str4);
77assert.strictEqual(test_string.TestLatin1AutoLength(str4), str4);
78assert.strictEqual(test_string.TestUtf8AutoLength(str4), str4);
79assert.strictEqual(test_string.TestUtf16AutoLength(str4), str4);
80assert.strictEqual(test_string.TestLatin1External(str4), str4);
81assert.strictEqual(test_string.TestUtf16External(str4), str4);
82assert.strictEqual(test_string.TestLatin1ExternalAutoLength(str4), str4);
83assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str4), str4);
84assert.strictEqual(test_string.TestLatin1Insufficient(str4), str4.slice(0, 3));
85assert.strictEqual(test_string.TestUtf8Insufficient(str4), str4.slice(0, 1));
86assert.strictEqual(test_string.TestUtf16Insufficient(str4), str4.slice(0, 3));
87assert.strictEqual(test_string.Utf16Length(str4), 31);
88assert.strictEqual(test_string.Utf8Length(str4), 62);
89
90const str5 = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ';
91assert.strictEqual(test_string.TestLatin1(str5), str5);
92assert.strictEqual(test_string.TestUtf8(str5), str5);
93assert.strictEqual(test_string.TestUtf16(str5), str5);
94assert.strictEqual(test_string.TestLatin1AutoLength(str5), str5);
95assert.strictEqual(test_string.TestUtf8AutoLength(str5), str5);
96assert.strictEqual(test_string.TestUtf16AutoLength(str5), str5);
97assert.strictEqual(test_string.TestLatin1External(str5), str5);
98assert.strictEqual(test_string.TestUtf16External(str5), str5);
99assert.strictEqual(test_string.TestLatin1ExternalAutoLength(str5), str5);
100assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str5), str5);
101assert.strictEqual(test_string.TestLatin1Insufficient(str5), str5.slice(0, 3));
102assert.strictEqual(test_string.TestUtf8Insufficient(str5), str5.slice(0, 1));
103assert.strictEqual(test_string.TestUtf16Insufficient(str5), str5.slice(0, 3));
104assert.strictEqual(test_string.Utf16Length(str5), 63);
105assert.strictEqual(test_string.Utf8Length(str5), 126);
106
107const str6 = '\u{2003}\u{2101}\u{2001}\u{202}\u{2011}';
108assert.strictEqual(test_string.TestUtf8(str6), str6);
109assert.strictEqual(test_string.TestUtf16(str6), str6);
110assert.strictEqual(test_string.TestUtf8AutoLength(str6), str6);
111assert.strictEqual(test_string.TestUtf16AutoLength(str6), str6);
112assert.strictEqual(test_string.TestUtf16External(str6), str6);
113assert.strictEqual(test_string.TestUtf16ExternalAutoLength(str6), str6);
114assert.strictEqual(test_string.TestUtf8Insufficient(str6), str6.slice(0, 1));
115assert.strictEqual(test_string.TestUtf16Insufficient(str6), str6.slice(0, 3));
116assert.strictEqual(test_string.Utf16Length(str6), 5);
117assert.strictEqual(test_string.Utf8Length(str6), 14);
118
119assert.throws(() => {
120  test_string.TestLargeUtf8();
121}, /^Error: Invalid argument$/);
122
123assert.throws(() => {
124  test_string.TestLargeLatin1();
125}, /^Error: Invalid argument$/);
126
127assert.throws(() => {
128  test_string.TestLargeUtf16();
129}, /^Error: Invalid argument$/);
130
131test_string.TestMemoryCorruption(' '.repeat(64 * 1024));
132