blob: 8bf015ebe0e1a4fd32fc9852d6026087140a3928 [file] [log] [blame]
#include "rive/constraints/scrolling/scroll_constraint.hpp"
#include "rive/layout/layout_component_style.hpp"
#include "rive/math/transform_components.hpp"
#include "rive/shapes/rectangle.hpp"
#include "rive/text/text.hpp"
#include "utils/no_op_factory.hpp"
#include "rive_file_reader.hpp"
#include "rive_testing.hpp"
#include <catch.hpp>
#include <cstdio>
TEST_CASE("ScrollConstraint vertical offset", "[layoutscroll]")
{
auto file = ReadRiveFile("assets/layout/layout_scroll_vertical.riv");
auto artboard = file->artboard();
REQUIRE(artboard->find<rive::LayoutComponent>("Content") != nullptr);
REQUIRE(artboard->find<rive::ScrollConstraint>().size() == 1);
REQUIRE(artboard->find<rive::ScrollConstraint>()[0] != nullptr);
auto scroll = artboard->find<rive::ScrollConstraint>()[0];
REQUIRE(scroll->offsetY() == 0);
artboard->advance(0.0f);
// scrollPercentY
scroll->setScrollPercentY(1.0f);
REQUIRE(scroll->scrollPercentY() == 1.0f);
REQUIRE(scroll->offsetY() == -610.0f);
REQUIRE(scroll->clampedOffsetY() == -610.0f);
REQUIRE(scroll->scrollIndex() == 5.6f);
// scrollIndex
scroll->setScrollIndex(2);
REQUIRE(scroll->offsetY() == -220.0f);
REQUIRE(scroll->clampedOffsetY() == -220.0f);
REQUIRE(scroll->scrollIndex() == 2);
REQUIRE(scroll->contentHeight() == 1090.0f);
REQUIRE(scroll->viewportHeight() == 490.0f);
REQUIRE(scroll->maxOffsetY() == -610.0f);
REQUIRE(scroll->clampedOffsetY() == -220.0f);
}
TEST_CASE("ScrollConstraint horizontal offset", "[layoutscroll]")
{
auto file = ReadRiveFile("assets/layout/layout_scroll_horizontal.riv");
auto artboard = file->artboard();
REQUIRE(artboard->find<rive::LayoutComponent>("Content") != nullptr);
REQUIRE(artboard->find<rive::ScrollConstraint>().size() == 1);
REQUIRE(artboard->find<rive::ScrollConstraint>()[0] != nullptr);
auto scroll = artboard->find<rive::ScrollConstraint>()[0];
REQUIRE(scroll->offsetX() == 0);
artboard->advance(0.0f);
// scrollPercentX
scroll->setScrollPercentX(1.0f);
REQUIRE(scroll->scrollPercentX() == 1.0f);
REQUIRE(scroll->offsetX() == -610.0f);
REQUIRE(scroll->clampedOffsetX() == -610.0f);
REQUIRE(scroll->scrollIndex() == 5.6f);
// scrollIndex
scroll->setScrollIndex(2);
REQUIRE(scroll->offsetX() == -220.0f);
REQUIRE(scroll->clampedOffsetX() == -220.0f);
REQUIRE(scroll->scrollIndex() == 2);
REQUIRE(scroll->contentWidth() == 1090.0f);
REQUIRE(scroll->viewportWidth() == 490.0f);
REQUIRE(scroll->maxOffsetX() == -610.0f);
REQUIRE(scroll->clampedOffsetX() == -220.0f);
}