| Index: test/elemHideEmulation.js | 
| =================================================================== | 
| --- a/test/elemHideEmulation.js | 
| +++ b/test/elemHideEmulation.js | 
| @@ -32,29 +32,109 @@ | 
| ElemHideEmulationFilter} = sandboxedRequire("../lib/filterClasses"), | 
| {ElemHideEmulation} = sandboxedRequire("../lib/elemHideEmulation"), | 
| {ElemHide} = sandboxedRequire("../lib/elemHide") | 
| ); | 
|  | 
| callback(); | 
| }; | 
|  | 
| +exports.testElemHideAPI = function(test) | 
| +{ | 
| +  { | 
| +    let filter = Filter.fromText("###ads"); | 
| +    ElemHide.add(filter); | 
| + | 
| +    test.equal(filter.selectorDomain, ""); | 
| +    let unconditionals = ElemHide.getUnconditionalSelectors(); | 
| +    test.equal(unconditionals.selectorCount, 1); | 
| +    test.equal(unconditionals.selectorAt(0), "#ads"); | 
| +    test.equal(unconditionals.filterKeyAt(0), "###ads"); | 
| +    filter.delete(); | 
| +    unconditionals.delete(); | 
| +  } | 
| + | 
| +  { | 
| +    let filter2 = Filter.fromText("example.com##.foo"); | 
| +    ElemHide.add(filter2); | 
| +    test.equal(filter2.selectorDomain, "example.com"); | 
| +    filter2.delete(); | 
| +  } | 
| + | 
| +  let unconditionals = ElemHide.getUnconditionalSelectors(); | 
| +  test.equal(unconditionals.selectorCount, 1); | 
| +  unconditionals.delete(); | 
| + | 
| +  let selectors = ElemHide.getSelectorsForDomain("example.com", 1); | 
| +  test.equal(selectors.selectorCount, 1); | 
| +  test.equal(selectors.selectorAt(0), ".foo"); | 
| +  test.equal(selectors.filterKeyAt(0), "example.com##.foo"); | 
| +  selectors.delete(); | 
| + | 
| +  selectors = ElemHide.getSelectorsForDomain("example.com", 0); | 
| +  test.equal(selectors.selectorCount, 2); | 
| +  test.equal(selectors.selectorAt(0), "#ads"); | 
| +  test.equal(selectors.filterKeyAt(0), "###ads"); | 
| +  test.equal(selectors.selectorAt(1), ".foo"); | 
| +  test.equal(selectors.filterKeyAt(1), "example.com##.foo"); | 
| +  selectors.delete(); | 
| + | 
| +  let filter3 = Filter.fromText("example.com##.message"); | 
| +  ElemHide.add(filter3); | 
| +  selectors = ElemHide.getSelectorsForDomain("example.com", 0); | 
| +  test.equal(selectors.selectorCount, 3); | 
| +  selectors.delete(); | 
| +  selectors = ElemHide.getSelectorsForDomain("mail.example.com", 0); | 
| +  test.equal(selectors.selectorCount, 3); | 
| +  selectors.delete(); | 
| + | 
| +  let filter4 = Filter.fromText("mail.example.com#@#.message"); | 
| +  ElemHide.add(filter4); | 
| +  selectors = ElemHide.getSelectorsForDomain("example.com", 0); | 
| +  test.equal(selectors.selectorCount, 3); | 
| +  selectors.delete(); | 
| +  selectors = ElemHide.getSelectorsForDomain("mail.example.com", 0); | 
| +  test.equal(selectors.selectorCount, 2); | 
| +  selectors.delete(); | 
| + | 
| +  unconditionals = ElemHide.getUnconditionalSelectors(); | 
| +  test.equal(unconditionals.selectorCount, 1); | 
| +  unconditionals.delete(); | 
| + | 
| +  ElemHide.remove(filter4); | 
| +  filter4.delete(); | 
| +  selectors = ElemHide.getSelectorsForDomain("example.com", 0); | 
| +  test.equal(selectors.selectorCount, 3); | 
| +  selectors.delete(); | 
| +  selectors = ElemHide.getSelectorsForDomain("mail.example.com", 0); | 
| +  test.equal(selectors.selectorCount, 3); | 
| +  selectors.delete(); | 
| + | 
| +  ElemHide.remove(filter3); | 
| +  filter3.delete(); | 
| +  selectors = ElemHide.getSelectorsForDomain("example.com", 0); | 
| +  test.equal(selectors.selectorCount, 2); | 
| +  selectors.delete(); | 
| + | 
| +  test.done(); | 
| +}; | 
| + | 
| exports.testDomainRestrictions = function(test) | 
| { | 
| function testSelectorMatches(description, filters, domain, expectedMatches) | 
| { | 
| -    for (let filter of filters) | 
| +    for (let text of filters) | 
| { | 
| -      filter = Filter.fromText(filter); | 
| +      let filter = Filter.fromText(text); | 
| if (filter instanceof ElemHideEmulationFilter) | 
| ElemHideEmulation.add(filter); | 
| else | 
| ElemHide.add(filter); | 
| +      filter.delete(); | 
| } | 
| - | 
| let matches = ElemHideEmulation.getRulesForDomain(domain) | 
| .map(filter => filter.text); | 
| test.deepEqual(matches.sort(), expectedMatches.sort(), description); | 
|  | 
| ElemHideEmulation.clear(); | 
| ElemHide.clear(); | 
| } | 
|  | 
|  |