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

Side by Side Diff: test/Prefs.cpp

Issue 29508591: Issue 5450 - don't expose std::shared_ptr<FilterEngine> (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created Aug. 7, 2017, 8:46 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/Notification.cpp ('k') | test/UpdateCheck.cpp » ('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-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
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 #include <sstream> 18 #include <sstream>
19 19
20 #include "../src/Thread.h" 20 #include "../src/Thread.h"
21 #include "BaseJsTest.h" 21 #include "BaseJsTest.h"
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;
28
29 class TestFileSystem : public LazyFileSystem 27 class TestFileSystem : public LazyFileSystem
30 { 28 {
31 public: 29 public:
32 IOBuffer prefsContents; 30 IOBuffer prefsContents;
33 31
34 void Read(const std::string& path, const ReadCallback& callback) const overr ide 32 void Read(const std::string& path, const ReadCallback& callback) const overr ide
35 { 33 {
36 scheduler([this, path, callback] 34 scheduler([this, path, callback]
37 { 35 {
38 if (path == "prefs.json" && !prefsContents.empty()) 36 if (path == "prefs.json" && !prefsContents.empty())
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 void ResetPlatform() 86 void ResetPlatform()
89 { 87 {
90 ThrowingPlatformCreationParameters platformParams; 88 ThrowingPlatformCreationParameters platformParams;
91 platformParams.fileSystem = fileSystem; 89 platformParams.fileSystem = fileSystem;
92 platformParams.webRequest.reset(new NoopWebRequest()); 90 platformParams.webRequest.reset(new NoopWebRequest());
93 platformParams.logSystem.reset(new LazyLogSystem()); 91 platformParams.logSystem.reset(new LazyLogSystem());
94 platformParams.timer.reset(new NoopTimer()); 92 platformParams.timer.reset(new NoopTimer());
95 platform.reset(new Platform(std::move(platformParams))); 93 platform.reset(new Platform(std::move(platformParams)));
96 } 94 }
97 95
98 FilterEnginePtr CreateFilterEngine(const AdblockPlus::FilterEngine::Prefs& p reconfiguredPrefs = 96 FilterEngine& CreateFilterEngine(const AdblockPlus::FilterEngine::Prefs& pre configuredPrefs =
99 AdblockPlus::FilterEngine::Prefs()) 97 AdblockPlus::FilterEngine::Prefs())
100 { 98 {
101 AdblockPlus::FilterEngine::CreationParameters createParams; 99 AdblockPlus::FilterEngine::CreationParameters createParams;
102 createParams.preconfiguredPrefs = preconfiguredPrefs; 100 createParams.preconfiguredPrefs = preconfiguredPrefs;
103 return ::CreateFilterEngine(*fileSystem, *platform, createParams); 101 return ::CreateFilterEngine(*fileSystem, *platform, createParams);
104 } 102 }
105 }; 103 };
106 } 104 }
107 105
108 TEST_F(PrefsTest, PrefsGetSet) 106 TEST_F(PrefsTest, PrefsGetSet)
109 { 107 {
110 auto filterEngine = CreateFilterEngine(); 108 auto& filterEngine = CreateFilterEngine();
111 ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); 109 ASSERT_EQ("patterns.ini", filterEngine.GetPref("patternsfile").AsString());
112 ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); 110 ASSERT_EQ(24, filterEngine.GetPref("patternsbackupinterval").AsInt());
113 ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); 111 ASSERT_TRUE(filterEngine.GetPref("subscriptions_autoupdate").AsBool());
114 ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); 112 ASSERT_TRUE(filterEngine.GetPref("foobar").IsUndefined());
115 113
116 ASSERT_ANY_THROW(filterEngine->SetPref("patternsfile", GetJsEngine().NewValue( 0))); 114 ASSERT_ANY_THROW(filterEngine.SetPref("patternsfile", GetJsEngine().NewValue(0 )));
117 ASSERT_ANY_THROW(filterEngine->SetPref("patternsbackupinterval", GetJsEngine() .NewValue(true))); 115 ASSERT_ANY_THROW(filterEngine.SetPref("patternsbackupinterval", GetJsEngine(). NewValue(true)));
118 ASSERT_ANY_THROW(filterEngine->SetPref("subscriptions_autoupdate", GetJsEngine ().NewValue("foo"))); 116 ASSERT_ANY_THROW(filterEngine.SetPref("subscriptions_autoupdate", GetJsEngine( ).NewValue("foo")));
119 117
120 filterEngine->SetPref("patternsfile", GetJsEngine().NewValue("filters.ini")); 118 filterEngine.SetPref("patternsfile", GetJsEngine().NewValue("filters.ini"));
121 filterEngine->SetPref("patternsbackupinterval", GetJsEngine().NewValue(48)); 119 filterEngine.SetPref("patternsbackupinterval", GetJsEngine().NewValue(48));
122 filterEngine->SetPref("subscriptions_autoupdate", GetJsEngine().NewValue(false )); 120 filterEngine.SetPref("subscriptions_autoupdate", GetJsEngine().NewValue(false) );
123 121
124 ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); 122 ASSERT_EQ("filters.ini", filterEngine.GetPref("patternsfile").AsString());
125 ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); 123 ASSERT_EQ(48, filterEngine.GetPref("patternsbackupinterval").AsInt());
126 ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); 124 ASSERT_FALSE(filterEngine.GetPref("subscriptions_autoupdate").AsBool());
127 } 125 }
128 126
129 TEST_F(PrefsTest, PrefsPersist) 127 TEST_F(PrefsTest, PrefsPersist)
130 { 128 {
131 { 129 {
132 auto filterEngine = CreateFilterEngine(); 130 auto& filterEngine = CreateFilterEngine();
133 ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); 131 ASSERT_EQ("patterns.ini", filterEngine.GetPref("patternsfile").AsString());
134 ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); 132 ASSERT_EQ(24, filterEngine.GetPref("patternsbackupinterval").AsInt());
135 ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); 133 ASSERT_TRUE(filterEngine.GetPref("subscriptions_autoupdate").AsBool());
136 134
137 filterEngine->SetPref("patternsfile", GetJsEngine().NewValue("filters.ini")) ; 135 filterEngine.SetPref("patternsfile", GetJsEngine().NewValue("filters.ini"));
138 filterEngine->SetPref("patternsbackupinterval", GetJsEngine().NewValue(48)); 136 filterEngine.SetPref("patternsbackupinterval", GetJsEngine().NewValue(48));
139 filterEngine->SetPref("subscriptions_autoupdate", GetJsEngine().NewValue(fal se)); 137 filterEngine.SetPref("subscriptions_autoupdate", GetJsEngine().NewValue(fals e));
140 } 138 }
141 ASSERT_FALSE(fileSystem->prefsContents.empty()); 139 ASSERT_FALSE(fileSystem->prefsContents.empty());
142 140
143 { 141 {
144 ResetPlatform(); 142 ResetPlatform();
145 auto filterEngine = CreateFilterEngine(); 143 auto& filterEngine = CreateFilterEngine();
146 ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); 144 ASSERT_EQ("filters.ini", filterEngine.GetPref("patternsfile").AsString());
147 ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); 145 ASSERT_EQ(48, filterEngine.GetPref("patternsbackupinterval").AsInt());
148 ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); 146 ASSERT_FALSE(filterEngine.GetPref("subscriptions_autoupdate").AsBool());
149 } 147 }
150 } 148 }
151 149
152 TEST_F(PrefsTest, UnknownPrefs) 150 TEST_F(PrefsTest, UnknownPrefs)
153 { 151 {
154 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; 152 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer;
155 std::string content = "{\"foobar\":2, \"patternsbackupinterval\": 12}"; 153 std::string content = "{\"foobar\":2, \"patternsbackupinterval\": 12}";
156 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); 154 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend());
157 auto filterEngine = CreateFilterEngine(); 155 auto& filterEngine = CreateFilterEngine();
158 ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); 156 ASSERT_TRUE(filterEngine.GetPref("foobar").IsUndefined());
159 ASSERT_EQ(12, filterEngine->GetPref("patternsbackupinterval").AsInt()); 157 ASSERT_EQ(12, filterEngine.GetPref("patternsbackupinterval").AsInt());
160 } 158 }
161 159
162 TEST_F(PrefsTest, SyntaxFailure) 160 TEST_F(PrefsTest, SyntaxFailure)
163 { 161 {
164 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; 162 using IOBuffer = AdblockPlus::IFileSystem::IOBuffer;
165 std::string content = "{\"patternsbackupinterval\": 6, \"foo\"}"; 163 std::string content = "{\"patternsbackupinterval\": 6, \"foo\"}";
166 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); 164 fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend());
167 auto filterEngine = CreateFilterEngine(); 165 ASSERT_EQ(24, CreateFilterEngine().GetPref("patternsbackupinterval").AsInt());
168
169 ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt());
170 } 166 }
171 167
172 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) 168 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured)
173 { 169 {
174 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; 170 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs;
175 preconfiguredPrefs.emplace("disable_auto_updates", GetJsEngine().NewValue(fals e)); 171 preconfiguredPrefs.emplace("disable_auto_updates", GetJsEngine().NewValue(fals e));
176 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue(t rue)); 172 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue(t rue));
177 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); 173 auto& filterEngine = CreateFilterEngine(preconfiguredPrefs);
178 174
179 ASSERT_TRUE(filterEngine->GetPref("disable_auto_updates").IsBool()); 175 ASSERT_TRUE(filterEngine.GetPref("disable_auto_updates").IsBool());
180 ASSERT_FALSE(filterEngine->GetPref("disable_auto_updates").AsBool()); 176 ASSERT_FALSE(filterEngine.GetPref("disable_auto_updates").AsBool());
181 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); 177 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").IsBool());
182 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); 178 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").AsBool());
183 } 179 }
184 180
185 TEST_F(PrefsTest, PreconfiguredPrefsUnsupported) 181 TEST_F(PrefsTest, PreconfiguredPrefsUnsupported)
186 { 182 {
187 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; 183 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs;
188 preconfiguredPrefs.emplace("unsupported_preconfig", GetJsEngine().NewValue(tru e)); 184 preconfiguredPrefs.emplace("unsupported_preconfig", GetJsEngine().NewValue(tru e));
189 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); 185 auto& filterEngine = CreateFilterEngine(preconfiguredPrefs);
190 186
191 ASSERT_TRUE(filterEngine->GetPref("unsupported_preconfig").IsUndefined()); 187 ASSERT_TRUE(filterEngine.GetPref("unsupported_preconfig").IsUndefined());
192 } 188 }
193 189
194 TEST_F(PrefsTest, PreconfiguredPrefsOverride) 190 TEST_F(PrefsTest, PreconfiguredPrefsOverride)
195 { 191 {
196 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; 192 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs;
197 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue(t rue)); 193 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue(t rue));
198 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); 194 auto& filterEngine = CreateFilterEngine(preconfiguredPrefs);
199 195
200 filterEngine->SetPref("suppress_first_run_page", GetJsEngine().NewValue(false) ); 196 filterEngine.SetPref("suppress_first_run_page", GetJsEngine().NewValue(false)) ;
201 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); 197 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").IsBool());
202 ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); 198 ASSERT_FALSE(filterEngine.GetPref("suppress_first_run_page").AsBool());
203 } 199 }
204 200
205 TEST_F(PrefsTest, PrefsPersistWhenPreconfigured) 201 TEST_F(PrefsTest, PrefsPersistWhenPreconfigured)
206 { 202 {
207 { 203 {
208 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; 204 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs;
209 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue (true)); 205 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue (true));
210 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); 206 auto& filterEngine = CreateFilterEngine(preconfiguredPrefs);
211 207
212 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); 208 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").IsBool());
213 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); 209 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").AsBool());
214 filterEngine->SetPref("suppress_first_run_page", GetJsEngine().NewValue(fals e)); 210 filterEngine.SetPref("suppress_first_run_page", GetJsEngine().NewValue(false ));
215 } 211 }
216 ASSERT_FALSE(fileSystem->prefsContents.empty()); 212 ASSERT_FALSE(fileSystem->prefsContents.empty());
217 213
218 { 214 {
219 ResetPlatform(); 215 ResetPlatform();
220 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; 216 AdblockPlus::FilterEngine::Prefs preconfiguredPrefs;
221 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue (true)); 217 preconfiguredPrefs.emplace("suppress_first_run_page", GetJsEngine().NewValue (true));
222 auto filterEngine = CreateFilterEngine(preconfiguredPrefs); 218 auto& filterEngine = CreateFilterEngine(preconfiguredPrefs);
223 219
224 ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); 220 ASSERT_TRUE(filterEngine.GetPref("suppress_first_run_page").IsBool());
225 ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); 221 ASSERT_FALSE(filterEngine.GetPref("suppress_first_run_page").AsBool());
226 } 222 }
227 } 223 }
OLDNEW
« no previous file with comments | « test/Notification.cpp ('k') | test/UpdateCheck.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld