From: Vsevolod Stakhov Date: Tue, 16 Mar 2021 20:41:42 +0000 (+0000) Subject: [Project] Css: Add simple selectors unit tests X-Git-Tag: 3.0~574 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e26d49a3abec0bfb4a0986e66193874cde5d94d2;p=thirdparty%2Frspamd.git [Project] Css: Add simple selectors unit tests --- diff --git a/src/libserver/css/css_selector.cxx b/src/libserver/css/css_selector.cxx index a1ed0e234b..48914dc1e8 100644 --- a/src/libserver/css/css_selector.cxx +++ b/src/libserver/css/css_selector.cxx @@ -16,6 +16,8 @@ #include "css_selector.hxx" #include "fmt/core.h" +#define DOCTEST_CONFIG_IMPLEMENTATION_IN_DLL +#include "doctest/doctest.h" namespace rspamd::css { @@ -184,5 +186,35 @@ css_selector::debug_str() const -> std::string return ret; } +TEST_SUITE("css selectors") { + TEST_CASE("simple css selectors") { + const std::vector>> cases{ + {"em", {css_selector::selector_type::SELECTOR_ELEMENT}}, + {"*", {css_selector::selector_type::SELECTOR_ALL}}, + {".class", {css_selector::selector_type::SELECTOR_CLASS}}, + {"#id", {css_selector::selector_type::SELECTOR_ID}}, + {"em,.class,#id", {css_selector::selector_type::SELECTOR_ELEMENT, + css_selector::selector_type::SELECTOR_CLASS, + css_selector::selector_type::SELECTOR_ID}}, + }; + + auto *pool = rspamd_mempool_new(rspamd_mempool_suggest_size(), + "css", 0); + + for (const auto &c : cases) { + auto res = process_selector_tokens(pool, + get_selectors_parser_functor(pool, c.first)); + + CHECK(c.second.size() == res.size()); + + for (auto i = 0; i < c.second.size(); i ++) { + CHECK(res[i]->type == c.second[i]); + } + } + + rspamd_mempool_delete(pool); + } +} + }