Skip to content

Commit eb25fe7

Browse files
tony-goRafaelGSS
authored andcommitted
test: add more cases for parse-encoding
PR-URL: #44427 Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Qingyu Deng <i@ayase-lab.com>
1 parent 01e584e commit eb25fe7

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/api/encoding.cc

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ enum encoding ParseEncoding(const char* encoding,
1515
switch (encoding[0]) {
1616
case 'u':
1717
case 'U':
18+
// Note: the two first conditions are needed for performance reasons
19+
// as "utf8"/"utf-8" is a common case.
20+
// (same for other cases below)
21+
1822
// utf8, utf16le
1923
if (encoding[1] == 't' && encoding[2] == 'f') {
2024
// Skip `-`

test/addons/parse-encoding/test.js

+28-3
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,45 @@ const common = require('../../common');
44
const assert = require('assert');
55
const { parseEncoding } = require(`./build/${common.buildType}/binding`);
66

7-
assert.strictEqual(parseEncoding(''), 'UNKNOWN');
87

98
assert.strictEqual(parseEncoding('ascii'), 'ASCII');
9+
assert.strictEqual(parseEncoding('ASCII'), 'ASCII');
1010
assert.strictEqual(parseEncoding('base64'), 'BASE64');
11+
assert.strictEqual(parseEncoding('BASE64'), 'BASE64');
1112
assert.strictEqual(parseEncoding('base64url'), 'BASE64URL');
13+
assert.strictEqual(parseEncoding('BASE64URL'), 'BASE64URL');
1214
assert.strictEqual(parseEncoding('binary'), 'LATIN1');
15+
assert.strictEqual(parseEncoding('BINARY'), 'LATIN1');
1316
assert.strictEqual(parseEncoding('buffer'), 'BUFFER');
17+
assert.strictEqual(parseEncoding('BUFFER'), 'BUFFER');
1418
assert.strictEqual(parseEncoding('hex'), 'HEX');
19+
assert.strictEqual(parseEncoding('HEX'), 'HEX');
1520
assert.strictEqual(parseEncoding('latin1'), 'LATIN1');
21+
assert.strictEqual(parseEncoding('LATIN1'), 'LATIN1');
22+
23+
// ucs2 variations
1624
assert.strictEqual(parseEncoding('ucs2'), 'UCS2');
25+
assert.strictEqual(parseEncoding('ucs-2'), 'UCS2');
26+
assert.strictEqual(parseEncoding('UCS2'), 'UCS2');
27+
assert.strictEqual(parseEncoding('UCS-2'), 'UCS2');
28+
29+
// utf8 variations
1730
assert.strictEqual(parseEncoding('utf8'), 'UTF8');
18-
assert.strictEqual(parseEncoding('utf-16LE'), 'UCS2');
31+
assert.strictEqual(parseEncoding('utf-8'), 'UTF8');
32+
assert.strictEqual(parseEncoding('UTF8'), 'UTF8');
33+
assert.strictEqual(parseEncoding('UTF-8'), 'UTF8');
34+
35+
// utf16le variations
36+
assert.strictEqual(parseEncoding('utf16le'), 'UCS2');
37+
assert.strictEqual(parseEncoding('utf-16le'), 'UCS2');
38+
assert.strictEqual(parseEncoding('UTF16LE'), 'UCS2');
39+
assert.strictEqual(parseEncoding('UTF-16LE'), 'UCS2');
40+
41+
// unknown cases
42+
assert.strictEqual(parseEncoding(''), 'UNKNOWN');
43+
assert.strictEqual(parseEncoding('asCOO'), 'UNKNOWN');
44+
assert.strictEqual(parseEncoding('hux'), 'UNKNOWN');
1945
assert.strictEqual(parseEncoding('utf-buffer'), 'UNKNOWN');
2046
assert.strictEqual(parseEncoding('utf-16leNOT'), 'UNKNOWN');
21-
2247
assert.strictEqual(parseEncoding('linary'), 'UNKNOWN');
2348
assert.strictEqual(parseEncoding('luffer'), 'UNKNOWN');

0 commit comments

Comments
 (0)