24 #include "cheetah/rfim/policy/test/FlagPolicyTest.h" 25 #include "cheetah/rfim/policy/FlagPolicy.h" 26 #include "panda/CharAsInt.h" 36 FlagPolicyTest::FlagPolicyTest()
41 FlagPolicyTest::~FlagPolicyTest()
45 void FlagPolicyTest::SetUp()
49 void FlagPolicyTest::TearDown()
53 TEST_F(FlagPolicyTest, test_no_marks)
56 typedef data::TimeFrequency<Cpu, uint8_t> TimeFrequencyType;
57 typedef FlagPolicy<TimeFrequencyType> FlagPolicyType;
59 data::DimensionSize<data::Frequency> number_of_channels(10);
60 data::DimensionSize<data::Time> number_of_spectra(5);
61 std::shared_ptr<TimeFrequencyType> tf = std::make_shared<TimeFrequencyType>(number_of_channels, number_of_spectra);
63 const FlagPolicyType policy;
64 auto adapter = policy.adapter(*tf);
65 std::shared_ptr<data::RfimFlaggedData<TimeFrequencyType>> data=adapter.data();
66 TimeFrequencyType& output_data =
static_cast<TimeFrequencyType&
>(*data);
67 ASSERT_EQ(&output_data, tf.get());
70 for(
auto const sample : data->rfi_flags())
72 ASSERT_EQ(
false, (
bool)sample);
76 TEST_F(FlagPolicyTest, test_const_tf_data)
79 typedef const data::TimeFrequency<Cpu, uint8_t> TimeFrequencyType;
80 typedef FlagPolicy<TimeFrequencyType> FlagPolicyType;
82 data::DimensionSize<data::Frequency> number_of_channels(10);
83 data::DimensionSize<data::Time> number_of_spectra(5);
84 std::shared_ptr<TimeFrequencyType> tf = std::make_shared<TimeFrequencyType>(number_of_channels, number_of_spectra);
86 const FlagPolicyType policy;
87 auto adapter = policy.adapter(*tf);
88 std::shared_ptr<data::RfimFlaggedData<TimeFrequencyType>> data=adapter.data();
89 TimeFrequencyType
const& output_data =
static_cast<TimeFrequencyType const&
>(*data);
90 ASSERT_EQ(&output_data, tf.get());
93 TEST_F(FlagPolicyTest, test_mark_bad_channels)
95 typedef uint8_t NumericalType;
96 typedef const data::TimeFrequency<Cpu, NumericalType> TimeFrequencyType;
97 typedef FlagPolicy<TimeFrequencyType> FlagPolicyType;
99 data::DimensionSize<data::Frequency> number_of_channels(10);
100 data::DimensionSize<data::Time> number_of_spectra(5);
101 std::shared_ptr<TimeFrequencyType> tf = std::make_shared<TimeFrequencyType>(number_of_channels, number_of_spectra);
102 TimeFrequencyType tf_copy = *tf;
104 const FlagPolicyType policy;
105 auto adapter = policy.adapter(*tf);
108 for(std::size_t channel_number=0; channel_number < tf->dimension<data::Frequency>(); ++channel_number) {
109 adapter.mark_bad(tf->channel(channel_number));
113 auto tf_copy_it=tf_copy.begin();
114 for(
auto const& s : *tf) {
115 ASSERT_EQ(
static_cast<typename panda::CharAsInt<NumericalType>::type
>(*tf_copy_it),
static_cast<typename panda::CharAsInt<NumericalType>::type
>(s));
120 TEST_F(FlagPolicyTest, test_mark_bad_spectra)
122 typedef uint8_t NumericalType;
123 typedef data::TimeFrequency<Cpu, NumericalType> TimeFrequencyType;
124 typedef FlagPolicy<TimeFrequencyType> FlagPolicyType;
126 data::DimensionSize<data::Frequency> number_of_channels(10);
127 data::DimensionSize<data::Time> number_of_spectra(5);
128 std::shared_ptr<TimeFrequencyType> tf = std::make_shared<TimeFrequencyType>(number_of_channels, number_of_spectra);
129 std::iota(tf->begin(), tf->end(), 0);
131 const FlagPolicyType policy;
132 auto adapter = policy.adapter(*tf);
135 for(std::size_t spectrum_number=0; spectrum_number < tf->dimension<data::Time>(); ++spectrum_number) {
136 adapter.mark_bad(tf->spectrum(spectrum_number));
140 typename panda::CharAsInt<NumericalType>::type i=0;
141 for(
auto const& s : *tf) {
142 ASSERT_EQ(i,
static_cast<typename panda::CharAsInt<NumericalType>::type
>(s));
147 TEST_F(FlagPolicyTest, test_mark_only_bad_channels)
149 typedef uint8_t NumericalType;
150 typedef data::TimeFrequency<Cpu, NumericalType> TimeFrequencyType;
151 typedef FlagPolicy<TimeFrequencyType> PolicyType;
153 data::DimensionSize<data::Frequency> number_of_channels(10);
154 data::DimensionSize<data::Time> number_of_spectra(5);
155 std::shared_ptr<TimeFrequencyType> tf = std::make_shared<TimeFrequencyType>(number_of_channels, number_of_spectra);
156 std::iota(tf->begin(), tf->end(), 0);
159 auto adapter = policy.adapter(*tf);
160 for(data::DimensionIndex<data::Frequency> channel_number(0); channel_number < tf->dimension<data::Frequency>(); ++channel_number) {
161 adapter.mark_bad(tf->channel(channel_number));
165 typename panda::CharAsInt<NumericalType>::type i=0;
166 for(
auto const& s : *tf) {
167 ASSERT_EQ(i,
static_cast<typename panda::CharAsInt<NumericalType>::type
>(s));
171 std::shared_ptr<data::RfimFlaggedData<TimeFrequencyType>> data=adapter.data();
172 for(
auto const& flag : data->rfi_flags()) {
Some limits and constants for FLDO.