24 #include "cheetah/sigproc/test/SigProcFileStreamTest.h" 25 #include "cheetah/sigproc/SigProcFileStream.h" 26 #include "pss/astrotypes/sigproc/FileReader.h" 28 #include "panda/DataManager.h" 29 #include "panda/test/gtest.h" 37 SigProcFileStreamTest::SigProcFileStreamTest()
42 SigProcFileStreamTest::~SigProcFileStreamTest()
46 void SigProcFileStreamTest::SetUp()
50 void SigProcFileStreamTest::TearDown()
54 TEST_F(SigProcFileStreamTest, test_empty_file_name)
57 SigProcFileStream stream(config);
58 panda::DataManager<SigProcFileStream> chunk_manager(stream);
59 ASSERT_TRUE(stream.process());
62 TEST_F(SigProcFileStreamTest, test_single_valid_file_defined)
65 config.set_sigproc_files(panda::test::test_file(
"valid_sigproc.sigproc"));
66 SigProcFileStream stream(config);
67 panda::DataManager<SigProcFileStream> chunk_manager(stream);
68 ASSERT_FALSE(stream.process());
70 std::tuple<std::shared_ptr<data::TimeFrequency<Cpu, uint8_t>>> data_tuple=chunk_manager.next();
71 data::TimeFrequency<Cpu, uint8_t>& data = *(std::get<0>(data_tuple));
72 ASSERT_EQ(250368U, data.number_of_spectra());
73 ASSERT_EQ(std::size_t(2), data.number_of_channels());
76 TEST_F(SigProcFileStreamTest, test_single_invalid_file_defined)
79 config.set_sigproc_files(panda::test::test_file(
"invalid_sigproc.sigproc"));
80 SigProcFileStream stream(config);
81 panda::DataManager<SigProcFileStream> chunk_manager(stream);
82 ASSERT_THROW(stream.process(), panda::Error);
83 ASSERT_TRUE(stream.process());
86 TEST_F(SigProcFileStreamTest, test_invalid_file_followed_by_valid_file)
89 config.set_sigproc_files(std::vector<std::string>({panda::test::test_file(
"invalid_sigproc.sigproc"), panda::test::test_file(
"valid_sigproc.sigproc") }));
90 SigProcFileStream stream(config);
91 panda::DataManager<SigProcFileStream> chunk_manager(stream);
92 ASSERT_THROW(stream.process(), panda::Error);
93 ASSERT_FALSE(stream.process());
96 TEST_F(SigProcFileStreamTest, test_chunk_samples_from_config_preset)
99 std::string sigproc_file { panda::test::test_file(
"valid_sigproc.sigproc") };
100 pss::astrotypes::sigproc::FileReader<> sfr(sigproc_file);
101 std::size_t number_of_spectra=sfr.number_of_data_points()/sfr.header().number_of_channels();
103 for(
unsigned i=1; i<7; ++i) {
106 config.set_sigproc_files(sigproc_file);
107 config.set_chunk_samples(i);
109 SigProcFileStream stream(config);
110 panda::DataManager<SigProcFileStream> chunk_manager(stream);
111 ASSERT_FALSE(stream.process()) << i;
112 std::size_t number_of_chunks = number_of_spectra/i;
113 for(
unsigned chunk=0; chunk<number_of_chunks; ++chunk) {
114 std::tuple<std::shared_ptr<data::TimeFrequency<Cpu, uint8_t>>> data = chunk_manager.next();
115 ASSERT_EQ(i, std::get<0>(data)->number_of_spectra());
116 ASSERT_EQ(std::size_t(2), std::get<0>(data)->number_of_channels());
117 ASSERT_EQ( std::get<0>(data)->end() - std::get<0>(data)->begin(), i * std::get<0>(data)->number_of_channels());
120 std::size_t remainder = number_of_spectra - number_of_chunks * i;
122 std::tuple<std::shared_ptr<data::TimeFrequency<Cpu, uint8_t>>> data = chunk_manager.next();
123 ASSERT_EQ(remainder, (std::size_t)std::get<0>(data)->number_of_spectra());
124 ASSERT_EQ(std::size_t(2), std::get<0>(data)->number_of_channels());
125 ASSERT_NE(0.0, *std::get<0>(data)->begin());
Some limits and constants for FLDO.