24 #include "cheetah/channel_mask/test/ChannelMaskTest.h" 25 #include "cheetah/channel_mask/ChannelMask.h" 26 #include "cheetah/data/TimeFrequency.h" 32 namespace channel_mask {
36 ChannelMaskTest::ChannelMaskTest()
41 ChannelMaskTest::~ChannelMaskTest()
45 void ChannelMaskTest::SetUp()
49 void ChannelMaskTest::TearDown()
53 template<
typename NumericalRep>
58 , _expected_data(data)
61 template<
typename DataType>
62 void operator()(DataType& data) {
64 for(
auto& sample : data)
66 sample = std::numeric_limits<NumericalRep>::max();
69 ASSERT_GE(&*data.begin(), &*_expected_data.begin());
70 ASSERT_LE(&*data.end(), &*_expected_data.end());
73 std::size_t call_count()
const {
return _call_count; }
76 std::size_t _call_count;
80 template<
typename NumericalRep>
95 typedef uint8_t NumericalRep;
99 DataType data(data::DimensionSize<data::Frequency>(10)
100 , data::DimensionSize<data::Time>(6));
101 std::fill(data.begin(), data.end(), std::numeric_limits<NumericalRep>::min());
106 ChannelMaskType mask(config, data);
109 ASSERT_EQ(0U, mask.policy().call_count());
111 typedef data::DimensionSpan<data::Frequency> SpanType;
114 config.flagged_channels().
insert(SpanType(data::DimensionIndex<data::Frequency>(1), data::DimensionSize<data::Frequency>(1)));
115 std::fill(data.begin(), data.end(), std::numeric_limits<NumericalRep>::min());
116 auto channel0=data.channel(0);
117 auto channel1=data.channel(1);
120 ChannelMaskType mask(config, data);
123 ASSERT_EQ(1U, mask.policy().call_count());
125 for(
auto const& sample : channel0)
127 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
130 for(
auto const& sample : channel1)
132 ASSERT_EQ(std::numeric_limits<NumericalRep>::max(), sample);
135 for(
unsigned channel_num=2; channel_num<10; ++channel_num)
137 auto channel=data.channel(channel_num);
138 for(
auto const& sample : channel)
140 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
145 std::fill(data.begin(), data.end(), std::numeric_limits<NumericalRep>::min());
146 config.flagged_channels().
insert(SpanType(data::DimensionIndex<data::Frequency>(4), data::DimensionSize<data::Frequency>(2)));
149 ChannelMaskType mask(config, data);
152 ASSERT_EQ(2U, mask.policy().call_count());
153 for(
auto const& sample : channel0)
155 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
158 for(
auto const& sample : channel1)
160 ASSERT_EQ(std::numeric_limits<NumericalRep>::max(), sample);
163 for(
unsigned channel_num=2; channel_num<4; ++channel_num)
165 auto channel=data.channel(channel_num);
166 for(
auto const& sample : channel)
168 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
172 for(
unsigned channel_num=4; channel_num<6; ++channel_num)
174 auto channel=data.channel(channel_num);
175 for(
auto const& sample : channel)
177 ASSERT_EQ(std::numeric_limits<NumericalRep>::max(), sample) <<
"channel=" << channel_num;
181 for(
unsigned channel_num=6; channel_num<10; ++channel_num)
183 auto channel=data.channel(channel_num);
184 for(
auto const& sample : channel)
186 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
194 typedef uint8_t NumericalRep;
197 typedef data::DimensionSpan<data::Frequency> SpanType;
199 DataType data(data::DimensionSize<data::Frequency>(5)
200 , data::DimensionSize<data::Time>(6));
202 std::fill(data.begin(), data.end(), std::numeric_limits<NumericalRep>::min());
205 config.flagged_channels().
insert(SpanType(data::DimensionIndex<data::Frequency>(8), data::DimensionSize<data::Frequency>(4)));
208 ChannelMaskType mask(config, data);
211 ASSERT_EQ(0U, mask.policy().call_count());
218 typedef uint8_t NumericalRep;
221 typedef data::DimensionSpan<data::Frequency> SpanType;
223 DataType data(data::DimensionSize<data::Frequency>(10)
224 , data::DimensionSize<data::Time>(6));
226 std::fill(data.begin(), data.end(), std::numeric_limits<NumericalRep>::min());
229 config.flagged_channels().
insert(SpanType(data::DimensionIndex<data::Frequency>(8), data::DimensionSize<data::Frequency>(4)));
232 ChannelMaskType mask(config, data);
235 ASSERT_EQ(1U, mask.policy().call_count());
237 for(
unsigned channel_num=0; channel_num<8; ++channel_num)
239 auto channel=data.channel(channel_num);
240 for(
auto const& sample : channel) {
241 ASSERT_EQ(std::numeric_limits<NumericalRep>::min(), sample);
245 for(
unsigned channel_num=8; channel_num<10; ++channel_num)
247 auto channel=data.channel(channel_num);
248 for(
auto const& sample : channel) {
249 ASSERT_EQ(std::numeric_limits<NumericalRep>::max(), sample);
Apply a policy to channels specified in the Config.
void insert(pss::astrotypes::DimensionSpan< data::Frequency > const &span)
insert the span into the glagged list in the appropriate place.
Some limits and constants for FLDO.