Files
2026-09-03 11:52:15 +08:00

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