textencoder-utf16-surrogates.any.js (1229B)
1 // META: global=window,dedicatedworker,shadowrealm 2 // META: title=Encoding API: USVString surrogate handling when encoding 3 4 var bad = [ 5 { 6 input: '\uD800', 7 expected: '\uFFFD', 8 name: 'lone surrogate lead' 9 }, 10 { 11 input: '\uDC00', 12 expected: '\uFFFD', 13 name: 'lone surrogate trail' 14 }, 15 { 16 input: '\uD800\u0000', 17 expected: '\uFFFD\u0000', 18 name: 'unmatched surrogate lead' 19 }, 20 { 21 input: '\uDC00\u0000', 22 expected: '\uFFFD\u0000', 23 name: 'unmatched surrogate trail' 24 }, 25 { 26 input: '\uDC00\uD800', 27 expected: '\uFFFD\uFFFD', 28 name: 'swapped surrogate pair' 29 }, 30 { 31 input: '\uD834\uDD1E', 32 expected: '\uD834\uDD1E', 33 name: 'properly encoded MUSICAL SYMBOL G CLEF (U+1D11E)' 34 } 35 ]; 36 37 bad.forEach(function(t) { 38 test(function() { 39 var encoded = new TextEncoder().encode(t.input); 40 var decoded = new TextDecoder().decode(encoded); 41 assert_equals(decoded, t.expected); 42 }, 'USVString handling: ' + t.name); 43 }); 44 45 test(function() { 46 assert_equals(new TextEncoder().encode().length, 0, 'Should default to empty string'); 47 }, 'USVString default');