| Index: test/elemHideEmulation.js |
| =================================================================== |
| --- a/test/elemHideEmulation.js |
| +++ b/test/elemHideEmulation.js |
| @@ -32,35 +32,121 @@ |
| ElemHideEmulationFilter} = sandboxedRequire("../lib/filterClasses"), |
| {ElemHideEmulation} = sandboxedRequire("../lib/elemHideEmulation"), |
| {ElemHide} = sandboxedRequire("../lib/elemHide") |
| ); |
| callback(); |
| }; |
| +exports.testElemHideAPI = function(test) |
| +{ |
| + let elemHide = ElemHide.create(); |
| + |
| + { |
| + 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(); |
| + |
| + elemHide.delete(); |
| + test.done(); |
| +}; |
| + |
| exports.testDomainRestrictions = function(test) |
| { |
| function testSelectorMatches(description, filters, domain, expectedMatches) |
| { |
| - for (let filter of filters) |
| + let elemHide = ElemHide.create(); |
| + |
| + 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); |
| + elemHide.add(filter); |
| + filter.delete(); |
| } |
| - |
| - let matches = ElemHideEmulation.getRulesForDomain(domain) |
| + let matches = ElemHideEmulation.getRulesForDomain(domain, elemHide) |
| .map(filter => filter.text); |
| test.deepEqual(matches.sort(), expectedMatches.sort(), description); |
| ElemHideEmulation.clear(); |
| - ElemHide.clear(); |
| + |
| + elemHide.delete(); |
| } |
| testSelectorMatches( |
| "Ignore generic filters", |
| [ |
| "##[-abp-properties='foo']", "example.com##[-abp-properties='foo']", |
| "~example.com##[-abp-properties='foo']" |
| ], |
| @@ -104,19 +190,21 @@ |
| ["other.example.com##[-abp-properties='foo']"] |
| ); |
| test.done(); |
| }; |
| exports.testElemHideEmulationFiltersContainer = function(test) |
| { |
| + let elemHide = ElemHide.create(); |
| + |
| function compareRules(description, domain, expectedMatches) |
| { |
| - let result = ElemHideEmulation.getRulesForDomain(domain) |
| + let result = ElemHideEmulation.getRulesForDomain(domain, elemHide) |
| .map(filter => filter.text); |
| expectedMatches = expectedMatches.map(filter => filter.text); |
| test.deepEqual(result.sort(), expectedMatches.sort(), description); |
| } |
| let domainFilter = Filter.fromText("example.com##filter1"); |
| let subdomainFilter = Filter.fromText("www.example.com##filter2"); |
| let otherDomainFilter = Filter.fromText("other.example.com##filter3"); |
| @@ -139,10 +227,12 @@ |
| ElemHideEmulation.clear(); |
| compareRules( |
| "Return no filters after clearing", |
| "www.example.com", |
| [] |
| ); |
| + elemHide.delete(); |
| + |
| test.done(); |
| }; |