56 lines
2.4 KiB
C++
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
|