#define CATCH_CONFIG_MAIN #include "filterlist.h" #include using namespace Hostlist; SCENARIO("Hostlist::Rule") { GIVEN("an invalid rule") { const auto rule = Filterlist::parseRule("0.0.0.0 "); REQUIRE(rule.empty()); } GIVEN("127.0.0.1 localhost.localdomain") { auto rule = Filterlist::parseRule("127.0.0.1 localhost.localdomain"); REQUIRE(!rule.empty()); REQUIRE(rule.size() == 1); // note: you need to force it to hash a string, rather than the address itself const auto index = qHash(QString("localhost.localdomain"), 0); REQUIRE(rule[index].domain == "localhost.localdomain"); REQUIRE(rule[index].redirect == "127.0.0.1"); } GIVEN("0.0.0.0 blockeddomain.com") { auto rule = Filterlist::parseRule("0.0.0.0 blockeddomain.com"); REQUIRE(!rule.empty()); REQUIRE(rule.size() == 1); const auto index = qHash(QString("blockeddomain.com"), 0); REQUIRE(rule[index].domain == "blockeddomain.com"); REQUIRE(rule[index].redirect.isEmpty()); ; } GIVEN("0.0.0.0 blockeddomain.first blockeddomain.second") { auto rule = Filterlist::parseRule("0.0.0.0 blockeddomain.first blockeddomain.second"); REQUIRE(!rule.empty()); REQUIRE(rule.size() == 2); { const auto index = qHash(QString("blockeddomain.first"), 0); REQUIRE(rule[index].domain == "blockeddomain.first"); REQUIRE(rule[index].redirect.isEmpty()); } { const auto index = qHash(QString("blockeddomain.second"), 0); REQUIRE(rule[index].domain == "blockeddomain.second"); REQUIRE(rule[index].redirect.isEmpty()); } } }