| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <title>Encoding API: Streaming decode</title> | 2 <title>Encoding API: Streaming decode</title> |
| 3 <script src="/resources/testharness.js"></script> | 3 <script src="/resources/testharness.js"></script> |
| 4 <script src="/resources/testharnessreport.js"></script> | 4 <script src="/resources/testharnessreport.js"></script> |
| 5 <script src="resources/encodings.js"></script> | 5 <script src="resources/encodings.js"></script> |
| 6 <script> | 6 <script> |
| 7 | 7 |
| 8 var string = '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF'; | 8 var string = '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF'; |
| 9 var octets = { | 9 var octets = { |
| 10 'utf-8': [0x00,0x31,0x32,0x33,0x41,0x42,0x43,0x61,0x62,0x63,0xc2,0x80, |
| 11 0xc3,0xbf,0xc4,0x80,0xe1,0x80,0x80,0xef,0xbf,0xbd,0xf0,0x90, |
| 12 0x80,0x80,0xf4,0x8f,0xbf,0xbf], |
| 10 'utf-16le': [0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42,0x00, | 13 'utf-16le': [0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42,0x00, |
| 11 0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF,0x00, | 14 0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF,0x00, |
| 12 0x00,0x01,0x00,0x10,0xFD,0xFF,0x00,0xD8,0x00,0xDC,0xFF,0xDB, | 15 0x00,0x01,0x00,0x10,0xFD,0xFF,0x00,0xD8,0x00,0xDC,0xFF,0xDB, |
| 13 0xFF,0xDF], | 16 0xFF,0xDF], |
| 14 'utf-16be': [0x00,0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42, | 17 'utf-16be': [0x00,0x00,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x41,0x00,0x42, |
| 15 0x00,0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF, | 18 0x00,0x43,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x80,0x00,0xFF, |
| 16 0x01,0x00,0x10,0x00,0xFF,0xFD,0xD8,0x00,0xDC,0x00,0xDB,0xFF, | 19 0x01,0x00,0x10,0x00,0xFF,0xFD,0xD8,0x00,0xDC,0x00,0xDB,0xFF, |
| 17 0xDF,0xFF] | 20 0xDF,0xFF] |
| 18 }; | 21 }; |
| 19 | 22 |
| 20 utf_encodings.forEach(function (encoding) { | 23 Object.keys(octets).forEach(function(encoding) { |
| 21 for (var len = 1; len <= 5; ++len) { | 24 for (var len = 1; len <= 5; ++len) { |
| 22 test(function() { | 25 test(function() { |
| 23 var encoded = octets[encoding] || | 26 var encoded = octets[encoding]; |
| 24 new TextEncoder(encoding).encode(string); | |
| 25 | 27 |
| 26 var out = ''; | 28 var out = ''; |
| 27 var decoder = new TextDecoder(encoding); | 29 var decoder = new TextDecoder(encoding); |
| 28 for (var i = 0; i < encoded.length; i += len) { | 30 for (var i = 0; i < encoded.length; i += len) { |
| 29 var sub = []; | 31 var sub = []; |
| 30 for (var j = i; j < encoded.length && j < i + len; ++j) | 32 for (var j = i; j < encoded.length && j < i + len; ++j) |
| 31 sub.push(encoded[j]); | 33 sub.push(encoded[j]); |
| 32 out += decoder.decode(new Uint8Array(sub), {stream: true}); | 34 out += decoder.decode(new Uint8Array(sub), {stream: true}); |
| 33 } | 35 } |
| 34 out += decoder.decode(); | 36 out += decoder.decode(); |
| 35 assert_equals(out, string); | 37 assert_equals(out, string); |
| 36 }, 'Streaming decode: ' + encoding + ', ' + len + ' byte window'); | 38 }, 'Streaming decode: ' + encoding + ', ' + len + ' byte window'); |
| 37 } | 39 } |
| 38 }); | 40 }); |
| 39 | 41 |
| 40 </script> | 42 </script> |
| OLD | NEW |