| Index: test/filterClasses.js |
| =================================================================== |
| --- a/test/filterClasses.js |
| +++ b/test/filterClasses.js |
| @@ -43,42 +43,44 @@ |
| } = sandboxedRequire("../lib/filterClasses") |
| ); |
| ({FilterNotifier} = sandboxedRequire("../lib/filterNotifier")); |
| callback(); |
| }; |
| exports.testFromText = function(test) |
| { |
| + // fields are: |
| + // text, type, typeName, collapse (optional, BlockingFilter only) |
| let tests = [ |
| ["!asdf", CommentFilter, "comment"], |
| - ["asdf", BlockingFilter, "blocking"], |
| - ["asdf$image,~collapse", BlockingFilter, "blocking"], |
| - ["/asdf/", BlockingFilter, "blocking"], |
| + ["asdf", BlockingFilter, "blocking", 1], |
| + ["asdf$image,~collapse", BlockingFilter, "blocking", 0], |
| + ["/asdf/", BlockingFilter, "blocking", 1], |
| ["/asdf??+/", InvalidFilter, "invalid"], |
| ["@@asdf", WhitelistFilter, "whitelist"], |
| ["@@asdf$image,~collapse", WhitelistFilter, "whitelist"], |
| ["@@/asdf/", WhitelistFilter, "whitelist"], |
| ["@@/asdf??+/", InvalidFilter, "invalid"], |
| ["##asdf", ElemHideFilter, "elemhide"], |
| ["#@#asdf", ElemHideException, "elemhideexception"], |
| ["foobar##asdf", ElemHideFilter, "elemhide"], |
| ["foobar#@#asdf", ElemHideException, "elemhideexception"], |
| ["foobar##a", ElemHideFilter, "elemhide"], |
| ["foobar#@#a", ElemHideException, "elemhideexception"], |
| - ["foobar#asdf", BlockingFilter, "blocking"], |
| - ["foobar|foobas##asdf", BlockingFilter, "blocking"], |
| + ["foobar#asdf", BlockingFilter, "blocking", 1], |
| + ["foobar|foobas##asdf", BlockingFilter, "blocking", 1], |
| ["foobar##asdf{asdf}", ElemHideFilter, "elemhide"], |
| - ["foobar##", BlockingFilter, "blocking"], |
| - ["foobar#@#", BlockingFilter, "blocking"], |
| + ["foobar##", BlockingFilter, "blocking", 1], |
| + ["foobar#@#", BlockingFilter, "blocking", 1], |
| ["asdf$foobar", InvalidFilter, "invalid"], |
| ["asdf$image,foobar", InvalidFilter, "invalid"], |
| - ["asdf$image=foobar", BlockingFilter, "blocking"], |
| - ["asdf$image=foobar=xyz,~collapse", BlockingFilter, "blocking"], |
| + ["asdf$image=foobar", BlockingFilter, "blocking", 1], |
| + ["asdf$image=foobar=xyz,~collapse", BlockingFilter, "blocking", 0], |
| ["##foo[-abp-properties='something']bar", InvalidFilter, "invalid"], |
| ["#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexception"], |
| ["example.com##foo[-abp-properties='something']bar", ElemHideEmulationFilter, "elemhideemulation"], |
| ["example.com#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexception"], |
| ["~example.com##foo[-abp-properties='something']bar", InvalidFilter, "invalid"], |
| ["~example.com#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexception"], |
| ["~example.com,~example.info##foo[-abp-properties='something']bar", InvalidFilter, "invalid"], |
| @@ -89,23 +91,27 @@ |
| ["example.com,~sub.example.com#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexception"], |
| ["example.com##[-abp-properties='something']", ElemHideEmulationFilter, "elemhideemulation"], |
| ["example.com#@#[-abp-properties='something']", ElemHideException, "elemhideexception"], |
| ["example.com##[-abp-properties=\"something\"]", ElemHideEmulationFilter, "elemhideemulation"], |
| ["example.com#@#[-abp-properties=\"something\"]", ElemHideException, "elemhideexception"], |
| ["example.com##[-abp-properties=(something)]", ElemHideEmulationFilter, "elemhideemulation"], |
| ["example.com#@#[-abp-properties=(something)]", ElemHideException, "elemhideexception"] |
| ]; |
| - for (let [text, type, typeName] of tests) |
| + for (let [text, type, typeName, collapse] of tests) |
| { |
| let filter = Filter.fromText(text); |
| test.ok(filter instanceof Filter, "Got filter for " + text); |
| test.equal(filter.text, text, "Correct filter text for " + text); |
| test.ok(filter instanceof type, "Correct filter type for " + text); |
| test.equal(filter.type, typeName, "Type name for " + text + " is " + typeName); |
| + if (filter instanceof BlockingFilter) |
| + test.equal(filter.collapse, collapse); |
| + else |
| + test.equal(filter.collapse, undefined); |
| if (type == InvalidFilter) |
| test.ok(filter.reason, "Invalid filter " + text + " has a reason set"); |
| filter.delete(); |
| } |
| test.done(); |
| }; |
| exports.testClassHierarchy = function(test) |
| @@ -230,27 +236,29 @@ |
| test.done(); |
| }; |
| exports.testSerialize = function(test) |
| { |
| // Comment |
| let filter = Filter.fromText("! serialize"); |
| test.equal(filter.serialize(), "[Filter]\ntext=! serialize\n"); |
| + test.equal(filter.collapse, undefined); |
| filter.delete(); |
| // Blocking filter |
| filter = Filter.fromText("serialize"); |
| test.equal(filter.serialize(), "[Filter]\ntext=serialize\n"); |
| filter.disabled = true; |
| test.equal(filter.serialize(), "[Filter]\ntext=serialize\ndisabled=true\n"); |
| filter.disabled = false; |
| filter.hitCount = 10; |
| filter.lastHit = 12; |
| test.equal(filter.serialize(), "[Filter]\ntext=serialize\nhitCount=10\nlastHit=12\n"); |
| + test.ok(filter.collapse); |
| filter.delete(); |
| // Invalid filter |
| filter = Filter.fromText("serialize$foobar"); |
| test.equal(filter.serialize(), "[Filter]\ntext=serialize$foobar\n"); |
| filter.delete(); |
| // Element hiding filter |