Files
2026-09-03 12:38:51 +08:00

56 lines
2.4 KiB
C++

#include <render_2D/module/plottable/Spectrum.hpp>
#include <gtest/gtest.h>
namespace {
using namespace aethera;
using namespace aethera::render_2d;
struct Spectrum_Fixture {
Spectrum_Fixture() {
Frequency_Axis::Builder frequency_builder;
frequency_builder
.set<Prop_Tag>(&Abs_Axis::Prop::position, Point_F{10.0, 90.0})
.set<Prop_Tag>(&Abs_Axis::Prop::pixel_length, 100.0)
.set<Prop_Tag>(&Numeric_Axis::Prop::coordinate_range, Axis_Range{0.0, 100.0});
Numeric_Axis::Builder power_builder;
power_builder
.set<Prop_Tag>(&Abs_Axis::Prop::position, Point_F{10.0, 90.0})
.set<Prop_Tag>(&Abs_Axis::Prop::pixel_length, -80.0)
.set<Prop_Tag>(&Abs_Axis::Prop::orientation, Axis_Orientation::vertical)
.set<Prop_Tag>(&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_Axis> frequency;
std::unique_ptr<Numeric_Axis> power;
};
TEST(Spectrum, Imports_One_Frame_And_Builds_Partition_Graph) {
Spectrum_Fixture fixture;
Spectrum::Builder builder(*fixture.frequency, *fixture.power);
builder
.set<Prop_Tag>(&Spectrum::Prop::frequency_range, Axis_Range{0.0, 100.0})
.set<Spectrum_Frame_Tag>([](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<Spectrum_Frame_Tag>([&](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<Prop_Tag>(&Spectrum::Prop::custom_markers, std::vector<Spectrum_Frequency>{10.0, 20.0})
.set<Prop_Tag>(&Spectrum::Prop::selected_marker, 1);
auto spectrum = builder.build();
std::vector<Spectrum_Frequency> markers;
spectrum->get<Prop_Tag>([&](const Spectrum::Prop& properties) { markers = properties.custom_markers; });
EXPECT_EQ(markers, (std::vector<Spectrum_Frequency>{10.0, 20.0}));
}
} // namespace