mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-16 16:28:58 +00:00
Improve TextDecoder.decode
1 - Optional input (why? I don't know, but it's part of the spec and happens) 2 - Optional stream parameter 3 - More test cases
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<script src="../testing.js"></script>
|
||||
<script id=decoder>
|
||||
let d1 = new TextDecoder();
|
||||
@@ -5,13 +8,40 @@
|
||||
testing.expectEqual(false, d1.fatal);
|
||||
testing.expectEqual(false, d1.ignoreBOM);
|
||||
|
||||
testing.expectEqual('', d1.decode());
|
||||
testing.expectEqual('𠮷', d1.decode(new Uint8Array([240, 160, 174, 183])));
|
||||
testing.expectEqual('𠮷', d1.decode(new Uint8Array([0xEF, 0xBB, 0xBF, 240, 160, 174, 183])));
|
||||
testing.expectEqual('<27>2', d1.decode(new Uint8Array([249, 50])));
|
||||
|
||||
{
|
||||
const buffer = new ArrayBuffer(4);
|
||||
const ints = new Uint8Array(buffer)
|
||||
ints[0] = 240;
|
||||
ints[1] = 160;
|
||||
ints[2] = 174;
|
||||
ints[3] = 183;
|
||||
testing.expectEqual('𠮷', d1.decode(buffer));
|
||||
}
|
||||
|
||||
{
|
||||
const buffer = new ArrayBuffer(4);
|
||||
const dv = new DataView(buffer);
|
||||
dv.setUint8(0, 240);
|
||||
dv.setUint8(1, 160);
|
||||
dv.setUint8(2, 174);
|
||||
dv.setUint8(3, 183);
|
||||
testing.expectEqual('𠮷', d1.decode(dv));
|
||||
}
|
||||
|
||||
let d2 = new TextDecoder('utf8', {fatal: true})
|
||||
testing.expectError('Error: InvalidUtf8', () => {
|
||||
let data = new Uint8Array([240, 240, 160, 174, 183]);
|
||||
d2.decode(data);
|
||||
});
|
||||
</script>
|
||||
|
||||
<script id=stream>
|
||||
let d3 = new TextDecoder();
|
||||
testing.expectEqual('', d2.decode(new Uint8Array([226, 153]), { stream: true }));
|
||||
testing.expectEqual('♥', d2.decode(new Uint8Array([165]), { stream: true }));
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user