// 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 namespace gui { class TestItem : public gui::Item {}; } // namespace gui TEST_CASE("Set size tests") { auto item = gui::TestItem(); SECTION("default sizes") { REQUIRE(item.area().w == gui::BoundingBox::zero_size); REQUIRE(item.area().h == gui::BoundingBox::zero_size); REQUIRE(item.area().x == gui::BoundingBox::zero_position); REQUIRE(item.area().x == gui::BoundingBox::zero_position); REQUIRE(item.area(gui::Item::Area::Min).w == gui::BoundingBox::zero_size); REQUIRE(item.area(gui::Item::Area::Min).h == gui::BoundingBox::zero_size); REQUIRE(item.area(gui::Item::Area::Min).x == gui::BoundingBox::zero_position); REQUIRE(item.area(gui::Item::Area::Min).x == gui::BoundingBox::zero_position); REQUIRE(item.area(gui::Item::Area::Max).w == gui::BoundingBox::zero_size); REQUIRE(item.area(gui::Item::Area::Max).h == gui::BoundingBox::zero_size); REQUIRE(item.area(gui::Item::Area::Max).x == gui::BoundingBox::zero_position); REQUIRE(item.area(gui::Item::Area::Max).x == gui::BoundingBox::zero_position); } // minimum - affects only minimal size, no callbacks SECTION("set minimum size") { item.setMinimumSize(gui::BoundingBox::min_size, gui::Axis::X); // check if minimum is minimum REQUIRE(item.area(gui::Item::Area::Min).w == gui::BoundingBox::min_size); REQUIRE(item.area(gui::Item::Area::Min).w == gui::BoundingBox::zero_size); // check if minimal element size can be maximal item.setMinimumSize(gui::BoundingBox::max_size, gui::Axis::X); REQUIRE(item.area(gui::Item::Area::Min).w == gui::BoundingBox::max_size); item.setMinimumSize(gui::BoundingBox::zero_size, gui::Axis::X); } // same as above // maximum - affects only minimal size, no callbacks SECTION("set maximim size") { REQUIRE(item.area(gui::Item::Area::Max).w == gui::BoundingBox::zero_size); item.setMaximumSize(gui::BoundingBox::max_size, gui::Axis::X); REQUIRE(item.area(gui::Item::Area::Max).w == gui::BoundingBox::max_size); // reset item max size to minimum - shall be the same as zero_size // size cant be smaller than zero item.setMaximumSize(gui::BoundingBox::min_size, gui::Axis::X); REQUIRE(item.area(gui::Item::Area::Max).w == gui::BoundingBox::zero_size); } SECTION("set position") { item.setPosition(gui::BoundingBox::max_position, gui::Axis::X); REQUIRE(item.area().x == gui::BoundingBox::max_position); REQUIRE(item.area().x > gui::BoundingBox::min_position); item.setPosition(gui::BoundingBox::min_position, gui::Axis::X); REQUIRE(item.area().x == gui::BoundingBox::min_position); REQUIRE(item.area().x < gui::BoundingBox::max_position); item.setPosition(gui::BoundingBox::zero_position, gui::Axis::X); REQUIRE(item.area().x == gui::BoundingBox::zero_position); REQUIRE(item.area().x > gui::BoundingBox::min_position); REQUIRE(item.area().x < gui::BoundingBox::max_position); } }