aboutsummaryrefslogtreecommitdiff
path: root/lib/adblock/test
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-12-18 14:32:45 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2017-12-18 14:32:45 +0100
commite2b1cc628b304e3f153abc17fb350aa781e26b36 (patch)
tree269fc864b57b9356dd19c78b2965cb595371e0b7 /lib/adblock/test
parentProfileView dialog (diff)
downloadsmolbote-e2b1cc628b304e3f153abc17fb350aa781e26b36.tar.xz
Basic adblock FilterRule
Diffstat (limited to 'lib/adblock/test')
-rw-r--r--lib/adblock/test/filtertest.cpp63
-rw-r--r--lib/adblock/test/filtertest.h28
-rw-r--r--lib/adblock/test/main.cpp4
3 files changed, 95 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;
+}
diff --git a/lib/adblock/test/filtertest.h b/lib/adblock/test/filtertest.h
new file mode 100644
index 0000000..45cdde1
--- /dev/null
+++ b/lib/adblock/test/filtertest.h
@@ -0,0 +1,28 @@
+#ifndef FILTERTEST_H
+#define FILTERTEST_H
+
+#include <QObject>
+
+class FilterRule;
+class FilterTest : public QObject
+{
+ Q_OBJECT
+public:
+ explicit FilterTest(QObject *parent = nullptr);
+
+signals:
+
+private slots:
+ void initTestCase();
+ void testAddressBlock();
+ void testDomainBlock();
+ void testExactAddressBlock();
+ void cleanupTestCase();
+
+private:
+ FilterRule *addressRule;
+ FilterRule *domainRule;
+ FilterRule *exactAddressRule;
+};
+
+#endif // FILTERTEST_H
diff --git a/lib/adblock/test/main.cpp b/lib/adblock/test/main.cpp
new file mode 100644
index 0000000..3284e47
--- /dev/null
+++ b/lib/adblock/test/main.cpp
@@ -0,0 +1,4 @@
+#include <QtTest/QtTest>
+#include "filtertest.h"
+
+QTEST_APPLESS_MAIN(FilterTest)