summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/encoding/textdecoder-streaming.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/encoding/textdecoder-streaming.html')
-rw-r--r--testing/web-platform/tests/encoding/textdecoder-streaming.html42
1 files changed, 42 insertions, 0 deletions
diff --git a/testing/web-platform/tests/encoding/textdecoder-streaming.html b/testing/web-platform/tests/encoding/textdecoder-streaming.html
new file mode 100644
index 000000000..2b567aaa1
--- /dev/null
+++ b/testing/web-platform/tests/encoding/textdecoder-streaming.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<title>Encoding API: Streaming decode</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/encodings.js"></script>
+<script>
+
+var string = '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF';
+var octets = {
+ 'utf-8': [0x00,0x31,0x32,0x33,0x41,0x42,0x43,0x61,0x62,0x63,0xc2,0x80,
+ 0xc3,0xbf,0xc4,0x80,0xe1,0x80,0x80,0xef,0xbf,0xbd,0xf0,0x90,
+ 0x80,0x80,0xf4,0x8f,0xbf,0xbf],
+ 'utf-16le': [0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42,0x00,
+ 0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF,0x00,
+ 0x00,0x01,0x00,0x10,0xFD,0xFF,0x00,0xD8,0x00,0xDC,0xFF,0xDB,
+ 0xFF,0xDF],
+ 'utf-16be': [0x00,0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42,
+ 0x00,0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF,
+ 0x01,0x00,0x10,0x00,0xFF,0xFD,0xD8,0x00,0xDC,0x00,0xDB,0xFF,
+ 0xDF,0xFF]
+};
+
+Object.keys(octets).forEach(function(encoding) {
+ for (var len = 1; len <= 5; ++len) {
+ test(function() {
+ var encoded = octets[encoding];
+
+ var out = '';
+ var decoder = new TextDecoder(encoding);
+ for (var i = 0; i < encoded.length; i += len) {
+ var sub = [];
+ for (var j = i; j < encoded.length && j < i + len; ++j)
+ sub.push(encoded[j]);
+ out += decoder.decode(new Uint8Array(sub), {stream: true});
+ }
+ out += decoder.decode();
+ assert_equals(out, string);
+ }, 'Streaming decode: ' + encoding + ', ' + len + ' byte window');
+ }
+});
+
+</script>