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

Unified Diff: test/FilterEngineStubs.cpp

Issue 10100009: FilterEngine API improvements (Closed)
Patch Set: Replace GetElementHidingRules by a domain-specific GetElementHidingSelectors Created April 5, 2013, 12:22 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/FilterEngine.cpp ('K') | « src/FilterEngine.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/FilterEngineStubs.cpp
===================================================================
--- a/test/FilterEngineStubs.cpp
+++ b/test/FilterEngineStubs.cpp
@@ -1,23 +1,112 @@
#include <AdblockPlus.h>
#include <gtest/gtest.h>
-TEST(FilterEngineStubsTest, AddRemove)
+TEST(FilterEngineStubsTest, FilterCreation)
{
AdblockPlus::JsEngine jsEngine(0, 0);
AdblockPlus::FilterEngine filterEngine(jsEngine);
- ASSERT_EQ(filterEngine.GetSubscriptions().size(), 0u);
- AdblockPlus::Subscription subscription("foo", "bar");
- filterEngine.AddSubscription(subscription);
- ASSERT_EQ(filterEngine.GetSubscriptions().size(), 1u);
- filterEngine.RemoveSubscription(subscription);
- ASSERT_EQ(filterEngine.GetSubscriptions().size(), 0u);
+
+ AdblockPlus::Filter& filter1 = filterEngine.GetFilter("foo");
+ ASSERT_EQ(filter1.GetProperty("type", ""), "blocking");
+ AdblockPlus::Filter& filter2 = filterEngine.GetFilter("@@foo");
+ ASSERT_EQ(filter2.GetProperty("type", ""), "exception");
+ AdblockPlus::Filter& filter3 = filterEngine.GetFilter("example.com##foo");
+ ASSERT_EQ(filter3.GetProperty("type", ""), "elemhide");
+ AdblockPlus::Filter& filter4 = filterEngine.GetFilter("example.com#@#foo");
+ ASSERT_EQ(filter4.GetProperty("type", ""), "elemhideexception");
+ AdblockPlus::Filter& filter5 = filterEngine.GetFilter(" foo ");
+ ASSERT_EQ(&filter5, &filter1);
+}
+
+TEST(FilterEngineStubsTest, FilterProperties)
+{
+ AdblockPlus::JsEngine jsEngine(0, 0);
+ AdblockPlus::FilterEngine filterEngine(jsEngine);
+ AdblockPlus::Filter& filter = filterEngine.GetFilter("foo");
+
+ ASSERT_EQ(filter.GetProperty("stringFoo", "x"), "x");
+ ASSERT_EQ(filter.GetProperty("intFoo", 42), 42);
+ ASSERT_EQ(filter.GetProperty("boolFoo", false), false);
+
+ filter.SetProperty("stringFoo", "y");
+ filter.SetProperty("intFoo", 24);
+ filter.SetProperty("boolFoo", true);
+ ASSERT_EQ(filter.GetProperty("stringFoo", "x"), "y");
+ ASSERT_EQ(filter.GetProperty("intFoo", 42), 24);
+ ASSERT_EQ(filter.GetProperty("boolFoo", false), true);
+}
+
+TEST(FilterEngineStubsTest, AddRemoveFilters)
+{
+ AdblockPlus::JsEngine jsEngine(0, 0);
+ AdblockPlus::FilterEngine filterEngine(jsEngine);
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 0u);
+ AdblockPlus::Filter& filter = filterEngine.GetFilter("foo");
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 0u);
+ filter.AddToList();
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 1u);
+ ASSERT_EQ(filterEngine.GetListedFilters()[0], &filter);
+ filter.AddToList();
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 1u);
+ ASSERT_EQ(filterEngine.GetListedFilters()[0], &filter);
+ filter.RemoveFromList();
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 0u);
+ filter.RemoveFromList();
+ ASSERT_EQ(filterEngine.GetListedFilters().size(), 0u);
+}
+
+TEST(FilterEngineStubsTest, SubscriptionProperties)
+{
+ AdblockPlus::JsEngine jsEngine(0, 0);
+ AdblockPlus::FilterEngine filterEngine(jsEngine);
+ AdblockPlus::Subscription& subscription = filterEngine.GetSubscription("foo");
+
+ ASSERT_EQ(subscription.GetProperty("stringFoo", "x"), "x");
+ ASSERT_EQ(subscription.GetProperty("intFoo", 42), 42);
+ ASSERT_EQ(subscription.GetProperty("boolFoo", false), false);
+
+ subscription.SetProperty("stringFoo", "y");
+ subscription.SetProperty("intFoo", 24);
+ subscription.SetProperty("boolFoo", true);
+ ASSERT_EQ(subscription.GetProperty("stringFoo", "x"), "y");
+ ASSERT_EQ(subscription.GetProperty("intFoo", 42), 24);
+ ASSERT_EQ(subscription.GetProperty("boolFoo", false), true);
+}
+
+TEST(FilterEngineStubsTest, AddRemoveSubscriptions)
+{
+ AdblockPlus::JsEngine jsEngine(0, 0);
+ AdblockPlus::FilterEngine filterEngine(jsEngine);
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 0u);
+ AdblockPlus::Subscription& subscription = filterEngine.GetSubscription("foo");
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 0u);
+ subscription.AddToList();
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 1u);
+ ASSERT_EQ(filterEngine.GetListedSubscriptions()[0], &subscription);
+ subscription.AddToList();
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 1u);
+ ASSERT_EQ(filterEngine.GetListedSubscriptions()[0], &subscription);
+ subscription.RemoveFromList();
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 0u);
+ subscription.RemoveFromList();
+ ASSERT_EQ(filterEngine.GetListedSubscriptions().size(), 0u);
}
TEST(FilterEngineStubsTest, Matches)
{
AdblockPlus::JsEngine jsEngine(0, 0);
AdblockPlus::FilterEngine filterEngine(jsEngine);
- filterEngine.AddSubscription(AdblockPlus::Subscription("foo", "bar"));
- ASSERT_FALSE(filterEngine.Matches("http://example.org", ""));
- ASSERT_TRUE(filterEngine.Matches("http://example.org/adbanner.gif", ""));
+ AdblockPlus::Subscription& subscription = filterEngine.GetSubscription("foo");
+ subscription.AddToList();
+
+ AdblockPlus::Filter* match1 = filterEngine.Matches("http://example.org", "", "");
+ ASSERT_FALSE(match1);
+
+ AdblockPlus::Filter* match2 = filterEngine.Matches("http://example.org/adbanner.gif", "", "");
+ ASSERT_TRUE(match2);
+ ASSERT_EQ(match2->GetProperty("type", ""), "blocking");
+
+ AdblockPlus::Filter* match3 = filterEngine.Matches("http://example.org/notbanner.gif", "", "");
+ ASSERT_TRUE(match3);
+ ASSERT_EQ(match3->GetProperty("type", ""), "exception");
}
« src/FilterEngine.cpp ('K') | « src/FilterEngine.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld