27 lines
1.4 KiB
C++
27 lines
1.4 KiB
C++
#include <render_2D/module/plottable/axis/Axis.hpp>
|
|
#include <gtest/gtest.h>
|
|
namespace {
|
|
struct Test_Axis : aethera::Def<Test_Axis, aethera::render_2d::Abs_Axis> {
|
|
struct Prop : Prev<aethera::Prop_Tag> {
|
|
aethera::render_2d::Axis_Range range{0.0, 20.0};
|
|
};
|
|
struct Private : Prev_Private {
|
|
[[nodiscard]] aethera::render_2d::Axis_Range coordinate_range() const override { return static_cast<const Prop&>(*concurrent<aethera::Prop_Tag>().internal.use()).range; }
|
|
[[nodiscard]] aethera::render_2d::Axis_Coordinate tick_step(aethera::render_2d::Axis_Range range) const override { return nice_tick_step(range); }
|
|
[[nodiscard]] std::string tick_label(aethera::render_2d::Axis_Coordinate tick) const override { return localized_number(tick, 2, {}); }
|
|
};
|
|
};
|
|
|
|
TEST(Axis_Model, Inherited_Private_Uses_Final_Endpoint_Attachment) {
|
|
Test_Axis::Builder builder;
|
|
builder
|
|
.set<aethera::Prop_Tag>(&aethera::render_2d::Abs_Axis::Prop::position, aethera::render_2d::Point_F{10.0, 5.0})
|
|
.set<aethera::Prop_Tag>(&aethera::render_2d::Abs_Axis::Prop::pixel_length, 200.0)
|
|
.set<aethera::Prop_Tag>(&Test_Axis::Prop::range, aethera::render_2d::Axis_Range{0.0, 20.0});
|
|
auto axis = builder.build();
|
|
EXPECT_EQ(axis->coordinate_range(), (aethera::render_2d::Axis_Range{0.0, 20.0}));
|
|
EXPECT_DOUBLE_EQ(axis->coordinate_to_pixel(10.0), 110.0);
|
|
EXPECT_EQ(axis->tick_label(2.5), "2.5");
|
|
}
|
|
} // namespace
|