tor-browser

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

surrogate-pair-split.js (1589B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Intl')||!this.Intl.Segmenter)
      2 
      3 // Calling %Segments.prototype%.containing in the middle of a surrogate pair
      4 // doubles back to the lead surrogate.
      5 
      6 // Grapheme
      7 {
      8  let segmenter = new Intl.Segmenter(undefined, {granularity: "grapheme"});
      9 
     10  let string = "\u{1F925}";
     11  let segments = segmenter.segment(string);
     12 
     13  let data1 = segments.containing(0);
     14  let data2 = segments.containing(1);
     15  let data3 = segments.containing(2);
     16 
     17  assertEq(data1.segment, string);
     18  assertDeepEq(data1, data2);
     19  assertEq(data3, undefined);
     20 }
     21 
     22 // Word
     23 {
     24  let segmenter = new Intl.Segmenter(undefined, {granularity: "word"});
     25 
     26  let prefix = "Nothing to see here! ";
     27  let string = "\u{1F925}";
     28  let segments = segmenter.segment(prefix + string);
     29 
     30  let data1 = segments.containing(prefix.length + 0);
     31  let data2 = segments.containing(prefix.length + 1);
     32  let data3 = segments.containing(prefix.length + 2);
     33 
     34  assertEq(data1.segment, string);
     35  assertDeepEq(data1, data2);
     36  assertEq(data3, undefined);
     37 }
     38 
     39 // Sentence
     40 {
     41  let segmenter = new Intl.Segmenter(undefined, {granularity: "sentence"});
     42 
     43  let prefix = "Nothing to see here! Please disperse. ";
     44  let string = "\u{1F925}";
     45  let segments = segmenter.segment(prefix + string);
     46 
     47  let data1 = segments.containing(prefix.length + 0);
     48  let data2 = segments.containing(prefix.length + 1);
     49  let data3 = segments.containing(prefix.length + 2);
     50 
     51  assertEq(data1.segment, string);
     52  assertDeepEq(data1, data2);
     53  assertEq(data3, undefined);
     54 }
     55 
     56 if (typeof reportCompare === "function")
     57  reportCompare(0, 0);