| Index: test/elemHideEmulation.js | 
| =================================================================== | 
| --- a/test/elemHideEmulation.js | 
| +++ b/test/elemHideEmulation.js | 
| @@ -137,35 +137,42 @@ | 
| test.done(); | 
| }; | 
| exports.testDomainRestrictions = function(test) | 
| { | 
| function testSelectorMatches(description, filters, domain, expectedMatches) | 
| { | 
| - withNAD(0, elemHide => | 
| + withNAD([0, 1], (elemHide, elemHideEmulation) => | 
| { | 
| let addFilter = withNAD(0, filter => | 
| { | 
| if (filter instanceof ElemHideEmulationFilter) | 
| - ElemHideEmulation.add(filter); | 
| + elemHideEmulation.add(filter); | 
| else | 
| elemHide.add(filter); | 
| }); | 
| for (let text of filters) | 
| addFilter(Filter.fromText(text)); | 
| - let matches = ElemHideEmulation.getRulesForDomain(domain, elemHide) | 
| - .map(filter => filter.text); | 
| - test.deepEqual(matches.sort(), expectedMatches.sort(), description); | 
| + withNAD(0, rules => | 
| + { | 
| + let matches = []; | 
| + let push = withNAD(0, filter => matches.push(filter.text)); | 
| - ElemHideEmulation.clear(); | 
| - })(ElemHide.create()); | 
| + for (let i = 0; i < rules.filterCount; i++) | 
| + push(rules.filterAt(i)); | 
| + | 
| + test.deepEqual(matches.sort(), expectedMatches.sort(), description); | 
| + })(elemHideEmulation.getRulesForDomain(elemHide, domain)); | 
| + | 
| + elemHideEmulation.clear(); | 
| + })(ElemHide.create(), ElemHideEmulation.create()); | 
| } | 
| testSelectorMatches( | 
| "Ignore generic filters", | 
| [ | 
| "##[-abp-properties='foo']", "example.com##[-abp-properties='foo']", | 
| "~example.com##[-abp-properties='foo']" | 
| ], | 
| @@ -209,49 +216,54 @@ | 
| ["other.example.com##[-abp-properties='foo']"] | 
| ); | 
| test.done(); | 
| }; | 
| exports.testElemHideEmulationFiltersContainer = function(test) | 
| { | 
| - withNAD(0, elemHide => | 
| + withNAD([0, 1], (elemHide, elemHideEmulation) => | 
| { | 
| function compareRules(description, domain, expectedMatches) | 
| { | 
| - let result = ElemHideEmulation.getRulesForDomain(domain, elemHide) | 
| - .map(filter => filter.text); | 
| - expectedMatches = expectedMatches.map(filter => filter.text); | 
| - test.deepEqual(result.sort(), expectedMatches.sort(), description); | 
| + withNAD(0, rules => | 
| + { | 
| + let result = []; | 
| + for (let i = 0; i < rules.filterCount; i++) | 
| + withNAD(0, filter => result.push(filter.text))(rules.filterAt(i)); | 
| + | 
| + expectedMatches = expectedMatches.map(filter => filter.text); | 
| + test.deepEqual(result.sort(), expectedMatches.sort(), description); | 
| + })(elemHideEmulation.getRulesForDomain(elemHide, domain)); | 
| } | 
| withNAD([0, 1, 2], (domainFilter, subdomainFilter, otherDomainFilter) => | 
| { | 
| - ElemHideEmulation.add(domainFilter); | 
| - ElemHideEmulation.add(subdomainFilter); | 
| - ElemHideEmulation.add(otherDomainFilter); | 
| + elemHideEmulation.add(domainFilter); | 
| + elemHideEmulation.add(subdomainFilter); | 
| + elemHideEmulation.add(otherDomainFilter); | 
| compareRules( | 
| "Return all matching filters", | 
| "www.example.com", | 
| [domainFilter, subdomainFilter] | 
| ); | 
| - ElemHideEmulation.remove(domainFilter); | 
| + elemHideEmulation.remove(domainFilter); | 
| compareRules( | 
| "Return all matching filters after removing one", | 
| "www.example.com", | 
| [subdomainFilter] | 
| ); | 
| - ElemHideEmulation.clear(); | 
| + elemHideEmulation.clear(); | 
| compareRules( | 
| "Return no filters after clearing", | 
| "www.example.com", | 
| [] | 
| ); | 
| })(Filter.fromText("example.com##filter1"), | 
| Filter.fromText("www.example.com##filter2"), | 
| Filter.fromText("other.example.com##filter3")); | 
| - })(ElemHide.create()); | 
| + })(ElemHide.create(), ElemHideEmulation.create()); | 
| test.done(); | 
| }; |