LEFT | RIGHT |
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-2017 eyeo GmbH | 3 * Copyright (C) 2006-2017 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 Loading... |
22 | 22 |
23 using namespace AdblockPlus; | 23 using namespace AdblockPlus; |
24 | 24 |
25 namespace | 25 namespace |
26 { | 26 { |
27 typedef std::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; | 27 typedef std::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; |
28 | 28 |
29 class TestFileSystem : public LazyFileSystem | 29 class TestFileSystem : public LazyFileSystem |
30 { | 30 { |
31 public: | 31 public: |
32 std::string prefsContents; | 32 IOBuffer prefsContents; |
33 | 33 |
34 std::shared_ptr<std::istream> Read(const std::string& path) const | 34 IOBuffer Read(const std::string& path) const |
35 { | 35 { |
36 if (path == "prefs.json" && !prefsContents.empty()) | 36 if (path == "prefs.json" && !prefsContents.empty()) |
37 return std::shared_ptr<std::istream>(new std::istringstream(prefsContent
s)); | 37 return prefsContents; |
38 | 38 |
39 return LazyFileSystem::Read(path); | 39 return LazyFileSystem::Read(path); |
40 } | 40 } |
41 | 41 |
42 void Write(const std::string& path, std::ostream& content) | 42 void Write(const std::string& path, const IOBuffer& content) |
43 { | 43 { |
44 if (path == "prefs.json") | 44 if (path == "prefs.json") |
45 { | 45 prefsContents = content; |
46 std::stringstream ss; | |
47 ss << content.rdbuf(); | |
48 prefsContents = ss.str(); | |
49 } | |
50 else | 46 else |
51 LazyFileSystem::Write(path, content); | 47 LazyFileSystem::Write(path, content); |
52 } | 48 } |
53 | 49 |
54 StatResult Stat(const std::string& path) const | 50 StatResult Stat(const std::string& path) const |
55 { | 51 { |
56 if (path == "prefs.json") | 52 if (path == "prefs.json") |
57 { | 53 { |
58 StatResult result; | 54 StatResult result; |
59 result.exists = result.isFile = !prefsContents.empty(); | 55 result.exists = result.isFile = !prefsContents.empty(); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 ResetJsEngine(); | 133 ResetJsEngine(); |
138 auto filterEngine = CreateFilterEngine(); | 134 auto filterEngine = CreateFilterEngine(); |
139 ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); | 135 ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); |
140 ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 136 ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); |
141 ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); | 137 ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); |
142 } | 138 } |
143 } | 139 } |
144 | 140 |
145 TEST_F(PrefsTest, UnknownPrefs) | 141 TEST_F(PrefsTest, UnknownPrefs) |
146 { | 142 { |
147 fileSystem->prefsContents = "{\"foobar\":2, \"patternsbackupinterval\": 12}"; | 143 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; |
| 144 std::string content = "{\"foobar\":2, \"patternsbackupinterval\": 12}"; |
| 145 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); |
148 auto filterEngine = CreateFilterEngine(); | 146 auto filterEngine = CreateFilterEngine(); |
149 ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); | 147 ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); |
150 ASSERT_EQ(12, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 148 ASSERT_EQ(12, filterEngine->GetPref("patternsbackupinterval").AsInt()); |
151 } | 149 } |
152 | 150 |
153 TEST_F(PrefsTest, SyntaxFailure) | 151 TEST_F(PrefsTest, SyntaxFailure) |
154 { | 152 { |
155 fileSystem->prefsContents = "{\"patternsbackupinterval\": 6, \"foo\"}"; | 153 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; |
| 154 std::string content = "{\"patternsbackupinterval\": 6, \"foo\"}"; |
| 155 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); |
156 auto filterEngine = CreateFilterEngine(); | 156 auto filterEngine = CreateFilterEngine(); |
157 | 157 |
158 ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 158 ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); |
159 } | 159 } |
160 | 160 |
161 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) | 161 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) |
162 { | 162 { |
163 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 163 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |
164 preconfiguredPrefs.emplace("disable_auto_updates", jsEngine->NewValue(false)); | 164 preconfiguredPrefs.emplace("disable_auto_updates", jsEngine->NewValue(false)); |
165 preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(true)
); | 165 preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(true)
); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 { | 209 { |
210 ResetJsEngine(); | 210 ResetJsEngine(); |
211 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 211 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |
212 preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(tru
e)); | 212 preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(tru
e)); |
213 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 213 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |
214 | 214 |
215 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); | 215 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); |
216 ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); | 216 ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); |
217 } | 217 } |
218 } | 218 } |
LEFT | RIGHT |