24 #include "cheetah/data/test/TimeFrequencyContainerTest.h" 25 #include "cheetah/data/TimeFrequencyContainer.h" 34 TimeFrequencyContainerTest::TimeFrequencyContainerTest()
39 TimeFrequencyContainerTest::~TimeFrequencyContainerTest()
43 void TimeFrequencyContainerTest::SetUp()
47 void TimeFrequencyContainerTest::TearDown()
51 TEST_F(TimeFrequencyContainerTest, test_unequal_channels)
53 typedef TimeFrequency<Cpu, float> TimeFrequencyType;
54 data::DimensionSize<data::Frequency> number_of_channels(1000);
55 TimeFrequencyType::TimeType interval(10 * data::milliseconds);
56 data::DimensionSize<data::Time> n_samples(100);
57 std::shared_ptr<TimeFrequencyType> time_freq_1=std::make_shared<TimeFrequencyType>(n_samples, number_of_channels);
58 time_freq_1->sample_interval(interval);
59 time_freq_1->start_time(TimeFrequencyType::TimePointType(std::chrono::seconds(10)));
60 std::shared_ptr<TimeFrequencyType> time_freq_2=std::make_shared<TimeFrequencyType>(n_samples, number_of_channels - 1);
61 time_freq_2->sample_interval(interval);
62 time_freq_2->start_time(time_freq_1->end_time() + interval);
64 TimeFrequencyContainer<Cpu, float> tfs;
66 ASSERT_THROW(tfs.add(time_freq_2), panda::Error);
69 TEST_F(TimeFrequencyContainerTest, test_iterator)
71 typedef TimeFrequency<Cpu, float> TimeFrequencyType;
72 DimensionSize<Frequency> number_of_channels(1000);
73 TimeFrequencyType::TimeType interval(10 * data::milliseconds);
74 std::shared_ptr<TimeFrequencyType> time_freq_1=std::make_shared<TimeFrequencyType>(data::DimensionSize<data::Time>(100), number_of_channels);
75 time_freq_1->sample_interval(interval);
76 time_freq_1->start_time(TimeFrequencyType::TimePointType(std::chrono::seconds(10)));
77 ASSERT_EQ(time_freq_1->end_time(), time_freq_1->start_time() + 99 * interval);
78 std::shared_ptr<TimeFrequencyType> time_freq_2=std::make_shared<TimeFrequencyType>(data::DimensionSize<data::Time>(500), number_of_channels);
79 time_freq_2->sample_interval(interval);
80 time_freq_2->start_time(time_freq_1->end_time() + interval);
81 std::shared_ptr<TimeFrequencyType> time_freq_3=std::make_shared<TimeFrequencyType>(data::DimensionSize<data::Time>(1000), number_of_channels);
82 time_freq_3->sample_interval(interval);
83 time_freq_3->start_time(time_freq_2->end_time() + interval + interval);
85 TimeFrequencyContainer<Cpu, float> tfs;
87 tfs.add(*time_freq_2);
88 tfs.add(*time_freq_3);
90 std::size_t channel_count=0;
91 std::size_t td_count=0;
92 std::vector<TimeFrequencyType::TimePointType> time_points;
93 auto channel_end_handler = [&]() { ++channel_count; };
94 auto time_discontinuity_handler = [&](TimeFrequencyType::TimePointType
const& tp,
typename TimeFrequencyType::TimeType
const&) {
96 time_points.push_back(tp);
98 auto it = tfs.begin(channel_end_handler, time_discontinuity_handler);
105 static_assert(std::is_same<decltype(*it),
const float&>::value,
"unexpected type from iterator dereference");
108 ASSERT_EQ(time_freq_1->data_size() + time_freq_2->data_size() + time_freq_3->data_size(), count);
109 ASSERT_EQ(channel_count, time_freq_1->number_of_spectra() + time_freq_2->number_of_spectra() + time_freq_3->number_of_spectra());
110 ASSERT_EQ(2U, td_count);
111 ASSERT_EQ(time_points.size(), td_count);
112 ASSERT_EQ(time_freq_1->start_time(), time_points[0]);
113 ASSERT_EQ(time_freq_3->start_time(), time_points[1]);
Some limits and constants for FLDO.