aboutsummaryrefslogtreecommitdiff
path: root/staging/adblock/test/rule.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2020-04-14 22:09:01 +0300
committerAqua-sama <aqua@iserlohn-fortress.net>2020-04-21 20:14:56 +0300
commit68da62a64cd65a8b28dcfe61b2174e55a47b7517 (patch)
treec7058ef19c30c86c0d1626c3fcb691b944f02e02 /staging/adblock/test/rule.cpp
parentAdd tests for MatcherRule and RegexRule (diff)
downloadsmolbote-68da62a64cd65a8b28dcfe61b2174e55a47b7517.tar.xz
Add some FilterList tests
Diffstat (limited to 'staging/adblock/test/rule.cpp')
-rw-r--r--staging/adblock/test/rule.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/staging/adblock/test/rule.cpp b/staging/adblock/test/rule.cpp
new file mode 100644
index 0000000..d192601
--- /dev/null
+++ b/staging/adblock/test/rule.cpp
@@ -0,0 +1,80 @@
+#define CATCH_CONFIG_MAIN
+#include "rule.h"
+#include <catch2/catch.hpp>
+
+SCENARIO("MatcherRule")
+{
+ GIVEN("options with case sensitive pattern")
+ {
+ const AdblockPlus::Options opt { .matchcase=true };
+ const QString patternContains("this string contains the pattern in it");
+ const QString patternBegins("pattern starts this string");
+ const QString patternEnds("this string ends with pattern");
+ const QString patternMissing("and this one does not");
+
+ WHEN("contains")
+ {
+ AdblockPlus::MatcherRule rule("pattern", opt);
+ REQUIRE(rule.shouldBlock());
+
+ THEN("pattern is matched anywhere in the URL")
+ {
+ REQUIRE(rule.hasMatch(&patternContains));
+ REQUIRE(rule.hasMatch(&patternBegins));
+ REQUIRE(rule.hasMatch(&patternEnds));
+ REQUIRE(!rule.hasMatch(&patternMissing));
+ }
+ }
+
+ WHEN("startsWith")
+ {
+ AdblockPlus::MatcherRule rule("pattern", opt, AdblockPlus::MatcherRule::UrlStartsWith);
+ REQUIRE(rule.shouldBlock());
+
+ THEN("pattern is matched if at the start of the URL")
+ {
+ REQUIRE(!rule.hasMatch(&patternContains));
+ REQUIRE(rule.hasMatch(&patternBegins));
+ REQUIRE(!rule.hasMatch(&patternEnds));
+ REQUIRE(!rule.hasMatch(&patternMissing));
+ }
+ }
+
+ WHEN("endsWith")
+ {
+ AdblockPlus::MatcherRule rule("pattern", opt, AdblockPlus::MatcherRule::UrlEndsWith);
+ REQUIRE(rule.shouldBlock());
+
+ THEN("pattern is matched if at the end of the URL")
+ {
+ REQUIRE(!rule.hasMatch(&patternContains));
+ REQUIRE(!rule.hasMatch(&patternBegins));
+ REQUIRE(rule.hasMatch(&patternEnds));
+ REQUIRE(!rule.hasMatch(&patternMissing));
+ }
+ }
+ }
+}
+
+SCENARIO("RegexRule")
+{
+ GIVEN("options with case sensitive pattern")
+ {
+ const AdblockPlus::Options opt { .matchcase=true };
+ const QString patternContains("this string contains the pattern in it");
+ const QString patternMissing("and this one does not");
+
+ WHEN("contains")
+ {
+ AdblockPlus::RegexRule rule("pattern", opt);
+ REQUIRE(rule.shouldBlock());
+
+ THEN("pattern is matched anywhere in the URL")
+ {
+ REQUIRE(rule.hasMatch(&patternContains));
+ REQUIRE(!rule.hasMatch(&patternMissing));
+ }
+ }
+ }
+}
+