aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2019-01-09 19:38:58 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2019-01-09 19:38:58 +0100
commit3d2ae07c455c0e423c64f19e445518427a5684fa (patch)
tree58f6b47c3db33658a6f2e605fd021f08d1fa9964 /test
parentAdd assorted unfished doc files to repo (diff)
downloadsmolbote-3d2ae07c455c0e423c64f19e445518427a5684fa.tar.xz
Rewrite lib/urlfilter
- Make HostList and AdBlockList implementations independent from each other - Move urlfilter tests to lib/urlfilter
Diffstat (limited to 'test')
-rw-r--r--test/adblock.txt4
-rw-r--r--test/adblock/adblocktest.cpp83
-rw-r--r--test/hostlist.txt6
-rw-r--r--test/hostlist/hostlisttest.cpp61
-rw-r--r--test/hostlist/hostlisttest.h23
-rw-r--r--test/matcherbenchmark/matcherbenchmark.cpp91
-rw-r--r--test/matcherbenchmark/matcherbenchmark.h20
-rw-r--r--test/meson.build34
-rw-r--r--test/urlfilter/urlfiltertest.cpp61
9 files changed, 0 insertions, 383 deletions
diff --git a/test/adblock.txt b/test/adblock.txt
deleted file mode 100644
index cd284e8..0000000
--- a/test/adblock.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-/banner/*/img^
-||ads.example.com^
-|http://example.com/|
-/banner\d+/
diff --git a/test/adblock/adblocktest.cpp b/test/adblock/adblocktest.cpp
deleted file mode 100644
index bbcaf0e..0000000
--- a/test/adblock/adblocktest.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "formats/adblockrule.h"
-#include "formats/adblockrule_parse.h"
-#include <gtest/gtest.h>
-
-TEST(Matcher, StringContains) {
- ContentsMatcher<QStringMatcher> matcher("spam-pattern", FilterLeaf::StringContains);
- EXPECT_TRUE(matcher.hasMatch("this string contains a spam-pattern"));
- EXPECT_FALSE(matcher.hasMatch("this string does not contain the pattern"));
-}
-
-TEST(Matcher, StringStartsWith) {
- ContentsMatcher<QStringMatcher> matcher("beginning", FilterLeaf::StringStartsWith);
- EXPECT_TRUE(matcher.hasMatch("beginning this string is the pattern"));
- EXPECT_FALSE(matcher.hasMatch("ending this string is the pattern, the word beginning"));
- EXPECT_FALSE(matcher.hasMatch("this would be a string where the pattern cannot be found"));
-}
-
-TEST(Matcher, StringEndsWith) {
- ContentsMatcher<QStringMatcher> matcher("ending", FilterLeaf::StringEndsWith);
- EXPECT_TRUE(matcher.hasMatch("this string has the proper ending"));
- EXPECT_FALSE(matcher.hasMatch("and this string doesn't"));
-}
-
-TEST(Matcher, StringEquals) {
- ContentsMatcher<QStringMatcher> matcher("string-to-match", FilterLeaf::StringEquals);
- EXPECT_TRUE(matcher.hasMatch("string-to-match"));
- EXPECT_FALSE(matcher.hasMatch("same-len-string"));
- EXPECT_FALSE(matcher.hasMatch("not the string-to-match"));
-}
-
-TEST(Matcher, RegularExpression) {
- ContentsMatcher<QRegularExpression> matcher("banner\\d+", FilterLeaf::RegularExpressionMatch);
- EXPECT_TRUE(matcher.hasMatch("http://another.com/banner123"));
- EXPECT_TRUE(matcher.hasMatch("http://another.com/banner321"));
- EXPECT_FALSE(matcher.hasMatch("http://another.com/banners"));
-
-}
-
-TEST(AdBlockRule, SimpleRule) {
- AdBlockRule *rule = parseRule_adblock("/spamdomain/$domain=spamdomain.com,image");
- EXPECT_TRUE(rule->match(QUrl("subdomain.spamdomain.com")));
-// QCOMPARE(rule->action().first == FilterLeaf::Block, true);
-// QCOMPARE(rule->option(QWebEngineUrlRequestInfo::ResourceTypeImage).value(), true);
-}
-
-TEST(AdBlockRule, AddressPart) {
- AdBlockRule *rule = parseRule_adblock("/banner/*/img^");
- EXPECT_TRUE(rule->match(QUrl("http://example.com/banner/foo/img")));
- EXPECT_TRUE(rule->match(QUrl("http://example.com/banner/foo/bar/img?param")));
- EXPECT_TRUE(rule->match(QUrl("http://example.com/banner//img/foo")));
- EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/img")));
- EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/foo/imgraph")));
- EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/foo/img.gif")));
-}
-
-TEST(AdBlockRule, Domain){
- AdBlockRule *rule = parseRule_adblock("||ads.example.com^");
- EXPECT_TRUE(rule->match(QUrl("http://ads.example.com/foo.gif")));
- EXPECT_TRUE(rule->match(QUrl("http://server1.ads.example.com/foo.gif")));
- EXPECT_TRUE(rule->match(QUrl("https://ads.example.com:8000/")));
- EXPECT_FALSE(rule->match(QUrl("http://ads.example.com.ua/foo.gif")));
- EXPECT_FALSE(rule->match(QUrl("http://example.com/redirect/http://ads.example.com/")));
-}
-
-
-TEST(AdBlockRule, ExactAddress){
- AdBlockRule *rule = parseRule_adblock("|http://example.com/|");
- EXPECT_TRUE(rule->match(QUrl("http://example.com/")));
- EXPECT_FALSE(rule->match(QUrl("http://example.com/foo.gif")));
- EXPECT_FALSE(rule->match(QUrl("http://example.info/redirect/http://example.com/")));
-}
-
-TEST(AdBlockRule, RegularExpression) {
- AdBlockRule *rule = parseRule_adblock("/banner\\d+/");
- EXPECT_TRUE(rule->match(QUrl("http://another.com/banner123")));
- EXPECT_TRUE(rule->match(QUrl("http://another.com/banner321")));
- EXPECT_FALSE(rule->match(QUrl("http://another.com/banners")));
-}
-
-int main(int argc, char **argv) {
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
diff --git a/test/hostlist.txt b/test/hostlist.txt
deleted file mode 100644
index a0b4e5c..0000000
--- a/test/hostlist.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# This is a comment, and after it comes a blank line
-
-127.0.0.1 localhost.localdomain
-
-0.0.0.0 blockeddomain.com
-0.0.0.0 blockeddomain.first blockeddomain.second
diff --git a/test/hostlist/hostlisttest.cpp b/test/hostlist/hostlisttest.cpp
deleted file mode 100644
index 7f5c954..0000000
--- a/test/hostlist/hostlisttest.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "hostlisttest.h"
-#include <QtTest/QtTest>
-
-void HostlistTest::parseList()
-{
- // load filters
- QFile hostlist("hostlist.txt");
- QCOMPARE(hostlist.open(QIODevice::ReadOnly | QIODevice::Text), true);
- QCOMPARE(loadHostlist(hostlist, &tree), true);
-
- // hostlist filters are applied to all domains, so there should only be one branch
- QCOMPARE(tree.branches().length(), 1);
-}
-
-void HostlistTest::checkRules_data()
-{
- QTest::addColumn<QUrl>("domain");
- QTest::addColumn<QUrl>("request");
- QTest::addColumn<int>("matches");
- QTest::addColumn<FilterLeaf::Action>("action");
-
- const QVector<QUrl> domains{ QUrl(), QUrl::fromUserInput("testdomain.host") };
- for(const QUrl &domain : domains) {
- QTest::newRow("block (1 domain per line)") << domain << QUrl::fromUserInput("blockeddomain.com") << 1 << FilterLeaf::Block;
- QTest::newRow("block (2 domains per line #1)") << domain << QUrl::fromUserInput("blockeddomain.first") << 1 << FilterLeaf::Block;
- QTest::newRow("block (2 domains per line #2)") << domain << QUrl::fromUserInput("blockeddomain.second") << 1 << FilterLeaf::Block;
- QTest::newRow("redirect") << domain << QUrl::fromUserInput("localhost.localdomain") << 1 << FilterLeaf::Redirect;
- QTest::newRow("domain not in hostlist") << domain << QUrl::fromUserInput("other.domain") << 0 << FilterLeaf::NotMatched;
- }
-}
-
-void HostlistTest::checkRules()
-{
- QFETCH(QUrl, domain);
- QFETCH(QUrl, request);
- QFETCH(int, matches);
- QFETCH(FilterLeaf::Action, action);
-
- auto result = tree.match(domain, request);
- QCOMPARE(result.length(), matches);
- if(matches > 0)
- QCOMPARE(result.constFirst()->action().first, action);
- if(action == FilterLeaf::Redirect)
- QCOMPARE(result.constFirst()->action().second, QLatin1Literal("127.0.0.1"));
-}
-
-void HostlistTest::benchmark_parse()
-{
- QFile hostlist("hostlist-benchmark.txt");
- if(hostlist.open(QIODevice::ReadOnly | QIODevice::Text)) {
- FilterTree benchmarkTree;
- bool loaded;
- QBENCHMARK {
- loaded = loadHostlist(hostlist, &benchmarkTree);
- }
- QCOMPARE(loaded, true);
- hostlist.close();
- }
-}
-
-QTEST_GUILESS_MAIN(HostlistTest)
diff --git a/test/hostlist/hostlisttest.h b/test/hostlist/hostlisttest.h
deleted file mode 100644
index 96051a9..0000000
--- a/test/hostlist/hostlisttest.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef HOSTLIST_TEST
-#define HOSTLIST_TEST
-
-#include "filtertree.h"
-#include <QObject>
-
-class HostlistTest : public QObject
-{
- Q_OBJECT
-
-private slots:
- void parseList();
-
- void checkRules_data();
- void checkRules();
-
- void benchmark_parse();
-
-private:
- FilterTree tree;
-};
-
-#endif
diff --git a/test/matcherbenchmark/matcherbenchmark.cpp b/test/matcherbenchmark/matcherbenchmark.cpp
deleted file mode 100644
index 84406d5..0000000
--- a/test/matcherbenchmark/matcherbenchmark.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "matcherbenchmark.h"
-#include <string>
-#include <regex>
-#include <regex.h>
-#include <QtTest/QTest>
-#include <QRegExp>
-#include <QRegularExpression>
-#include <QStringMatcher>
-#include <boost/regex.hpp>
-
-void MatcherBenchmark::qstringcontains()
-{
- const QString pattern("spamdomain");
- const QString request("subdomain.spamdomain.com");
-
- QCOMPARE(request.contains(pattern), true);
- QBENCHMARK {
- request.contains(pattern);
- }
-}
-
-void MatcherBenchmark::qstringmatcher()
-{
- const QStringMatcher pattern("spamdomain");
- const QString request("subdomain.spamdomain.com");
-
- QCOMPARE(pattern.indexIn(request) != -1, true);
- QBENCHMARK {
- pattern.indexIn(request);
- }
-}
-
-void MatcherBenchmark::qregexp()
-{
- const QRegExp pattern("spamdomain");
- const QString request("subdomain.spamdomain.com");
-
- QCOMPARE(pattern.indexIn(request) != -1, true);
- QBENCHMARK {
- pattern.indexIn(request);
- }
-}
-
-void MatcherBenchmark::qregularexpressionmatch()
-{
- const QRegularExpression pattern("spamdomain");
- const QString request("subdomain.spamdomain.com");
-
- QCOMPARE(pattern.match(request).hasMatch(), true);
- QBENCHMARK {
- pattern.match(request).hasMatch();
- }
-}
-
-void MatcherBenchmark::stdregex()
-{
- const std::regex pattern("spamdomain");
- const std::string request("subdomain.spamdomain.com");
-
- QCOMPARE(std::regex_search(request, pattern), true);
- QBENCHMARK {
- std::regex_search(request, pattern);
- }
-}
-
-void MatcherBenchmark::cregex()
-{
- regex_t pattern;
- QCOMPARE(regcomp(&pattern, "spamdomain", 0), 0);
- const std::string request("subdomain.spamdomain.com");
-
- QCOMPARE(regexec(&pattern, request.c_str(), 0, NULL, 0), false);
- QBENCHMARK {
- regexec(&pattern, request.c_str(), 0, NULL, 0);
- }
-
- regfree(&pattern);
-}
-
-void MatcherBenchmark::boostregex()
-{
- const boost::regex pattern("spamdomain");
- const std::string request("subdomain.spamdomain.com");
-
- QCOMPARE(boost::regex_search(request, pattern), true);
- QBENCHMARK {
- boost::regex_search(request, pattern);
- }
-}
-
-QTEST_GUILESS_MAIN(MatcherBenchmark)
diff --git a/test/matcherbenchmark/matcherbenchmark.h b/test/matcherbenchmark/matcherbenchmark.h
deleted file mode 100644
index deb4495..0000000
--- a/test/matcherbenchmark/matcherbenchmark.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef MATCHER_BENCHMARK
-#define MATCHER_BENCHMARK
-
-#include <QObject>
-
-class MatcherBenchmark : public QObject
-{
- Q_OBJECT
-
-private slots:
- void qstringcontains();
- void qstringmatcher();
- void qregexp();
- void qregularexpressionmatch();
- void stdregex();
- void cregex();
- void boostregex();
-};
-
-#endif
diff --git a/test/meson.build b/test/meson.build
deleted file mode 100644
index 75e38ed..0000000
--- a/test/meson.build
+++ /dev/null
@@ -1,34 +0,0 @@
-dep_gtest = dependency('gtest')
-
-test('urlfilter-AdBlockList', executable('AdBlockList',
- dependencies: [dep_gtest, dep_qt5, dep_urlfilter],
- sources: ['urlfilter/urlfiltertest.cpp']
-))
-
-# Adblock parsing test
-adblock = executable('AdblockTest',
- dependencies: [dep_gtest, dep_qt5, dep_urlfilter],
- sources: ['adblock/adblocktest.cpp']
-)
-test('urlfilter-adblock', adblock, workdir: meson.current_source_dir())
-
-# Hostlist parsing test
-hostlist = executable('HostlistTest',
- dependencies: [dep_qt5, dep_urlfilter],
- sources: ['hostlist/hostlisttest.cpp', qt5.preprocess(moc_headers: 'hostlist/hostlisttest.h', dependencies: dep_qt5)]
-)
-test('urlfilter-hostlist', hostlist, workdir: meson.current_source_dir())
-
-# matching algorithms benchmark
-matcherbenchmark = executable('MatcherBenchmark',
- dependencies: [dep_qt5, dependency('boost', modules: 'regex')],
- sources: ['matcherbenchmark/matcherbenchmark.cpp', qt5.preprocess(moc_headers: 'matcherbenchmark/matcherbenchmark.h', dependencies: dep_qt5)]
-)
-
-# SingleApplication issue#40 test app
-singleapp = executable('SingleApplication',
- cpp_args: ['-DQAPPLICATION_CLASS=QApplication'],
- dependencies: [dep_qt5, dep_SingleApplication],
- sources: ['singleapplication-40/main.cpp']
-)
-
diff --git a/test/urlfilter/urlfiltertest.cpp b/test/urlfilter/urlfiltertest.cpp
deleted file mode 100644
index f6cdbd4..0000000
--- a/test/urlfilter/urlfiltertest.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "formats/adblockrule.h"
-#include "formats/adblockrule_parse.h"
-#include "formats/adblocklist.h"
-#include <gtest/gtest.h>
-
-AdBlockList list;
-
-TEST(AdBlockList, MetaData) {
- EXPECT_STREQ(qUtf8Printable(list.metadata("Homepage")), "http://example.com/");
- EXPECT_STREQ(qUtf8Printable(list.metadata("Title")), "FooList");
- EXPECT_STREQ(qUtf8Printable(list.metadata("Expires")), "5 days");
- EXPECT_STREQ(qUtf8Printable(list.metadata("Redirect")), "http://example.com/list.txt");
- EXPECT_STREQ(qUtf8Printable(list.metadata("Version")), "1234");
-}
-
-TEST(AdBlockList, Contains) {
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://example.com/banner/foo.png")));
- EXPECT_FALSE(list.match(QUrl(), QUrl("http://example.com/banner/foo/img")));
-
-// AdBlockRule *rule = parseRule_adblock("/banner/*/img^");
-// EXPECT_TRUE(rule->match(QUrl("http://example.com/banner/foo/img")));
-// EXPECT_TRUE(rule->match(QUrl("http://example.com/banner/foo/bar/img?param")));
-// EXPECT_TRUE(rule->match(QUrl("http://example.com/banner//img/foo")));
-// EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/img")));
-// EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/foo/imgraph")));
-// EXPECT_FALSE(rule->match(QUrl("http://example.com/banner/foo/img.gif")));
-}
-
-TEST(AdBlockList, ContainsWildcard) {
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://example.com/banner/ads/img.png")));
-}
-
-TEST(AdBlockList, Domain) {
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://ads.example.com/foo.gif")));
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://server1.ads.example.com/foo.gif")));
- EXPECT_TRUE(list.match(QUrl(), QUrl("https://ads.example.com:8000/")));
- EXPECT_FALSE(list.match(QUrl(), QUrl("http://ads.example.com.ua/foo.gif")));
- EXPECT_FALSE(list.match(QUrl(), QUrl("http://example.com/redirect/http://ads.example.com/")));
-}
-
-TEST(AdBlockList, RegularExpression) {
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://example.com/banner123")));
- EXPECT_TRUE(list.match(QUrl(), QUrl("http://example.com/banner321")));
- EXPECT_FALSE(list.match(QUrl(), QUrl("http://example.com/banners")));
-}
-
-int main(int argc, char **argv) {
- list.parseLine("! Homepage: http://example.com/");
- list.parseLine("! Title: FooList");
- list.parseLine("! Expires: 5 days");
- list.parseLine("! Redirect: http://example.com/list.txt");
- list.parseLine("! Version: 1234");
-
- EXPECT_TRUE(list.parseLine("/banner/foo.png"));
- EXPECT_TRUE(list.parseLine("/banner/*/img.png"));
- EXPECT_TRUE(list.parseLine("||ads.example.com^"));
- EXPECT_TRUE(list.parseLine("/banner\\d+/"));
-
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}