#include #include namespace { using namespace aethera; using namespace aethera::render_2d; struct Spectrum_Fixture { Spectrum_Fixture() { Frequency_Axis::Builder frequency_builder; frequency_builder .set(&Abs_Axis::Prop::position, Point_F{10.0, 90.0}) .set(&Abs_Axis::Prop::pixel_length, 100.0) .set(&Numeric_Axis::Prop::coordinate_range, Axis_Range{0.0, 100.0}); Numeric_Axis::Builder power_builder; power_builder .set(&Abs_Axis::Prop::position, Point_F{10.0, 90.0}) .set(&Abs_Axis::Prop::pixel_length, -80.0) .set(&Abs_Axis::Prop::orientation, Axis_Orientation::vertical) .set(&Numeric_Axis::Prop::coordinate_range, Axis_Range{-100.0, 0.0}); frequency = frequency_builder.build(); power = power_builder.build(); aethera::detail::model_private(*frequency).advance(); aethera::detail::model_private(*power).advance(); } std::unique_ptr frequency; std::unique_ptr power; }; TEST(Spectrum, Imports_One_Frame_And_Builds_Partition_Graph) { Spectrum_Fixture fixture; Spectrum::Builder builder(*fixture.frequency, *fixture.power); builder .set(&Spectrum::Prop::frequency_range, Axis_Range{0.0, 100.0}) .set([](Spectrum::Frame& frame) { frame.samples = {-100.0, -50.0, 0.0}; }); auto spectrum = builder.build(); auto& private_data = aethera::detail::model_private(*spectrum); private_data.advance(); std::size_t sample_count{}; spectrum->get([&](const Spectrum::Frame& frame) { sample_count = frame.samples.size(); }); EXPECT_EQ(sample_count, 3U); EXPECT_TRUE(private_data.taskflow()); } TEST(Spectrum, Marker_Collection_Remains_One_Property_Source) { Spectrum_Fixture fixture; Spectrum::Builder builder(*fixture.frequency, *fixture.power); builder .set(&Spectrum::Prop::custom_markers, std::vector{10.0, 20.0}) .set(&Spectrum::Prop::selected_marker, 1); auto spectrum = builder.build(); std::vector markers; spectrum->get([&](const Spectrum::Prop& properties) { markers = properties.custom_markers; }); EXPECT_EQ(markers, (std::vector{10.0, 20.0})); } } // namespace