#include #include #include #include namespace { using namespace aethera; using namespace aethera::render_2d; template std::unique_ptr build_object(Args&&... args) { typename Object::Builder builder(std::forward(args)...); auto result = builder.build(); if (!result) std::terminate(); return std::move(result).value(); } template void configure_axis(Axis* axis, Axis_Orientation orientation, Point_F position, Axis_Pixel_Length length, Size canvas) { axis->template set<&Abs_Axis::Prop::orientation>(orientation); axis->template set<&Abs_Axis::Prop::position>(position); axis->template set<&Abs_Axis::Prop::pixel_length>(length); axis->template set<&Abs_Axis::Prop::canvas_size>(canvas); } } TEST(plottable_migration, curve_plots_share_partitioned_rendering) { using Scene = Impl; using Frequency = Impl; using Numeric = Impl; using Time = Impl; using Trace = Impl; using Sweep = Impl; initialize_runtime(2); const Size canvas{160, 120}; auto scene = build_object(); auto frequency = build_object(); auto power = build_object(); auto time = build_object