|
| 1 | +// META: title=Encoding API: Basics |
| 2 | + |
| 3 | +test(function(){ |
| 4 | +assert_equals((newTextEncoder).encoding,'utf-8','default encoding is utf-8'); |
| 5 | +assert_equals((newTextDecoder).encoding,'utf-8','default encoding is utf-8'); |
| 6 | +},'Default encodings'); |
| 7 | + |
| 8 | +test(function(){ |
| 9 | +assert_array_equals(newTextEncoder().encode(),[],'input default should be empty string') |
| 10 | +assert_array_equals(newTextEncoder().encode(undefined),[],'input default should be empty string') |
| 11 | +},'Default inputs'); |
| 12 | + |
| 13 | + |
| 14 | +functiontestDecodeSample(encoding,string,bytes){ |
| 15 | +test(function(){ |
| 16 | +assert_equals(newTextDecoder(encoding).decode(newUint8Array(bytes)),string); |
| 17 | +assert_equals(newTextDecoder(encoding).decode(newUint8Array(bytes).buffer),string); |
| 18 | +},'Decode sample: '+encoding); |
| 19 | +} |
| 20 | + |
| 21 | +// z (ASCII U+007A), cent (Latin-1 U+00A2), CJK water (BMP U+6C34), |
| 22 | +// G-Clef (non-BMP U+1D11E), PUA (BMP U+F8FF), PUA (non-BMP U+10FFFD) |
| 23 | +// byte-swapped BOM (non-character U+FFFE) |
| 24 | +varsample='z\xA2\u6C34\uD834\uDD1E\uF8FF\uDBFF\uDFFD\uFFFE'; |
| 25 | + |
| 26 | +test(function(){ |
| 27 | +varencoding='utf-8'; |
| 28 | +varstring=sample; |
| 29 | +varbytes=[0x7A,0xC2,0xA2,0xE6,0xB0,0xB4,0xF0,0x9D,0x84,0x9E,0xEF,0xA3,0xBF,0xF4,0x8F,0xBF,0xBD,0xEF,0xBF,0xBE]; |
| 30 | +varencoded=newTextEncoder().encode(string); |
| 31 | +assert_array_equals([].slice.call(encoded),bytes); |
| 32 | +assert_equals(newTextDecoder(encoding).decode(newUint8Array(bytes)),string); |
| 33 | +assert_equals(newTextDecoder(encoding).decode(newUint8Array(bytes).buffer),string); |
| 34 | +},'Encode/decode round trip: utf-8'); |
| 35 | + |
| 36 | +testDecodeSample( |
| 37 | +'utf-16le', |
| 38 | +sample, |
| 39 | +[0x7A,0x00,0xA2,0x00,0x34,0x6C,0x34,0xD8,0x1E,0xDD,0xFF,0xF8,0xFF,0xDB,0xFD,0xDF,0xFE,0xFF] |
| 40 | +); |
| 41 | + |
| 42 | +testDecodeSample( |
| 43 | +'utf-16be', |
| 44 | +sample, |
| 45 | +[0x00,0x7A,0x00,0xA2,0x6C,0x34,0xD8,0x34,0xDD,0x1E,0xF8,0xFF,0xDB,0xFF,0xDF,0xFD,0xFF,0xFE] |
| 46 | +); |
| 47 | + |
| 48 | +testDecodeSample( |
| 49 | +'utf-16', |
| 50 | +sample, |
| 51 | +[0x7A,0x00,0xA2,0x00,0x34,0x6C,0x34,0xD8,0x1E,0xDD,0xFF,0xF8,0xFF,0xDB,0xFD,0xDF,0xFE,0xFF] |
| 52 | +); |
0 commit comments