test: add more UTF-8 StringDecoder tests
PR-URL: https://github.com/nodejs/node/pull/7310 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
This commit is contained in:
parent
79ef3b6b5d
commit
5e8cbd7a4f
@ -28,6 +28,30 @@ test(
|
||||
'\u02e4\u0064\u12e4\u0030\u3045'
|
||||
);
|
||||
|
||||
// Some invalid input, known to have caused trouble with chunking
|
||||
// in https://github.com/nodejs/node/pull/7310#issuecomment-226445923
|
||||
// 00: |00000000 ASCII
|
||||
// 41: |01000001 ASCII
|
||||
// B8: 10|111000 continuation
|
||||
// CC: 110|01100 two-byte head
|
||||
// E2: 1110|0010 three-byte head
|
||||
// F0: 11110|000 four-byte head
|
||||
// F1: 11110|001'another four-byte head
|
||||
// FB: 111110|11 "five-byte head", not UTF-8
|
||||
test('utf-8', Buffer.from('C9B5A941', 'hex'), '\u0275\ufffdA');
|
||||
test('utf-8', Buffer.from('E2', 'hex'), '\ufffd');
|
||||
test('utf-8', Buffer.from('E241', 'hex'), '\ufffdA');
|
||||
test('utf-8', Buffer.from('CCCCB8', 'hex'), '\ufffd\u0338');
|
||||
test('utf-8', Buffer.from('F0B841', 'hex'), '\ufffd\ufffdA');
|
||||
test('utf-8', Buffer.from('F1CCB8', 'hex'), '\ufffd\u0338');
|
||||
test('utf-8', Buffer.from('F0FB00', 'hex'), '\ufffd\ufffd\0');
|
||||
test('utf-8', Buffer.from('CCE2B8B8', 'hex'), '\ufffd\u2e38');
|
||||
test('utf-8', Buffer.from('E2B8CCB8', 'hex'), '\ufffd\ufffd\u0338');
|
||||
test('utf-8', Buffer.from('E2FBCC01', 'hex'), '\ufffd\ufffd\ufffd\u0001');
|
||||
test('utf-8', Buffer.from('EDA0B5EDB08D', 'hex'), // CESU-8 of U+1D40D
|
||||
'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd');
|
||||
test('utf-8', Buffer.from('CCB8CDB9', 'hex'), '\u0338\u0379');
|
||||
|
||||
// UCS-2
|
||||
test('ucs2', Buffer.from('ababc', 'ucs2'), 'ababc');
|
||||
|
||||
@ -58,6 +82,11 @@ decoder = new StringDecoder('utf8');
|
||||
assert.strictEqual(decoder.write(Buffer.from('EFBFBDE2', 'hex')), '\ufffd');
|
||||
assert.strictEqual(decoder.end(), '\ufffd');
|
||||
|
||||
decoder = new StringDecoder('utf8');
|
||||
assert.strictEqual(decoder.write(Buffer.from('F1', 'hex')), '');
|
||||
assert.strictEqual(decoder.write(Buffer.from('41F2', 'hex')), '\ufffdA');
|
||||
assert.strictEqual(decoder.end(), '\ufffd');
|
||||
|
||||
|
||||
// Additional UTF-16LE surrogate pair tests
|
||||
decoder = new StringDecoder('utf16le');
|
||||
@ -93,6 +122,7 @@ function test(encoding, input, expected, singleSequence) {
|
||||
sequence.forEach(function(write) {
|
||||
output += decoder.write(input.slice(write[0], write[1]));
|
||||
});
|
||||
output += decoder.end();
|
||||
process.stdout.write('.');
|
||||
if (output !== expected) {
|
||||
var message =
|
||||
|
Loading…
x
Reference in New Issue
Block a user