tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');