24 #include "cheetah/exporters/test/SpCclSpeadStreamerTest.h" 25 #include "cheetah/exporters/SpCclSpeadStreamer.h" 26 #include "cheetah/exporters/SpCclSpeadReader.h" 27 #include "cheetah/utils/ModifiedJulianClock.h" 38 SpCclSpeadStreamerTest<T>::SpCclSpeadStreamerTest()
44 SpCclSpeadStreamerTest<T>::~SpCclSpeadStreamerTest()
49 void SpCclSpeadStreamerTest<T>::SetUp()
54 void SpCclSpeadStreamerTest<T>::TearDown()
58 template<
typename TimeFrequencyType>
63 , _writer(config, _engine)
64 , _reader_config(reader_config)
85 while(_rdata.size() < _expected || _rdata[_expected-1].get() ==
nullptr) {
86 _reader_config.engine().poll_one();
89 return *_rdata[_expected -2];
93 panda::ProcessingEngine _engine;
94 exporters::SpCclSpeadStreamer _writer;
95 SpCclSpeadReaderConfig
const& _reader_config;
96 SpCclSpeadReader<TimeFrequencyType, std::function<void(std::shared_ptr<data::SpCandidateData<TimeFrequencyType>>
const&)>> _reader;
97 std::vector<std::shared_ptr<data::SpCandidateData<TimeFrequencyType>>> _rdata;
98 std::size_t _expected;
103 panda::ProcessingEngine engine(1);
105 exporters::SpCclSpeadStreamer writer(config, engine);
110 typedef TypeParam NumericalRep;
112 typedef typename SpCclType::TimeFrequencyType TimeFrequencyType;
113 typedef typename SpCclType::SpCandidateType Candidate;
116 typename utils::ModifiedJulianClock::time_point start_time(utils::julian_day(2458179.500000));
118 typename SpCclType::BlocksType blocks;
119 std::shared_ptr<TimeFrequencyType> block = std::make_shared<TimeFrequencyType>(
120 data::DimensionSize<data::Time>(1000)
121 , data::DimensionSize<data::Frequency>(10));
123 block->start_time(static_cast<typename TimeFrequencyType::TimePointType>(start_time));
124 block->sample_interval(0.001 * boost::units::si::seconds);
125 blocks.push_back(block);
126 blocks.push_back(std::make_shared<TimeFrequencyType>( data::DimensionSize<data::Time>(100)
127 , data::DimensionSize<data::Frequency>(10)));
131 std::size_t cand_duration = 40;
132 typename Candidate::MsecTimeType cand1_tend(cand_duration * block->sample_interval());
133 typename Candidate::Dm cand1_dm(00.0 * data::parsecs_per_cube_cm);
134 Candidate candidate_1( cand1_dm
135 ,
typename Candidate::MsecTimeType(0.0 * boost::units::si::seconds)
136 ,
typename Candidate::MsecTimeType(0.001 * boost::units::si::seconds)
140 data->push_back(candidate_1);
144 SpCclSpeadReaderConfig reader_config;
148 auto const& rdata = exporter.get();
152 ASSERT_LE(rdata.data_size(), data->tf_blocks()[0]->data_size());
153 ASSERT_EQ(rdata.number_of_channels(), block->number_of_channels());
154 ASSERT_EQ(rdata.sample_interval(), block->sample_interval());
155 ASSERT_EQ(rdata.number_of_spectra(), cand_duration);
158 ASSERT_EQ(rdata.number_of_candidates(), data->size());
159 for(std::size_t i=0; i< rdata.number_of_candidates(); ++i) {
160 ASSERT_EQ((rdata).candidate(i).dm(), (*data)[i].dm());
161 ASSERT_EQ((rdata).candidate(i).sigma(), (*data)[i].sigma());
162 ASSERT_EQ((rdata).candidate(i).width(), (*data)[i].width());
163 ASSERT_EQ((rdata).candidate(i).duration(), (*data)[i].tend());
165 ASSERT_EQ((rdata).candidate(0).start_time(), block->start_time());
170 typedef TypeParam NumericalRep;
172 typedef typename SpCclType::TimeFrequencyType TimeFrequencyType;
173 typedef typename SpCclType::SpCandidateType Candidate;
176 typename utils::ModifiedJulianClock::time_point start_time(utils::julian_day(2458179.500000));
178 typename SpCclType::BlocksType blocks;
179 std::shared_ptr<TimeFrequencyType> block = std::make_shared<TimeFrequencyType>(
180 data::DimensionSize<data::Time>(1000)
181 , data::DimensionSize<data::Frequency>(10));
183 block->start_time(static_cast<typename TimeFrequencyType::TimePointType>(start_time));
184 block->sample_interval(0.001 * boost::units::si::seconds);
185 blocks.push_back(block);
186 std::shared_ptr<TimeFrequencyType> block_2 = std::make_shared<TimeFrequencyType>(
187 data::DimensionSize<data::Time>(100)
188 , data::DimensionSize<data::Frequency>(10));
190 block_2->start_time(block->end_time() + block->sample_interval());
191 block_2->sample_interval(0.001 * boost::units::si::seconds);
192 blocks.push_back(block_2);
196 std::size_t cand_duration = block->number_of_spectra() + 10;
197 typename Candidate::MsecTimeType cand1_tstart(10.0 * block->sample_interval());
198 typename Candidate::MsecTimeType cand1_tend(cand_duration * block->sample_interval()); cand1_tend += cand1_tstart;
199 typename Candidate::Dm cand1_dm(100.0 * data::parsecs_per_cube_cm);
200 Candidate candidate_1( cand1_dm
202 ,
typename Candidate::MsecTimeType(0.1 * boost::units::si::seconds)
206 data->push_back(candidate_1);
209 SpCclSpeadReaderConfig reader_config;
213 auto const& rdata = exporter.get();
217 ASSERT_EQ(rdata.number_of_channels(), block->number_of_channels());
218 ASSERT_EQ(rdata.sample_interval(), block->sample_interval());
219 ASSERT_EQ(rdata.number_of_spectra(), cand_duration);
225 typedef TypeParam NumericalRep;
227 typedef typename SpCclType::TimeFrequencyType TimeFrequencyType;
228 typedef typename SpCclType::SpCandidateType Candidate;
231 typename utils::ModifiedJulianClock::time_point start_time(utils::julian_day(2458179.500000));
233 typename SpCclType::BlocksType blocks;
234 std::shared_ptr<TimeFrequencyType> block = std::make_shared<TimeFrequencyType>(
235 data::DimensionSize<data::Time>(1000)
236 , data::DimensionSize<data::Frequency>(10));
238 block->start_time(static_cast<typename TimeFrequencyType::TimePointType>(start_time));
239 block->sample_interval(0.001 * boost::units::si::seconds);
240 blocks.push_back(block);
241 std::shared_ptr<TimeFrequencyType> block_2 = std::make_shared<TimeFrequencyType>(
242 data::DimensionSize<data::Time>(600)
243 , data::DimensionSize<data::Frequency>(10));
245 block_2->start_time(block->end_time() + block->sample_interval());
246 block_2->sample_interval(0.001 * boost::units::si::seconds);
247 blocks.push_back(block_2);
251 std::size_t cand_duration = 40;
252 typename Candidate::MsecTimeType cand1_tend(cand_duration * block->sample_interval());
253 typename Candidate::Dm cand1_dm(10.0 * data::parsecs_per_cube_cm);
254 Candidate candidate_1( cand1_dm
255 ,
typename Candidate::MsecTimeType(0.0 * boost::units::si::seconds)
256 ,
typename Candidate::MsecTimeType(0.001 * boost::units::si::seconds)
260 data->push_back(candidate_1);
262 Candidate candidate_2( cand1_dm
263 , cand1_tend - static_cast<typename Candidate::MsecTimeType>(block->sample_interval())
264 ,
typename Candidate::MsecTimeType(0.001 * boost::units::si::seconds)
265 , cand1_tend +
static_cast<typename Candidate::MsecTimeType
>(block->sample_interval())
268 data->push_back(candidate_2);
272 SpCclSpeadReaderConfig reader_config;
276 auto const& rdata = exporter.get();
280 ASSERT_EQ(rdata.number_of_channels(), block->number_of_channels());
281 ASSERT_LE(rdata.data_size(), data->tf_blocks()[0]->data_size());
282 ASSERT_EQ(rdata.sample_interval(), block->sample_interval());
283 ASSERT_EQ(rdata.number_of_spectra(), cand_duration + 1);
286 ASSERT_EQ(rdata.number_of_candidates(), data->size());
287 for(std::size_t i=0; i< rdata.number_of_candidates(); ++i) {
288 ASSERT_EQ(rdata.candidate(i).dm(), (*data)[i].dm());
289 ASSERT_EQ(rdata.candidate(i).sigma(), (*data)[i].sigma());
290 ASSERT_EQ(rdata.candidate(i).width(), (*data)[i].width());
291 ASSERT_EQ(rdata.candidate(i).duration(), (*data)[i].tend());
293 ASSERT_EQ(rdata.candidate(0).start_time(), block->start_time());
294 ASSERT_EQ(rdata.candidate(1).start_time(), data->start_time(candidate_2));
Some limits and constants for FLDO.
SpCandidates associated with a single data chank.