24 #include"cheetah/exporters/test/SpCclSigProcTest.h" 25 #include"cheetah/exporters/SpCclSigProc.h" 26 #include"cheetah/utils/JulianClock.h" 27 #include"panda/test/TestDir.h" 36 SpCclSigProcTest::SpCclSigProcTest()
41 SpCclSigProcTest::~SpCclSigProcTest()
45 void SpCclSigProcTest::SetUp()
49 void SpCclSigProcTest::TearDown()
53 TEST_F(SpCclSigProcTest,test_cand_write)
56 panda::test::TestDir tmp_dir;
57 ASSERT_NO_THROW(tmp_dir.create());
58 typedef typename data::SpCcl<uint8_t>::TimeFrequencyType TimeFrequencyType;
59 data::TimeFrequency<Cpu, uint8_t>::TimeType interval(1.0 * boost::units::si::milli * boost::units::si::seconds);
60 data::SpCcl<uint8_t>::BlocksType blocks;
61 std::shared_ptr<TimeFrequencyType> block = std::make_shared<TimeFrequencyType>(data::DimensionSize<data::Time>(100000)
62 ,data::DimensionSize<data::Frequency>(10));
63 (*block).sample_interval(interval);
65 blocks.push_back(block);
66 blocks.push_back(std::make_shared<TimeFrequencyType>(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(10)));
67 data::SpCcl<uint8_t> d1(blocks);
68 typename data::SpCcl<uint8_t>::SpCandidateType::Dm dm(12.0 * data::parsecs_per_cube_cm);
70 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType width(0.001 * boost::units::si::seconds);
72 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
76 for (
auto idx=0; idx<10; ++idx)
78 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
79 candidate.duration_end(2000 * boost::units::si::milli * boost::units::si::seconds);
80 d1.push_back(candidate);
81 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(4.5 * boost::units::si::seconds);
84 data::CandidateWindowConfig candconfig;
86 data::CandidateWindow& window = candconfig.window();
88 window.ms_before(150.5 * boost::units::si::milli * boost::units::si::seconds);
89 window.ms_after(150.5 * boost::units::si::milli * boost::units::si::seconds);
91 SpCclSigProcConfig sigprocconfig;
92 sigprocconfig.window_config(candconfig);
93 sigprocconfig.dir(tmp_dir.dir_name());
95 SpCclSigProc<uint8_t> sigproc(sigprocconfig);
96 ASSERT_NO_THROW(sigproc << d1);
98 boost::filesystem::directory_iterator it_end;
99 auto it = boost::filesystem::directory_iterator(tmp_dir.path());
101 ASSERT_FALSE(it == boost::filesystem::directory_iterator());
104 boost::filesystem::path file = *it;
105 ASSERT_EQ(file.extension().string(),
".fil");
111 ASSERT_EQ(d1.size(),count);
115 TEST_F(SpCclSigProcTest, test_one_candidates_sigproc_file_spanning_many_blocks)
121 panda::test::TestDir tmp_dir;
122 ASSERT_NO_THROW(tmp_dir.create());
123 typedef data::SpCandidate<Cpu, float> SpCandidateType;
124 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFreqType;
125 data::TimeFrequency<Cpu, uint8_t> tf1(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
126 data::TimeFrequency<Cpu, uint8_t> tf2(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
127 data::TimeFrequency<Cpu, uint8_t> tf3(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
128 data::TimeFrequency<Cpu, uint8_t> tf4(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
129 data::TimeFrequency<Cpu, uint8_t> tf5(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
130 data::TimeFrequency<Cpu, uint8_t> tf6(data::DimensionSize<data::Time>(100),data::DimensionSize<data::Frequency>(16));
133 tf1.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
134 tf2.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
135 tf3.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
136 tf4.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
137 tf5.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
138 tf6.sample_interval(data::TimeFrequency<Cpu, uint8_t>::TimeType(1000 * boost::units::si::milli * boost::units::si::seconds));
141 data::SpCcl<uint8_t>::BlocksType tf_v;
143 std::fill(tf1.begin(),tf1.end(),0);
144 std::fill(tf2.begin(),tf2.end(),1);
145 std::fill(tf3.begin(),tf3.end(),2);
146 std::fill(tf4.begin(),tf4.end(),0);
147 std::fill(tf5.begin(),tf5.end(),1);
148 std::fill(tf6.begin(),tf6.end(),2);
151 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf1));
152 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf2));
153 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf3));
154 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf4));
155 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf5));
156 tf_v.push_back(std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(tf6));
160 data::SpCcl<uint8_t> d1(tf_v);
163 typename SpCandidateType::Dm dm(100.0 * data::parsecs_per_cube_cm);
165 SpCandidateType::MsecTimeType width(1 * boost::units::si::milli * boost::units::si::seconds);
167 SpCandidateType::MsecTimeType tstart(5 * boost::units::si::seconds);
171 SpCandidateType::MsecTimeType tend(2000 * boost::units::si::milli * boost::units::si::seconds);
173 typename SpCandidateType::Dm dm1(100.0 * data::parsecs_per_cube_cm);
175 SpCandidateType::MsecTimeType width1(1 * boost::units::si::milli * boost::units::si::seconds);
177 SpCandidateType::MsecTimeType tstart1(305 * boost::units::si::seconds);
181 SpCandidateType::MsecTimeType tend1(2000 * boost::units::si::milli * boost::units::si::seconds);
184 SpCandidateType candidate(dm, tstart, width, sigma, 1);
185 SpCandidateType candidate1(dm1, tstart1, width1, sigma1, 2);
187 candidate.duration_end(tend);
188 candidate1.duration_end(tend1);
189 d1.push_back(candidate);
190 d1.push_back(candidate1);
192 data::CandidateWindowConfig candconfig;
194 data::CandidateWindow& window = candconfig.window();
196 window.ms_before(2000 * boost::units::si::milli * boost::units::si::seconds);
197 window.ms_after(200000 * boost::units::si::milli * boost::units::si::seconds);
199 SpCclSigProcConfig sigprocconfig;
200 sigprocconfig.window_config(candconfig);
201 sigprocconfig.dir(tmp_dir.dir_name());
203 SpCclSigProc<uint8_t> sigproc(sigprocconfig);
204 ASSERT_NO_THROW(sigproc << d1);
206 boost::filesystem::directory_iterator it_end;
207 auto it = boost::filesystem::directory_iterator(tmp_dir.path());
209 ASSERT_FALSE(it == boost::filesystem::directory_iterator());
212 boost::filesystem::path file = *it;
213 ASSERT_EQ(file.extension().string(),
".fil");
217 ASSERT_EQ(d1.size(),count);
Some limits and constants for FLDO.