#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 std::unique_ptr build_scene(Renderables*... renderables) { typename Scene::Builder builder; (builder.add_renderable(renderables), ...); 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); } } 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 frequency = build_object(); auto power = build_object(); auto time = build_object