diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4df92193..f5e52f59 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -82,6 +82,7 @@ unit_test(components/command_line unit_tests SOURCES components/command_line.cpp utils/string.cpp) +unit_test(components/bar unit_tests) # Compile all unit tests with 'make all_unit_tests' add_custom_target("all_unit_tests" DEPENDS ${unit_tests}) diff --git a/tests/unit_tests/components/bar.cpp b/tests/unit_tests/components/bar.cpp new file mode 100644 index 00000000..8b98b262 --- /dev/null +++ b/tests/unit_tests/components/bar.cpp @@ -0,0 +1,47 @@ +#include "common/test.hpp" +#include "components/bar.hpp" + +using namespace polybar; + + + +/** + * \brief Class for parameterized tests on geom_format_to_pixels + * + * The first element in the tuple is the expected return value, the second + * value is the format string. The max value is always 1000 + */ +class GeomFormatToPixelsTest : + public ::testing::Test, + public ::testing::WithParamInterface> {}; + +vector> to_pixels_no_offset_list = { + {1000, "100%"}, + {0, "0%"}, + {1000, "150%"}, + {100, "10%"}, + {0, "0"}, + {1234, "1234"}, + {1.234, "1.234"}, +}; + +vector> to_pixels_with_offset_list = { + {1000, "100%:-0"}, + {1000, "100%:+0"}, + {1010, "100%:+10"}, + {990, "100%:-10"}, + {10, "0%:+10"}, + {1000, "99%:+10"}, +}; + +INSTANTIATE_TEST_CASE_P(NoOffset, GeomFormatToPixelsTest, + ::testing::ValuesIn(to_pixels_no_offset_list),); + +INSTANTIATE_TEST_CASE_P(WithOffset, GeomFormatToPixelsTest, + ::testing::ValuesIn(to_pixels_with_offset_list),); + +TEST_P(GeomFormatToPixelsTest, correctness) { + double exp = GetParam().first; + std::string str = GetParam().second; + EXPECT_DOUBLE_EQ(exp, geom_format_to_pixels(str, 1000)); +}