Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/filterClasses.js

Issue 29383799: Issue 4988 - [emscripten] Adjust API for Element Hiding Emulation filters (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: Created March 14, 2017, 2:42 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« compiled/RegExpFilter.cpp ('K') | « lib/filterClassesNew.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 11 matching lines...) Expand all
22 let Filter = null; 22 let Filter = null;
23 let InvalidFilter = null; 23 let InvalidFilter = null;
24 let CommentFilter = null; 24 let CommentFilter = null;
25 let ActiveFilter = null; 25 let ActiveFilter = null;
26 let RegExpFilter = null; 26 let RegExpFilter = null;
27 let BlockingFilter = null; 27 let BlockingFilter = null;
28 let WhitelistFilter = null; 28 let WhitelistFilter = null;
29 let ElemHideBase = null; 29 let ElemHideBase = null;
30 let ElemHideFilter = null; 30 let ElemHideFilter = null;
31 let ElemHideException = null; 31 let ElemHideException = null;
32 let CSSPropertyFilter = null; 32 let ElemHideEmulationFilter = null;
33 33
34 exports.setUp = function(callback) 34 exports.setUp = function(callback)
35 { 35 {
36 let sandboxedRequire = createSandbox(); 36 let sandboxedRequire = createSandbox();
37 ( 37 (
38 { 38 {
39 Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, 39 Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter,
40 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, 40 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter,
41 ElemHideException, CSSPropertyFilter 41 ElemHideException, ElemHideEmulationFilter
42 } = sandboxedRequire("../lib/filterClassesNew") 42 } = sandboxedRequire("../lib/filterClassesNew")
43 ); 43 );
44 callback(); 44 callback();
45 }; 45 };
46 46
47 exports.testFromText = function(test) 47 exports.testFromText = function(test)
48 { 48 {
49 let tests = [ 49 let tests = [
50 ["!asdf", CommentFilter, "comment"], 50 ["!asdf", CommentFilter, "comment"],
51 ["asdf", BlockingFilter, "blocking"], 51 ["asdf", BlockingFilter, "blocking"],
(...skipping 16 matching lines...) Expand all
68 ["foobar##asdf{asdf}", BlockingFilter, "blocking"], 68 ["foobar##asdf{asdf}", BlockingFilter, "blocking"],
69 ["foobar##", BlockingFilter, "blocking"], 69 ["foobar##", BlockingFilter, "blocking"],
70 ["foobar#@#", BlockingFilter, "blocking"], 70 ["foobar#@#", BlockingFilter, "blocking"],
71 ["asdf$foobar", InvalidFilter, "invalid"], 71 ["asdf$foobar", InvalidFilter, "invalid"],
72 ["asdf$image,foobar", InvalidFilter, "invalid"], 72 ["asdf$image,foobar", InvalidFilter, "invalid"],
73 ["asdf$image=foobar", BlockingFilter, "blocking"], 73 ["asdf$image=foobar", BlockingFilter, "blocking"],
74 ["asdf$image=foobar=xyz,~collapse", BlockingFilter, "blocking"], 74 ["asdf$image=foobar=xyz,~collapse", BlockingFilter, "blocking"],
75 75
76 ["##foo[-abp-properties='something']bar", InvalidFilter, "invalid"], 76 ["##foo[-abp-properties='something']bar", InvalidFilter, "invalid"],
77 ["#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexcep tion"], 77 ["#@#foo[-abp-properties='something']bar", ElemHideException, "elemhideexcep tion"],
78 ["example.com##foo[-abp-properties='something']bar", CSSPropertyFilter, "css property"], 78 ["example.com##foo[-abp-properties='something']bar", ElemHideEmulationFilter , "elemhideemulation"],
79 ["example.com#@#foo[-abp-properties='something']bar", ElemHideException, "el emhideexception"], 79 ["example.com#@#foo[-abp-properties='something']bar", ElemHideException, "el emhideexception"],
80 ["~example.com##foo[-abp-properties='something']bar", InvalidFilter, "invali d"], 80 ["~example.com##foo[-abp-properties='something']bar", InvalidFilter, "invali d"],
81 ["~example.com#@#foo[-abp-properties='something']bar", ElemHideException, "e lemhideexception"], 81 ["~example.com#@#foo[-abp-properties='something']bar", ElemHideException, "e lemhideexception"],
82 ["~example.com,~example.info##foo[-abp-properties='something']bar", InvalidF ilter, "invalid"], 82 ["~example.com,~example.info##foo[-abp-properties='something']bar", InvalidF ilter, "invalid"],
83 ["~example.com,~example.info#@#foo[-abp-properties='something']bar", ElemHid eException, "elemhideexception"], 83 ["~example.com,~example.info#@#foo[-abp-properties='something']bar", ElemHid eException, "elemhideexception"],
84 ["~sub.example.com,example.com##foo[-abp-properties='something']bar", CSSPro pertyFilter, "cssproperty"], 84 ["~sub.example.com,example.com##foo[-abp-properties='something']bar", ElemHi deEmulationFilter, "elemhideemulation"],
85 ["~sub.example.com,example.com#@#foo[-abp-properties='something']bar", ElemH ideException, "elemhideexception"], 85 ["~sub.example.com,example.com#@#foo[-abp-properties='something']bar", ElemH ideException, "elemhideexception"],
86 ["example.com,~sub.example.com##foo[-abp-properties='something']bar", CSSPro pertyFilter, "cssproperty"], 86 ["example.com,~sub.example.com##foo[-abp-properties='something']bar", ElemHi deEmulationFilter, "elemhideemulation"],
87 ["example.com,~sub.example.com#@#foo[-abp-properties='something']bar", ElemH ideException, "elemhideexception"], 87 ["example.com,~sub.example.com#@#foo[-abp-properties='something']bar", ElemH ideException, "elemhideexception"],
88 ["example.com##[-abp-properties='something']", CSSPropertyFilter, "cssproper ty"], 88 ["example.com##[-abp-properties='something']", ElemHideEmulationFilter, "ele mhideemulation"],
89 ["example.com#@#[-abp-properties='something']", ElemHideException, "elemhide exception"], 89 ["example.com#@#[-abp-properties='something']", ElemHideException, "elemhide exception"],
90 ["example.com##[-abp-properties=\"something\"]", CSSPropertyFilter, "cssprop erty"], 90 ["example.com##[-abp-properties=\"something\"]", ElemHideEmulationFilter, "e lemhideemulation"],
91 ["example.com#@#[-abp-properties=\"something\"]", ElemHideException, "elemhi deexception"], 91 ["example.com#@#[-abp-properties=\"something\"]", ElemHideException, "elemhi deexception"],
92 ["example.com##[-abp-properties=(something)]", ElemHideFilter, "elemhide"], 92 ["example.com##[-abp-properties=(something)]", ElemHideEmulationFilter, "ele mhideemulation"],
93 ["example.com#@#[-abp-properties=(something)]", ElemHideException, "elemhide exception"], 93 ["example.com#@#[-abp-properties=(something)]", ElemHideException, "elemhide exception"],
94 ]; 94 ];
95 for (let [text, type, typeName, location] of tests) 95 for (let [text, type, typeName, location] of tests)
96 { 96 {
97 let filter = Filter.fromText(text); 97 let filter = Filter.fromText(text);
98 test.ok(filter instanceof Filter, "Got filter for " + text); 98 test.ok(filter instanceof Filter, "Got filter for " + text);
99 test.equal(filter.text, text, "Correct filter text for " + text); 99 test.equal(filter.text, text, "Correct filter text for " + text);
100 test.ok(filter instanceof type, "Correct filter type for " + text); 100 test.ok(filter instanceof type, "Correct filter type for " + text);
101 test.equal(filter.type, typeName, "Type name for " + text + " is " + typeNam e); 101 test.equal(filter.type, typeName, "Type name for " + text + " is " + typeNam e);
102 if (type == InvalidFilter) 102 if (type == InvalidFilter)
103 test.ok(filter.reason, "Invalid filter " + text + " has a reason set"); 103 test.ok(filter.reason, "Invalid filter " + text + " has a reason set");
104 filter.delete(); 104 filter.delete();
105 } 105 }
106 test.done(); 106 test.done();
107 }; 107 };
108 108
109 exports.testClassHierarchy = function(test) 109 exports.testClassHierarchy = function(test)
110 { 110 {
111 let allClasses = ["Filter", "InvalidFilter", "CommentFilter", "ActiveFilter", 111 let allClasses = ["Filter", "InvalidFilter", "CommentFilter", "ActiveFilter",
112 "RegExpFilter", "BlockingFilter", "WhitelistFilter", "ElemHideBase", 112 "RegExpFilter", "BlockingFilter", "WhitelistFilter", "ElemHideBase",
113 "ElemHideFilter", "ElemHideException", "CSSPropertyFilter"]; 113 "ElemHideFilter", "ElemHideException", "ElemHideEmulationFilter"];
114 let tests = [ 114 let tests = [
115 ["/asdf??+/", "Filter", "InvalidFilter"], 115 ["/asdf??+/", "Filter", "InvalidFilter"],
116 ["!asdf", "Filter", "CommentFilter"], 116 ["!asdf", "Filter", "CommentFilter"],
117 ["asdf", "Filter", "ActiveFilter", "RegExpFilter", "BlockingFilter"], 117 ["asdf", "Filter", "ActiveFilter", "RegExpFilter", "BlockingFilter"],
118 ["@@asdf", "Filter", "ActiveFilter", "RegExpFilter", "WhitelistFilter"], 118 ["@@asdf", "Filter", "ActiveFilter", "RegExpFilter", "WhitelistFilter"],
119 ["##asdf", "Filter", "ActiveFilter", "ElemHideBase", "ElemHideFilter"], 119 ["##asdf", "Filter", "ActiveFilter", "ElemHideBase", "ElemHideFilter"],
120 ["#@#asdf", "Filter", "ActiveFilter", "ElemHideBase", "ElemHideException"], 120 ["#@#asdf", "Filter", "ActiveFilter", "ElemHideBase", "ElemHideException"],
121 ["example.com##[-abp-properties='something']", "Filter", "ActiveFilter", "El emHideBase", "CSSPropertyFilter"], 121 ["example.com##[-abp-properties='something']", "Filter", "ActiveFilter", "El emHideBase", "ElemHideEmulationFilter"],
122 ]; 122 ];
123 123
124 for (let list of tests) 124 for (let list of tests)
125 { 125 {
126 let filter = Filter.fromText(list.shift()); 126 let filter = Filter.fromText(list.shift());
127 for (let cls of list) 127 for (let cls of list)
128 { 128 {
129 test.ok(filter instanceof eval(cls), 129 test.ok(filter instanceof eval(cls),
130 "Filter " + filter.text + " is an instance of " + cls); 130 "Filter " + filter.text + " is an instance of " + cls);
131 } 131 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 filter.delete(); 253 filter.delete();
254 254
255 test.done(); 255 test.done();
256 }; 256 };
257 257
258 exports.testInvalidReasons = function(test) 258 exports.testInvalidReasons = function(test)
259 { 259 {
260 let tests = [ 260 let tests = [
261 ["/??/", "filter_invalid_regexp"], 261 ["/??/", "filter_invalid_regexp"],
262 ["asd$foobar", "filter_unknown_option"], 262 ["asd$foobar", "filter_unknown_option"],
263 ["~foo.com##[-abp-properties='abc']", "filter_cssproperty_nodomain"], 263 ["~foo.com##[-abp-properties='abc']", "filter_elemhideemulation_nodomain"],
264 ]; 264 ];
265 265
266 for (let [text, reason] of tests) 266 for (let [text, reason] of tests)
267 { 267 {
268 let filter = Filter.fromText(text); 268 let filter = Filter.fromText(text);
269 test.equals(filter.reason, reason, "Reason why filter " + text + " is invali d"); 269 test.equals(filter.reason, reason, "Reason why filter " + text + " is invali d");
270 filter.delete(); 270 filter.delete();
271 } 271 }
272 272
273 test.done(); 273 test.done();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 filter.delete(); 348 filter.delete();
349 } 349 }
350 350
351 let tests = [ 351 let tests = [
352 ["##foobar", "foobar", ""], 352 ["##foobar", "foobar", ""],
353 ["~example.com##foobar", "foobar", ""], 353 ["~example.com##foobar", "foobar", ""],
354 ["example.com##body > div:first-child", "body > div:first-child", "example.c om"], 354 ["example.com##body > div:first-child", "body > div:first-child", "example.c om"],
355 ["xYz,~example.com##foobar:not(whatever)", "foobar:not(whatever)","xyz"], 355 ["xYz,~example.com##foobar:not(whatever)", "foobar:not(whatever)","xyz"],
356 ["~xyz,com,~abc.com,example.info##foobar", "foobar", "com,example.info"], 356 ["~xyz,com,~abc.com,example.info##foobar", "foobar", "com,example.info"],
357 ["foo,bar,bas,bam##foobar", "foobar", "foo,bar,bas,bam"], 357 ["foo,bar,bas,bam##foobar", "foobar", "foo,bar,bas,bam"],
358 ["foo.com##x[-abp-properties='abc']y", "x[-abp-properties='abc']y", "foo.com "],
358 359
359 // Good idea to test this? Maybe consider behavior undefined in this case. 360 // Good idea to test this? Maybe consider behavior undefined in this case.
360 ["foo,bar,bas,~bar##foobar", "foobar", "foo,bas"], 361 ["foo,bar,bas,~bar##foobar", "foobar", "foo,bas"],
361 ]; 362 ];
362 363
363 for (let [text, selector, selectorDomain] of tests) 364 for (let [text, selector, selectorDomain] of tests)
364 { 365 {
365 doTest(text, selector, selectorDomain); 366 doTest(text, selector, selectorDomain);
366 doTest(text.replace("##", "#@#"), selector, selectorDomain); 367 doTest(text.replace("##", "#@#"), selector, selectorDomain);
367 } 368 }
368 369
369 test.done(); 370 test.done();
370 }; 371 };
371
372 exports.testCSSRules = function(test)
373 {
374 let tests = [
375 ["foo.com##[-abp-properties='abc']", "abc", "", ""],
376 ["foo.com##[-abp-properties='a\"bc']", "a\\\"bc", "", ""],
377 ["foo.com##[-abp-properties=\"abc\"]", "abc", "", ""],
378 ["foo.com##[-abp-properties=\"a'bc\"]", "a\\'bc", "", ""],
379 ["foo.com##aaa [-abp-properties='abc'] bbb", "abc", "aaa ", " bbb"],
380 ["foo.com##[-abp-properties='|background-image: url(data:*)']", "^background \\-image\\:\\ url\\(data\\:.*\\)", "", ""],
381 ];
382
383 for (let [text, regexp, prefix, suffix] of tests)
384 {
385 let filter = Filter.fromText(text);
386 test.equal(filter.regexpString, regexp, "Regular expression of " + text);
387 test.equal(filter.selectorPrefix, prefix, "Selector prefix of " + text);
388 test.equal(filter.selectorSuffix, suffix, "Selector suffix of " + text);
389 filter.delete();
390 }
391
392 test.done();
393 };
OLDNEW
« compiled/RegExpFilter.cpp ('K') | « lib/filterClassesNew.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld