diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-04-14 22:09:01 +0300 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-04-21 20:14:56 +0300 |
commit | 68da62a64cd65a8b28dcfe61b2174e55a47b7517 (patch) | |
tree | c7058ef19c30c86c0d1626c3fcb691b944f02e02 /staging/adblock/test/rule.cpp | |
parent | Add tests for MatcherRule and RegexRule (diff) | |
download | smolbote-68da62a64cd65a8b28dcfe61b2174e55a47b7517.tar.xz |
Add some FilterList tests
Diffstat (limited to 'staging/adblock/test/rule.cpp')
-rw-r--r-- | staging/adblock/test/rule.cpp | 80 |
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)); + } + } + } +} + |