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

Side by Side Diff: test/matcher.js

Issue 29375915: Issue 4878 - Start using ESLint for adblockpluscore (Closed)
Patch Set: Rebased Created March 10, 2017, 7:02 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/filterStorage_readwrite.js ('k') | test/notification.js » ('j') | 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
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 "use strict"; 18 "use strict";
19 19
20 let {createSandbox} = require("./_common"); 20 const {createSandbox} = require("./_common");
21 21
22 let Filter = null; 22 let Filter = null;
23 let RegExpFilter = null; 23 let RegExpFilter = null;
24 let CombinedMatcher = null; 24 let CombinedMatcher = null;
25 let defaultMatcher = null; 25 let defaultMatcher = null;
26 let Matcher = null; 26 let Matcher = null;
27 27
28 exports.setUp = function(callback) 28 exports.setUp = function(callback)
29 { 29 {
30 let sandboxedRequire = createSandbox(); 30 let sandboxedRequire = createSandbox();
31 ( 31 (
32 {Filter, RegExpFilter} = sandboxedRequire("../lib/filterClasses"), 32 {Filter, RegExpFilter} = sandboxedRequire("../lib/filterClasses"),
33 {CombinedMatcher, defaultMatcher, Matcher} = sandboxedRequire("../lib/matche r") 33 {CombinedMatcher, defaultMatcher, Matcher} = sandboxedRequire("../lib/matche r")
34 ); 34 );
35 35
36 callback(); 36 callback();
37 }; 37 };
38 38
39 function compareKeywords(test, text, expected) 39 function compareKeywords(test, text, expected)
40 { 40 {
41 for (let filter of [Filter.fromText(text), Filter.fromText("@@" + text)]) 41 for (let filter of [Filter.fromText(text), Filter.fromText("@@" + text)])
42 { 42 {
43 let matcher = new Matcher(); 43 let matcher = new Matcher();
44 let result = []; 44 let result = [];
45 for (let dummy of expected) 45 for (let i = 0; i < expected.length; i++)
46 { 46 {
47 let keyword = matcher.findKeyword(filter); 47 let keyword = matcher.findKeyword(filter);
48 result.push(keyword); 48 result.push(keyword);
49 if (keyword) 49 if (keyword)
50 { 50 {
51 let dummyFilter = Filter.fromText('^' + keyword + '^'); 51 let dummyFilter = Filter.fromText("^" + keyword + "^");
52 dummyFilter.filterCount = Infinity; 52 dummyFilter.filterCount = Infinity;
53 matcher.add(dummyFilter); 53 matcher.add(dummyFilter);
54 } 54 }
55 } 55 }
56 56
57 test.equal(result.join(", "), expected.join(", "), "Keyword candidates for " + filter.text); 57 test.equal(result.join(", "), expected.join(", "), "Keyword candidates for " + filter.text);
58 } 58 }
59 } 59 }
60 60
61 function checkMatch(test, filters, location, contentType, docDomain, thirdParty, sitekey, specificOnly, expected) 61 function checkMatch(test, filters, location, contentType, docDomain, thirdParty, sitekey, specificOnly, expected)
62 { 62 {
63 let matcher = new Matcher(); 63 let matcher = new Matcher();
64 for (let filter of filters) 64 for (let filter of filters)
65 matcher.add(Filter.fromText(filter)); 65 matcher.add(Filter.fromText(filter));
66 66
67 let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d ocDomain, thirdParty, sitekey, specificOnly); 67 let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d ocDomain, thirdParty, sitekey, specificOnly);
68 if (result) 68 if (result)
69 result = result.text; 69 result = result.text;
70 70
71 test.equal(result, expected, "match(" + location + ", " + contentType + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitek ey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-specificOnly" ) + ") with:\n" + filters.join("\n")); 71 test.equal(result, expected, "match(" + location + ", " + contentType + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitek ey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-specificOnly" ) + ") with:\n" + filters.join("\n"));
72 72
73 let combinedMatcher = new CombinedMatcher(); 73 let combinedMatcher = new CombinedMatcher();
74 for (let i = 0; i < 2; i++) 74 for (let i = 0; i < 2; i++)
75 { 75 {
76 for (let filter of filters) 76 for (let filter of filters)
77 combinedMatcher.add(Filter.fromText(filter)); 77 combinedMatcher.add(Filter.fromText(filter));
78 78
79 let result = combinedMatcher.matchesAny(location, RegExpFilter.typeMap[conte ntType], docDomain, thirdParty, sitekey, specificOnly); 79 result = combinedMatcher.matchesAny(location, RegExpFilter.typeMap[contentTy pe], docDomain, thirdParty, sitekey, specificOnly);
80 if (result) 80 if (result)
81 result = result.text; 81 result = result.text;
82 82
83 test.equal(result, expected, "combinedMatch(" + location + ", " + contentTyp e + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitekey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-spe cificOnly") + ") with:\n" + filters.join("\n")); 83 test.equal(result, expected, "combinedMatch(" + location + ", " + contentTyp e + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitekey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-spe cificOnly") + ") with:\n" + filters.join("\n"));
84 84
85 // Generic whitelisting rules can match for specificOnly searches, so we 85 // Generic whitelisting rules can match for specificOnly searches, so we
86 // can't easily know which rule will match for these whitelisting tests 86 // can't easily know which rule will match for these whitelisting tests
87 if (specificOnly) 87 if (specificOnly)
88 continue; 88 continue;
89 89
90 // For next run: add whitelisting filters for filters that aren't already 90 // For next run: add whitelisting filters for filters that aren't already
91 filters = filters.map((text) => text.substr(0, 2) == "@@" ? text : "@@" + te xt); 91 filters = filters.map(text => text.substr(0, 2) == "@@" ? text : "@@" + text );
92 if (expected && expected.substr(0, 2) != "@@") 92 if (expected && expected.substr(0, 2) != "@@")
93 expected = "@@" + expected; 93 expected = "@@" + expected;
94 } 94 }
95 } 95 }
96 96
97 function cacheCheck(test, matcher, location, contentType, docDomain, thirdParty, expected) 97 function cacheCheck(test, matcher, location, contentType, docDomain, thirdParty, expected)
98 { 98 {
99 let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d ocDomain, thirdParty); 99 let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d ocDomain, thirdParty);
100 if (result) 100 if (result)
101 result = result.text; 101 result = result.text;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 cacheCheck(test, matcher, "http://fed", "IMAGE", null, true, "http://fed$third -party"); 239 cacheCheck(test, matcher, "http://fed", "IMAGE", null, true, "http://fed$third -party");
240 cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, false, "cba$~third- party,~script"); 240 cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, false, "cba$~third- party,~script");
241 cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, true, "cba$third-pa rty"); 241 cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, true, "cba$third-pa rty");
242 cacheCheck(test, matcher, "http://abc_cba", "SCRIPT", null, false, "abc$script "); 242 cacheCheck(test, matcher, "http://abc_cba", "SCRIPT", null, false, "abc$script ");
243 cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, false, "http ://fed$~third-party,~script"); 243 cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, false, "http ://fed$~third-party,~script");
244 cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, true, "http: //fed$third-party"); 244 cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, true, "http: //fed$third-party");
245 cacheCheck(test, matcher, "http://def?http://fed", "SCRIPT", null, false, "htt p://def$script"); 245 cacheCheck(test, matcher, "http://def?http://fed", "SCRIPT", null, false, "htt p://def$script");
246 246
247 test.done(); 247 test.done();
248 }; 248 };
OLDNEW
« no previous file with comments | « test/filterStorage_readwrite.js ('k') | test/notification.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld