88 Ptr<SatConstantInterference> interference = CreateObject<SatConstantInterference>();
89 interference->SetAttribute(
"ConstantInterferencePower", DoubleValue(100.0));
92 Ptr<SatInterference::InterferenceChangeEvent>
event =
93 interference->Add(Time(10), 55, Mac48Address::ConvertFrom(Mac48Address::Allocate()));
97 NS_TEST_ASSERT_MSG_EQ(event->GetDuration(), Time(10),
"Event duration is incorrect");
98 NS_TEST_ASSERT_MSG_EQ(event->GetEndTime() - event->GetStartTime(),
100 "Event start time or end time incorrect");
101 NS_TEST_ASSERT_MSG_EQ(event->GetRxPower(), 55,
"Event RX power incorrect");
103 interference->NotifyRxStart(event);
105 std::vector<std::pair<double, double>> power = interference->Calculate(event);
107 NS_TEST_ASSERT_MSG_EQ(1, power.size(),
"Calculated power returned more than one fragment");
108 NS_TEST_ASSERT_MSG_EQ(1.0, power[0].first,
"Calculated power does not span the whole packet");
109 NS_TEST_ASSERT_MSG_EQ(100, power[0].second,
"Calculated power not correct");
111 interference->NotifyRxEnd(event);
114 interference->SetAttribute(
"ConstantInterferencePower", DoubleValue(50.0));
116 interference->NotifyRxStart(event);
118 power = interference->Calculate(event);
120 NS_TEST_ASSERT_MSG_EQ(1, power.size(),
"Calculated power returned more than one fragment");
121 NS_TEST_ASSERT_MSG_EQ(1.0, power[0].first,
"Calculated power does not span the whole packet");
122 NS_TEST_ASSERT_MSG_EQ(50, power[0].second,
"Calculated power not correct");
227 Simulator::Schedule(Time(0),
232 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
233 Simulator::Schedule(Time(10),
238 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
239 Simulator::Schedule(Time(30),
244 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
245 Simulator::Schedule(Time(50),
250 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
251 Simulator::Schedule(Time(10),
256 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
257 Simulator::Schedule(Time(20),
262 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
263 Simulator::Schedule(Time(30),
268 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
269 Simulator::Schedule(Time(50),
274 Mac48Address::ConvertFrom(Mac48Address::Allocate()));
281 double finalDiff = std::abs((
double)995 / (
double)9 -
finalPower[0]);
283 NS_TEST_ASSERT_MSG_LT(finalDiff, 0.0000000000001,
"Final power incorrect");
286 finalDiff = std::abs((
double)196 -
finalPower[1]);
288 NS_TEST_ASSERT_MSG_LT(finalDiff, 0.0000000000001,
"Final power incorrect");
291 finalDiff = std::abs((
double)850 / (
double)6 -
finalPower[2]);
293 NS_TEST_ASSERT_MSG_LT(finalDiff, 0.0000000000001,
"Final power incorrect");
296 finalDiff = std::abs((
double)145 -
finalPower[3]);
298 NS_TEST_ASSERT_MSG_LT(finalDiff, 0.00000000000001,
"Final power incorrect");
300 Simulator::Destroy();