aboutsummaryrefslogtreecommitdiff
path: root/test/hostlist/hostlisttest.cpp
blob: 46f6a85274ca359b2bb532e5c9a44b8ea20781e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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)