srctree

Robin Linden parent 4cb78d4f d1e67540
css: Add an always-true media query type

inlinesplit
css/media_query.h added: 24, removed: 3, total 21
@@ -50,6 +50,11 @@ struct PrefersColorScheme {
constexpr bool evaluate(Context const &ctx) const { return ctx.color_scheme == color_scheme; }
};
 
struct True {
[[nodiscard]] bool operator==(True const &) const = default;
constexpr bool evaluate(Context const &) const { return true; }
};
 
struct Width {
int min{};
int max{std::numeric_limits<int>::max()};
@@ -65,9 +70,10 @@ public:
using Context = detail::Context;
using False = detail::False;
using PrefersColorScheme = detail::PrefersColorScheme;
using True = detail::True;
using Width = detail::Width;
 
using Query = std::variant<False, PrefersColorScheme, Width>;
using Query = std::variant<False, PrefersColorScheme, True, Width>;
Query query{};
[[nodiscard]] bool operator==(MediaQuery const &) const = default;
 
@@ -158,6 +164,10 @@ constexpr std::string to_string(MediaQuery::False const &) {
return "false";
}
 
constexpr std::string to_string(MediaQuery::True const &) {
return "true";
}
 
constexpr std::string to_string(MediaQuery::PrefersColorScheme const &q) {
return q.color_scheme == ColorScheme::Light ? "prefers-color-scheme: light" : "prefers-color-scheme: dark";
}
 
css/media_query_test.cpp added: 24, removed: 3, total 21
@@ -62,6 +62,10 @@ void to_string_tests(etest::Suite &s) {
s.add_test("to_string: false", [](etest::IActions &a) {
a.expect_eq(css::to_string(css::MediaQuery::False{}), "false"); //
});
 
s.add_test("to_string: true", [](etest::IActions &a) {
a.expect_eq(css::to_string(css::MediaQuery::True{}), "true"); //
});
}
 
void false_tests(etest::Suite &s) {
@@ -70,6 +74,12 @@ void false_tests(etest::Suite &s) {
});
}
 
void true_tests(etest::Suite &s) {
s.add_test("true", [](etest::IActions &a) {
a.expect(css::MediaQuery::True{}.evaluate({})); //
});
}
 
void prefers_color_scheme_tests(etest::Suite &s) {
s.add_test("prefers-color-scheme: light", [](etest::IActions &a) {
a.expect_eq(css::MediaQuery::parse("(prefers-color-scheme: light)"),
@@ -130,6 +140,7 @@ int main() {
parser_tests(s);
to_string_tests(s);
false_tests(s);
true_tests(s);
prefers_color_scheme_tests(s);
width_tests(s);
return s.run();