aboutsummaryrefslogtreecommitdiff
path: root/lib/adblock/test/filtertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/adblock/test/filtertest.cpp')
-rw-r--r--lib/adblock/test/filtertest.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/adblock/test/filtertest.cpp b/lib/adblock/test/filtertest.cpp
new file mode 100644
index 0000000..c778bc7
--- /dev/null
+++ b/lib/adblock/test/filtertest.cpp
@@ -0,0 +1,63 @@
+#include "filtertest.h"
+#include <QtTest/QtTest>
+#include "../filterrule.h"
+#include <QUrl>
+
+FilterTest::FilterTest(QObject *parent) : QObject(parent)
+{
+}
+
+void FilterTest::initTestCase()
+{
+ addressRule = new FilterRule("/banner/*/img^");
+ QVERIFY(addressRule->isValid() == true);
+ QVERIFY(addressRule->isException() == false);
+
+ domainRule = new FilterRule("||ads.example.com^");
+ QVERIFY(domainRule->isValid() == true);
+ QVERIFY(domainRule->isException() == false);
+
+ exactAddressRule = new FilterRule("|http://example.com/|");
+ QVERIFY(exactAddressRule->isValid() == true);
+ QVERIFY(exactAddressRule->isException() == false);
+}
+
+void FilterTest::testAddressBlock()
+{
+ // This rule blocks:
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/img")) == true);
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/bar/img?param")) == true);
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner//img/foo")) == true);
+
+ // This rule doesn't block:
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/img")) == false);
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/imgraph")) == false);
+ QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/img.gif")) == false);
+}
+
+void FilterTest::testDomainBlock()
+{
+ // This rule blocks:
+ QVERIFY(domainRule->shouldBlock(QUrl("http://ads.example.com/foo.gif")) == true);
+ QVERIFY(domainRule->shouldBlock(QUrl("http://server1.ads.example.com/foo.gif")) == true);
+ QVERIFY(domainRule->shouldBlock(QUrl("https://ads.example.com:8000/")) == true);
+
+ // This rule doesn't block:
+ QVERIFY(domainRule->shouldBlock(QUrl("http://ads.example.com.ua/foo.gif")) == false);
+ QVERIFY(domainRule->shouldBlock(QUrl("http://example.com/redirect/http://ads.example.com/")) == false);
+}
+
+void FilterTest::testExactAddressBlock()
+{
+ // This rule blocks:
+ QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.com/")) == true);
+
+ // This rule doesn't block:
+ QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.com/foo.gif")) == false);
+ QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.info/redirect/http://example.com/")) == false);
+}
+
+void FilterTest::cleanupTestCase()
+{
+ delete addressRule;
+}