Files
pymol-open-source/layerCTest/Test_ScrollBar.cpp
2021-04-28 05:26:26 -04:00

106 lines
2.4 KiB
C++

#include <algorithm>
#include <iterator>
#include "CGO.h"
#include "ScrollBar.h"
#include "Test.h"
using namespace pymol::test;
namespace
{
ScrollBar getValuedScrollBar()
{
ScrollBar sb{nullptr, true};
sb.setLimits(11, 1); // m_MaxValue == 10
return sb;
}
} // namespace
static
bool operator==(const BlockRect& lhs, const BlockRect& rhs)
{
return lhs.top == rhs.top && lhs.left == rhs.left &&
lhs.bottom == rhs.bottom && lhs.right == rhs.right;
}
TEST_CASE("ScrollBar Default", "[ScrollBar]")
{
ScrollBar sb(nullptr, true);
REQUIRE(sizeof(sb) == sizeof(ScrollBar));
}
TEST_CASE("ScrollBar getValue", "[ScrollBar]")
{
ScrollBar sb(nullptr, true);
REQUIRE(pymol::almost_equal(sb.getValue(), 0.0f));
}
TEST_CASE("ScrollBar setLimits & isMaxed", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
REQUIRE(!sb.isMaxed());
REQUIRE(pymol::almost_equal(sb.getValue(), 0.0f));
}
TEST_CASE("ScrollBar maxOut", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
sb.maxOut();
REQUIRE(sb.isMaxed());
REQUIRE(pymol::almost_equal(sb.getValue(), 10.0f));
}
TEST_CASE("ScrollBar setValue (Clamped)", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
sb.setValue(-2.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 0.0f));
sb.setValue(8.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 8.0f));
sb.setValue(12.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 10.0f));
}
TEST_CASE("ScrollBar setValue (Unclamped)", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
sb.setValueNoCheck(-2.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), -2.0f));
sb.setValueNoCheck(8.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 8.0f));
sb.setValueNoCheck(12.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 12.0f));
}
TEST_CASE("ScrollBar moveBy", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
sb.moveBy(123.0f);
REQUIRE(pymol::almost_equal(sb.getValue(), 10.0f));
}
TEST_CASE("ScrollBar setBox", "[ScrollBar]")
{
auto sb = getValuedScrollBar();
BlockRect br{5, 10, 15, 20};
sb.setBox(5, 10, 15, 20);
REQUIRE(br == sb.rect);
}
/**
* TODO: Member functions to test
*
* int release(int, int, int, int) override;
* int click(int, int, int, int) override;
* int drag(int, int, int) override;
* int draw(CGO*) override
* int resphape(int, int) override
*
* void fill(CGO*);
* void drawNoFill(CGO*);
* int grabbed();
* void drawHandle(float, CGO*);
*/