tor-browser

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

HighlightRegistry-maplike.html (5887B)


      1 <!doctype html>
      2 <title>HighlightRegistry has a maplike interface</title>
      3 <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script>
      7  'use strict';
      8 
      9  test(() => {
     10    assert_not_equals(window.HighlightRegistry, undefined, 'HighlightRegistry is in window');
     11    assert_equals(typeof HighlightRegistry, 'function', 'HighlightRegistry is a function');
     12    assert_throws_js(TypeError, function () { var x = new HighlightRegistry(); },
     13      'HighlightRegistry constructor throws');
     14 
     15    assert_not_equals(CSS.highlights, undefined, 'CSS.highlights exists');
     16    assert_equals(CSS.highlights.__proto__, window.HighlightRegistry.prototype,
     17      'CSS.highlights and window.HighlightRegistry have same prototype');
     18 
     19    assert_equals(CSS.highlights.size, 0, 'HighlightRegistry starts empty');
     20  }, 'HighlightRegistry initializes as it should.');
     21 
     22  test(() => {
     23    let name1 = "example1";
     24    let name2 = "example2";
     25    let h1 = new Highlight();
     26    let h2 = new Highlight();
     27 
     28    assert_false(CSS.highlights.has(name1), 'HighlightRegistry.has returns false when it doesn\'t have the key which is called with as argument.');
     29    CSS.highlights.set(name1, h1);
     30    assert_true(CSS.highlights.has(name1), 'HighlightRegistry.has returns true when it has the key which is called with as argument.');
     31    assert_equals(CSS.highlights.size, 1, 'HighlightRegistry.size is 1 after only inserting 1 key.');
     32 
     33    assert_false(CSS.highlights.delete(name2), 'HighlightRegistry.delete returns false when trying to delete an key that is not in the map.');
     34    assert_equals(CSS.highlights.size, 1, 'HighlightRegistry.size stays the same after trying to delete a non-existing key.');
     35 
     36    CSS.highlights.set(name2, h2);
     37    assert_true(CSS.highlights.has(name1), 'HighlightRegistry.has returns true when it is called with the key inserted first');
     38    assert_true(CSS.highlights.has(name2), 'HighlightRegistry.has returns true when it is called with the key inserted second');
     39    assert_equals(CSS.highlights.get(name1), h1, 'HighlightRegistry.get returns the first Highlight when it is called with the key inserted first');
     40    assert_equals(CSS.highlights.get(name2), h2, 'HighlightRegistry.get returns the second Highlight when it is called with the key inserted second');
     41    assert_equals(CSS.highlights.size, 2, 'HighlightRegistry.size is 2 after only inserting two different keys.');
     42 
     43    assert_true(CSS.highlights.delete(name2), 'HighlightRegistry.delete returns true when trying to delete a key that is in the group.');
     44    assert_true(CSS.highlights.has(name1), 'HighlightRegistry.has returns true when it is called with the key inserted first');
     45    assert_false(CSS.highlights.has(name2), 'HighlightRegistry.has returns true when it is called with the key that was deleted');
     46    assert_equals(CSS.highlights.get(name1), h1, 'HighlightRegistry.get still returns the first Highlight when it is called with the key inserted first');
     47    assert_equals(CSS.highlights.get(name2), undefined, 'HighlightRegistry.get returns undefined when it is called with a key that was deleted');
     48    assert_equals(CSS.highlights.size, 1, 'HighlightRegistry.size decreases in 1 after deleting an existing key.');
     49 
     50    assert_false(CSS.highlights.delete(name2), 'HighlightRegistry.delete returns false when trying to delete a key that was already deleted.');
     51    assert_true(CSS.highlights.has(name1), 'HighlightRegistry.has returns true when it is called with the key inserted first');
     52    assert_false(CSS.highlights.has(name2), 'HighlightRegistry.has returns false when it is called with a key that was deleted twice');
     53    assert_equals(CSS.highlights.get(name1), h1, 'HighlightRegistry.get still returns the first Highlight when it is called with the key inserted first');
     54    assert_equals(CSS.highlights.get(name2), undefined, 'HighlightRegistry.get still returns undefined when it is called with a key that was deleted');
     55    assert_equals(CSS.highlights.size, 1, 'HighlightRegistry.size stays the same after trying to delete the same key for a second time.');
     56 
     57    assert_true(CSS.highlights.delete(name1), 'HighlightRegistry.delete returns true when trying to delete the remaining key');
     58    assert_false(CSS.highlights.has(name1), 'HighlightRegistry.has returns false when it is called with the key inserted first and then deleted');
     59    assert_false(CSS.highlights.has(name2), 'HighlightRegistry.has returns false when it is called with the key inserted second and then deleted');
     60    assert_equals(CSS.highlights.get(name1), undefined, 'HighlightRegistry.get returns undefined when it is called with a key that was deleted');
     61    assert_equals(CSS.highlights.get(name2), undefined, 'HighlightRegistry.get returns undefined when it is called with a key that was deleted');
     62    assert_equals(CSS.highlights.size, 0, 'HighlightRegistry.size decreases in 1 after deleting an existing key.');
     63 
     64    CSS.highlights.set(name1, h1);
     65    CSS.highlights.set(name1, h2);
     66    assert_equals(CSS.highlights.size, 1, 'HighlightRegistry.size keeps the same after an insertion of a Highlight with an existing name');
     67    assert_equals(CSS.highlights.get(name1), h2, 'The Highlight inserted with the same name as an existing one was effectively inserted into the registry');
     68 
     69    CSS.highlights.clear();
     70    assert_equals(CSS.highlights.size, 0, 'HighlightRegistry.clear empties the map.');
     71    CSS.highlights.clear();
     72    assert_equals(CSS.highlights.size, 0, 'HighlightRegistry.clear called with an empty registry keeps it empty.');
     73 
     74    CSS.highlights.set(name1, h1).set(name2, h2);
     75    assert_equals(CSS.highlights.size, 2, 'HighlightRegistry.size is 2 after inserting two different Highlights by chaining the set method.');
     76  }, 'HighlightRegistry has a maplike interface.');
     77 
     78 </script>