mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
test: add tests for invalid UTF-8
Verify that `Blob.prototype.text()`, `streamConsumers.text()` and `TextDecoder.prototype.decode()` work as expected with invalid UTF-8. PR-URL: https://github.com/nodejs/node/pull/40351 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com>
This commit is contained in:
committed by
Luigi Pinca
parent
d049a52204
commit
dc35aef14c
@@ -87,6 +87,15 @@ assert.throws(() => new Blob({}), {
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
const b = new Blob(['hello', new Uint8Array([0xed, 0xa0, 0x88])]);
|
||||
assert.strictEqual(b.size, 8);
|
||||
b.text().then(common.mustCall((text) => {
|
||||
assert.strictEqual(text, 'hello\ufffd\ufffd\ufffd');
|
||||
assert.strictEqual(text.length, 8);
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
const b = new Blob(
|
||||
[
|
||||
|
||||
@@ -13,6 +13,7 @@ const {
|
||||
} = require('stream/consumers');
|
||||
|
||||
const {
|
||||
Readable,
|
||||
PassThrough
|
||||
} = require('stream');
|
||||
|
||||
@@ -73,6 +74,19 @@ const kArrayBuffer =
|
||||
setTimeout(() => passthrough.end('there'), 10);
|
||||
}
|
||||
|
||||
{
|
||||
const readable = new Readable({
|
||||
read() {}
|
||||
});
|
||||
|
||||
text(readable).then((data) => {
|
||||
assert.strictEqual(data, 'foo\ufffd\ufffd\ufffd');
|
||||
});
|
||||
|
||||
readable.push(new Uint8Array([0x66, 0x6f, 0x6f, 0xed, 0xa0, 0x80]));
|
||||
readable.push(null);
|
||||
}
|
||||
|
||||
{
|
||||
const passthrough = new PassThrough();
|
||||
|
||||
|
||||
@@ -191,3 +191,11 @@ if (common.hasIntl) {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Test TextDecoder for incomplete UTF-8 byte sequence.
|
||||
{
|
||||
const decoder = new TextDecoder();
|
||||
const chunk = new Uint8Array([0x66, 0x6f, 0x6f, 0xed]);
|
||||
const str = decoder.decode(chunk);
|
||||
assert.strictEqual(str, 'foo\ufffd');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user