aboutsummaryrefslogtreecommitdiff
path: root/test/hostlist/hostlisttest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/hostlist/hostlisttest.cpp')
-rw-r--r--test/hostlist/hostlisttest.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/hostlist/hostlisttest.cpp b/test/hostlist/hostlisttest.cpp
new file mode 100644
index 0000000..46f6a85
--- /dev/null
+++ b/test/hostlist/hostlisttest.cpp
@@ -0,0 +1,42 @@
+#include "hostlisttest.h"
+#include <QtTest/QtTest>
+
+void HostlistTest::parseList()
+{
+ //FilterTree tree;
+
+ // load filters
+ QFile hostlist("hostlist.txt");
+ QCOMPARE(hostlist.open(QIODevice::ReadOnly | QIODevice::Text), true);
+ QCOMPARE(loadHostlist(hostlist, &tree), true);
+
+ QCOMPARE(tree.branches().length(), 1);
+}
+
+void HostlistTest::checkRules()
+{
+ // test block
+ QVector<const FilterLeaf *> block = tree.match(QString(), "blockeddomain.com");
+ QCOMPARE(block.length(), 1);
+ QCOMPARE(block.constFirst()->action(), FilterLeaf::Block);
+
+ // test redirect
+ QVector<const FilterLeaf *> redirectResult = tree.match(QString(), "localhost.localdomain");
+ QCOMPARE(redirectResult.length(), 1);
+ QCOMPARE(redirectResult.at(0)->action(), FilterLeaf::Redirect);
+ QCOMPARE(redirectResult.at(0)->redirect(), "127.0.0.1");
+
+ // two domains on one line
+ QVector<const FilterLeaf *> blockFirst = tree.match(QString(), "blockeddomain.first");
+ QCOMPARE(blockFirst.length(), 1);
+ QCOMPARE(blockFirst.constFirst()->action(), FilterLeaf::Block);
+ QVector<const FilterLeaf *> blockSecond = tree.match(QString(), "blockeddomain.second");
+ QCOMPARE(blockSecond.length(), 1);
+ QCOMPARE(blockSecond.constFirst()->action(), FilterLeaf::Block);
+
+ // domain not on list
+ QVector<const FilterLeaf *> missing = tree.match(QString(), "other.domain");
+ QCOMPARE(missing.length(), 0);
+}
+
+QTEST_GUILESS_MAIN(HostlistTest)