Index: test/FilterEngine.cpp |
=================================================================== |
--- a/test/FilterEngine.cpp |
+++ b/test/FilterEngine.cpp |
@@ -16,30 +16,43 @@ |
*/ |
#include "BaseJsTest.h" |
namespace |
{ |
typedef std::tr1::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; |
- class FilterEngineTest : public BaseJsTest |
+ class VeryLazyFileSystem : public LazyFileSystem |
+ { |
+ std::tr1::shared_ptr<std::istream> Read(const std::string& path) const |
+ { |
+ std::string dummyData("# Adblock Plus preferences"); |
+ return std::tr1::shared_ptr<std::istream>(new std::istringstream(dummyData)); |
+ } |
+ }; |
+ |
+ template<class FileSystem, class LogSystem> |
+ class FilterEngineTestGeneric : public BaseJsTest |
{ |
protected: |
FilterEnginePtr filterEngine; |
void SetUp() |
{ |
BaseJsTest::SetUp(); |
- jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new LazyFileSystem)); |
+ jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new FileSystem)); |
jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(new LazyWebRequest)); |
- jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr(new AdblockPlus::DefaultLogSystem)); |
+ jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr(new LogSystem)); |
filterEngine = FilterEnginePtr(new AdblockPlus::FilterEngine(jsEngine)); |
} |
}; |
+ |
+ typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem> FilterEngineTest; |
+ typedef FilterEngineTestGeneric<VeryLazyFileSystem, LazyLogSystem> FilterEngineTestNoData; |
} |
TEST_F(FilterEngineTest, FilterCreation) |
{ |
AdblockPlus::FilterPtr filter1 = filterEngine->GetFilter("foo"); |
ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, filter1->GetType()); |
AdblockPlus::FilterPtr filter2 = filterEngine->GetFilter("@@foo"); |
ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter2->GetType()); |
@@ -97,29 +110,30 @@ TEST_F(FilterEngineTest, SubscriptionPro |
subscription->SetProperty("boolFoo", true); |
ASSERT_EQ("y", subscription->GetProperty("stringFoo")->AsString()); |
ASSERT_EQ(24, subscription->GetProperty("intFoo")->AsInt()); |
ASSERT_TRUE(subscription->GetProperty("boolFoo")->AsBool()); |
} |
TEST_F(FilterEngineTest, AddRemoveSubscriptions) |
{ |
- ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
+ // There should be only the default subscription initially |
+ ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo"); |
- ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
+ ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
subscription->AddToList(); |
+ ASSERT_EQ(2u, filterEngine->GetListedSubscriptions().size()); |
+ ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[1]); |
+ subscription->AddToList(); |
+ ASSERT_EQ(2u, filterEngine->GetListedSubscriptions().size()); |
+ ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[1]); |
+ subscription->RemoveFromList(); |
ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
- ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[0]); |
- subscription->AddToList(); |
+ subscription->RemoveFromList(); |
ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
- ASSERT_EQ(*subscription, *filterEngine->GetListedSubscriptions()[0]); |
- subscription->RemoveFromList(); |
- ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
- subscription->RemoveFromList(); |
- ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
} |
TEST_F(FilterEngineTest, SubscriptionUpdates) |
{ |
AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo"); |
ASSERT_FALSE(subscription->IsUpdating()); |
subscription->UpdateFilters(); |
} |
@@ -155,8 +169,18 @@ TEST_F(FilterEngineTest, Matches) |
AdblockPlus::FilterPtr match7 = filterEngine->Matches("http://example.org/tpbanner.gif", "IMAGE", "http://example.com/"); |
ASSERT_TRUE(match7); |
ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); |
AdblockPlus::FilterPtr match8 = filterEngine->Matches("http://example.org/fpbanner.gif", "IMAGE", "http://example.com/"); |
ASSERT_FALSE(match8); |
} |
+ |
+TEST_F(FilterEngineTest, FirstRunFlag) |
+{ |
+ ASSERT_FALSE(filterEngine->IsFirstRun()); |
+} |
+ |
+TEST_F(FilterEngineTestNoData, FirstRunFlag) |
+{ |
+ ASSERT_FALSE(filterEngine->IsFirstRun()); |
+} |