| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2013 Eyeo GmbH | 3 * Copyright (C) 2006-2013 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 "BaseJsTest.h" | 18 #include "BaseJsTest.h" |
| 19 | 19 |
| 20 namespace | 20 namespace |
| 21 { | 21 { |
| 22 typedef std::tr1::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; | 22 typedef std::tr1::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; |
| 23 | 23 |
| 24 class FilterEngineTest : public BaseJsTest | 24 class VeryLazyFileSystem : public LazyFileSystem |
| 25 { |
| 26 std::tr1::shared_ptr<std::istream> Read(const std::string& path) const |
| 27 { |
| 28 std::string dummyData("# Adblock Plus preferences"); |
| 29 return std::tr1::shared_ptr<std::istream>(new std::istringstream(dummyData
)); |
| 30 } |
| 31 }; |
| 32 |
| 33 template<class FileSystem, class LogSystem> |
| 34 class FilterEngineTestGeneric : public BaseJsTest |
| 25 { | 35 { |
| 26 protected: | 36 protected: |
| 27 FilterEnginePtr filterEngine; | 37 FilterEnginePtr filterEngine; |
| 28 | 38 |
| 29 void SetUp() | 39 void SetUp() |
| 30 { | 40 { |
| 31 BaseJsTest::SetUp(); | 41 BaseJsTest::SetUp(); |
| 32 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new LazyFileSystem)); | 42 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new FileSystem)); |
| 33 jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(new LazyWebRequest)); | 43 jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(new LazyWebRequest)); |
| 34 jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr(new AdblockPlus::DefaultL
ogSystem)); | 44 jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr(new LogSystem)); |
| 35 filterEngine = FilterEnginePtr(new AdblockPlus::FilterEngine(jsEngine)); | 45 filterEngine = FilterEnginePtr(new AdblockPlus::FilterEngine(jsEngine)); |
| 36 } | 46 } |
| 37 }; | 47 }; |
| 48 |
| 49 typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem>
FilterEngineTest; |
| 50 typedef FilterEngineTestGeneric<VeryLazyFileSystem, LazyLogSystem> FilterEngin
eTestNoData; |
| 38 } | 51 } |
| 39 | 52 |
| 40 TEST_F(FilterEngineTest, FilterCreation) | 53 TEST_F(FilterEngineTest, FilterCreation) |
| 41 { | 54 { |
| 42 AdblockPlus::FilterPtr filter1 = filterEngine->GetFilter("foo"); | 55 AdblockPlus::FilterPtr filter1 = filterEngine->GetFilter("foo"); |
| 43 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, filter1->GetType()); | 56 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, filter1->GetType()); |
| 44 AdblockPlus::FilterPtr filter2 = filterEngine->GetFilter("@@foo"); | 57 AdblockPlus::FilterPtr filter2 = filterEngine->GetFilter("@@foo"); |
| 45 ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter2->GetType()); | 58 ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter2->GetType()); |
| 46 AdblockPlus::FilterPtr filter3 = filterEngine->GetFilter("example.com##foo"); | 59 AdblockPlus::FilterPtr filter3 = filterEngine->GetFilter("example.com##foo"); |
| 47 ASSERT_EQ(AdblockPlus::Filter::TYPE_ELEMHIDE, filter3->GetType()); | 60 ASSERT_EQ(AdblockPlus::Filter::TYPE_ELEMHIDE, filter3->GetType()); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 subscription->SetProperty("stringFoo", "y"); | 108 subscription->SetProperty("stringFoo", "y"); |
| 96 subscription->SetProperty("intFoo", 24); | 109 subscription->SetProperty("intFoo", 24); |
| 97 subscription->SetProperty("boolFoo", true); | 110 subscription->SetProperty("boolFoo", true); |
| 98 ASSERT_EQ("y", subscription->GetProperty("stringFoo")->AsString()); | 111 ASSERT_EQ("y", subscription->GetProperty("stringFoo")->AsString()); |
| 99 ASSERT_EQ(24, subscription->GetProperty("intFoo")->AsInt()); | 112 ASSERT_EQ(24, subscription->GetProperty("intFoo")->AsInt()); |
| 100 ASSERT_TRUE(subscription->GetProperty("boolFoo")->AsBool()); | 113 ASSERT_TRUE(subscription->GetProperty("boolFoo")->AsBool()); |
| 101 } | 114 } |
| 102 | 115 |
| 103 TEST_F(FilterEngineTest, AddRemoveSubscriptions) | 116 TEST_F(FilterEngineTest, AddRemoveSubscriptions) |
| 104 { | 117 { |
| 105 ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); | 118 // There should be only the default subscription initially |
| 119 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| 106 AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo
"); | 120 AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo
"); |
| 107 ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); | 121 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| 108 subscription->AddToList(); | 122 subscription->AddToList(); |
| 123 ASSERT_EQ(2u, filterEngine->GetListedSubscriptions().size()); |
| 124 ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[1]); |
| 125 subscription->AddToList(); |
| 126 ASSERT_EQ(2u, filterEngine->GetListedSubscriptions().size()); |
| 127 ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[1]); |
| 128 subscription->RemoveFromList(); |
| 109 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); | 129 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| 110 ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[0]); | 130 subscription->RemoveFromList(); |
| 111 subscription->AddToList(); | |
| 112 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); | 131 ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| 113 ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[0]); | |
| 114 subscription->RemoveFromList(); | |
| 115 ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); | |
| 116 subscription->RemoveFromList(); | |
| 117 ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); | |
| 118 } | 132 } |
| 119 | 133 |
| 120 TEST_F(FilterEngineTest, SubscriptionUpdates) | 134 TEST_F(FilterEngineTest, SubscriptionUpdates) |
| 121 { | 135 { |
| 122 AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo
"); | 136 AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo
"); |
| 123 ASSERT_FALSE(subscription->IsUpdating()); | 137 ASSERT_FALSE(subscription->IsUpdating()); |
| 124 subscription->UpdateFilters(); | 138 subscription->UpdateFilters(); |
| 125 } | 139 } |
| 126 | 140 |
| 127 TEST_F(FilterEngineTest, Matches) | 141 TEST_F(FilterEngineTest, Matches) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 153 ASSERT_TRUE(match6); | 167 ASSERT_TRUE(match6); |
| 154 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); | 168 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); |
| 155 | 169 |
| 156 AdblockPlus::FilterPtr match7 = filterEngine->Matches("http://example.org/tpba
nner.gif", "IMAGE", "http://example.com/"); | 170 AdblockPlus::FilterPtr match7 = filterEngine->Matches("http://example.org/tpba
nner.gif", "IMAGE", "http://example.com/"); |
| 157 ASSERT_TRUE(match7); | 171 ASSERT_TRUE(match7); |
| 158 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); | 172 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); |
| 159 | 173 |
| 160 AdblockPlus::FilterPtr match8 = filterEngine->Matches("http://example.org/fpba
nner.gif", "IMAGE", "http://example.com/"); | 174 AdblockPlus::FilterPtr match8 = filterEngine->Matches("http://example.org/fpba
nner.gif", "IMAGE", "http://example.com/"); |
| 161 ASSERT_FALSE(match8); | 175 ASSERT_FALSE(match8); |
| 162 } | 176 } |
| 177 |
| 178 TEST_F(FilterEngineTest, FirstRunFlag) |
| 179 { |
| 180 ASSERT_FALSE(filterEngine->IsFirstRun()); |
| 181 } |
| 182 |
| 183 TEST_F(FilterEngineTestNoData, FirstRunFlag) |
| 184 { |
| 185 ASSERT_FALSE(filterEngine->IsFirstRun()); |
| 186 } |
| OLD | NEW |