// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include #include #include #include #include #include namespace { void checkDisplayedText(std::string &&text, const gui::DigitsContainer &container) { std::for_each(std::crbegin(container.digits), std::crend(container.digits), [text = std::move(text)](gui::Label *label) mutable { if (text.empty()) { EXPECT_STREQ((label->getText()).c_str(), ""); } else { EXPECT_STREQ(label->getText().c_str(), &text.back()); text.pop_back(); } }); EXPECT_TRUE(text.empty()); } template auto initContainer(gui::HBox &box) -> gui::DigitsContainer { auto container = gui::DigitsContainer{N}; for (auto &digit : container.digits) { digit = new gui::Label(&box, 0, 0, 0, 0); } return container; } } // namespace TEST(DigitsContainerTest, setMinutesBox) { using namespace std::string_literals; mockup::fontManager(); std::unordered_map inputAndExpectedOutput{{123, "123"s}, {999, "999"s}, {9999, "999"s}, {1233433, "433"s}, {99, "99"s}, {10, "10"s}, {1, "01"s}, {0, "00"s}}; gui::HBox box{}; auto container = initContainer<3>(box); for (auto ¶m : inputAndExpectedOutput) { container.setMinutesBox(param.first, gui::DimensionsParams{}); checkDisplayedText(std::move(param.second), container); } } TEST(DigitsContainerTest, setSecondsBox) { using namespace std::string_literals; mockup::fontManager(); std::unordered_map inputAndExpectedOutput{ {123, "23"s}, {999, "99"s}, {9999, "99"s}, {1233433, "33"s}, {99, "99"s}, {10, "10"s}, {1, "01"s}, {0, "00"s}}; gui::HBox box{}; auto container = initContainer<2>(box); for (auto ¶m : inputAndExpectedOutput) { container.setSecondsBox(param.first, gui::DimensionsParams{}); checkDisplayedText(std::move(param.second), container); } }