From 36d4aee4900d9e029c17dbb09a899c7013b7d137 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Sun, 30 Jan 2022 14:33:41 +0100 Subject: [PATCH] [Test] Expand the CI test for theme. --- test/theme-parser-test.c | 226 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) diff --git a/test/theme-parser-test.c b/test/theme-parser-test.c index aa123e63..8c1398e7 100644 --- a/test/theme-parser-test.c +++ b/test/theme-parser-test.c @@ -253,6 +253,41 @@ START_TEST(test_properties_distance_em_linestyle) { ck_assert_int_eq(p.left.style, ROFI_HL_DASH); } END_TEST +START_TEST(test_properties_distance_ch) { + widget wid; + wid.name = "blaat"; + wid.state = NULL; + rofi_theme_parse_string("* { test: 10ch;}"); + ck_assert_ptr_nonnull(rofi_theme); + RofiDistance d = (RofiDistance){ + {1, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID}; + RofiPadding pi = (RofiPadding){d, d, d, d}; + RofiPadding p = rofi_theme_get_padding(&wid, "test", pi); + ck_assert_int_eq(p.left.base.distance, 10); + ck_assert_int_eq(p.left.base.type, ROFI_PU_CH); + ck_assert_int_eq(p.left.style, ROFI_HL_SOLID); +} +END_TEST +START_TEST(test_properties_distance_ch_linestyle) { + widget wid; + wid.name = "blaat"; + wid.state = NULL; + rofi_theme_parse_string("* { sol: 1.3ch solid; dash: 1.5ch dash;}"); + ck_assert_ptr_nonnull(rofi_theme); + RofiDistance d = (RofiDistance){ + {1, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID}; + RofiPadding pi = (RofiPadding){d, d, d, d}; + RofiPadding p = rofi_theme_get_padding(&wid, "sol", pi); + ck_assert_double_eq_tol(p.left.base.distance, 1.3, REAL_COMPARE_DELTA); + ck_assert_int_eq(p.left.base.type, ROFI_PU_CH); + ck_assert_int_eq(p.left.style, ROFI_HL_SOLID); + + p = rofi_theme_get_padding(&wid, "dash", pi); + ck_assert_double_eq_tol(p.left.base.distance, 1.5, REAL_COMPARE_DELTA); + ck_assert_int_eq(p.left.base.type, ROFI_PU_CH); + ck_assert_int_eq(p.left.style, ROFI_HL_DASH); +} +END_TEST START_TEST(test_properties_distance_px) { widget wid; wid.name = "blaat"; @@ -321,6 +356,42 @@ START_TEST(test_properties_distance_percent_linestyle) { ck_assert_int_eq(p.left.style, ROFI_HL_DASH); } END_TEST + +START_TEST(test_properties_distance_mm) { + widget wid; + wid.name = "blaat"; + wid.state = NULL; + rofi_theme_parse_string("* { test: 10mm;}"); + ck_assert_ptr_nonnull(rofi_theme); + RofiDistance d = (RofiDistance){ + {1, ROFI_PU_EM, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_DASH}; + RofiPadding pi = (RofiPadding){d, d, d, d}; + RofiPadding p = rofi_theme_get_padding(&wid, "test", pi); + ck_assert_double_eq_tol(p.left.base.distance, 10.0, REAL_COMPARE_DELTA); + ck_assert_int_eq(p.left.base.type, ROFI_PU_MM); + ck_assert_int_eq(p.left.style, ROFI_HL_SOLID); +} +END_TEST + +START_TEST(test_properties_distance_mm_linestyle) { + widget wid; + wid.name = "blaat"; + wid.state = NULL; + rofi_theme_parse_string("* { sol: 10mm solid; dash: 10mm dash;}"); + ck_assert_ptr_nonnull(rofi_theme); + RofiDistance d = (RofiDistance){ + {1, ROFI_PU_EM, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_DASH}; + RofiPadding pi = (RofiPadding){d, d, d, d}; + RofiPadding p = rofi_theme_get_padding(&wid, "sol", pi); + ck_assert_double_eq_tol(p.left.base.distance, 10.0, REAL_COMPARE_DELTA); + ck_assert_int_eq(p.left.base.type, ROFI_PU_MM); + ck_assert_int_eq(p.left.style, ROFI_HL_SOLID); + p = rofi_theme_get_padding(&wid, "dash", pi); + ck_assert_double_eq_tol(p.left.base.distance, 10, REAL_COMPARE_DELTA); + ck_assert_int_eq(p.left.base.type, ROFI_PU_MM); + ck_assert_int_eq(p.left.style, ROFI_HL_DASH); +} +END_TEST START_TEST(test_properties_position) { widget wid; wid.name = "blaat"; @@ -1276,6 +1347,139 @@ START_TEST(test_prepare_array) { } END_TEST +START_TEST(test_prepare_math_floor) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 1024 floor 30 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1020); +} +END_TEST +START_TEST(test_prepare_math_ceil) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 1024 ceil 30 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1050); +} +END_TEST +START_TEST(test_prepare_math_round) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 1036 round 30 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1050); +} +END_TEST +START_TEST(test_prepare_math_add) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 1036 + 30 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1066); +} +END_TEST +START_TEST(test_prepare_math_subtract) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 1036 - 30 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1006); +} +END_TEST +START_TEST(test_prepare_math_multiply) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 256*4 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 1024); +} +END_TEST + +START_TEST(test_prepare_math_min) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 256 min 4 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 4); +} +END_TEST + +START_TEST(test_prepare_math_max) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("window { width: calc( 256 max 4 );}"); + ck_assert_ptr_nonnull(rofi_theme); + // ck_assert_ptr_null ( rofi_theme->widgets ); + ck_assert_ptr_null(rofi_theme->properties); + ck_assert_ptr_null(rofi_theme->parent); + ck_assert_str_eq(rofi_theme->name, "Root"); + RofiDistance l = rofi_theme_get_distance(&wid, "width", 0); + int dist = distance_get_pixel(l, ROFI_ORIENTATION_HORIZONTAL); + ck_assert_int_eq(dist, 256); +} +END_TEST +START_TEST(test_prepare_default) { + widget wid; + wid.name = "window"; + wid.state = ""; + rofi_theme_parse_string("@import \"default\""); + + ck_assert_ptr_null(error_msg); + ck_assert_ptr_nonnull(rofi_theme); +} +END_TEST + START_TEST(test_prepare_path) { char *current_dir = g_get_current_dir(); ck_assert_ptr_nonnull(current_dir); @@ -1348,10 +1552,15 @@ static Suite *theme_parser_suite(void) { tcase_add_checked_fixture(tc_prop_distance, theme_parser_setup, theme_parser_teardown); tcase_add_test(tc_prop_distance, test_properties_distance_em); + tcase_add_test(tc_prop_distance, test_properties_distance_ch); tcase_add_test(tc_prop_distance, test_properties_distance_px); tcase_add_test(tc_prop_distance, test_properties_distance_percent); tcase_add_test(tc_prop_distance, test_properties_distance_em_linestyle); + tcase_add_test(tc_prop_distance, test_properties_distance_ch_linestyle); tcase_add_test(tc_prop_distance, test_properties_distance_px_linestyle); + + tcase_add_test(tc_prop_distance, test_properties_distance_mm); + tcase_add_test(tc_prop_distance, test_properties_distance_mm_linestyle); tcase_add_test(tc_prop_distance, test_properties_distance_percent_linestyle); suite_add_tcase(s, tc_prop_distance); @@ -1487,6 +1696,23 @@ static Suite *theme_parser_suite(void) { tcase_add_test(tc_prepare_array, test_prepare_array); suite_add_tcase(s, tc_prepare_array); } + { + TCase *tc_prepare_default = tcase_create("default"); + tcase_add_test(tc_prepare_default, test_prepare_default); + suite_add_tcase(s, tc_prepare_default); + } + { + TCase *tc_prepare_math = tcase_create("math"); + tcase_add_test(tc_prepare_math, test_prepare_math_add); + tcase_add_test(tc_prepare_math, test_prepare_math_subtract); + tcase_add_test(tc_prepare_math, test_prepare_math_multiply); + tcase_add_test(tc_prepare_math, test_prepare_math_floor); + tcase_add_test(tc_prepare_math, test_prepare_math_ceil); + tcase_add_test(tc_prepare_math, test_prepare_math_round); + tcase_add_test(tc_prepare_math, test_prepare_math_min); + tcase_add_test(tc_prepare_math, test_prepare_math_max); + suite_add_tcase(s, tc_prepare_math); + } return s; }