diff --git a/src/common/propagation-loss-model-test-suite.cc b/src/common/propagation-loss-model-test-suite.cc index 22fd658b2..fc8e332c5 100644 --- a/src/common/propagation-loss-model-test-suite.cc +++ b/src/common/propagation-loss-model-test-suite.cc @@ -367,42 +367,59 @@ LogDistancePropagationLossModelTestCase::DoRun (void) return GetErrorStatus (); } -struct MatrixPropagationLossModelTestCase : public TestCase +class MatrixPropagationLossModelTestCase : public TestCase { - MatrixPropagationLossModelTestCase () : TestCase ("Test MatrixPropagationLossModel") {} - - bool DoRun () - { - Ptr n[3]; - Ptr m[3]; - for (int i = 0; i < 3; ++i) - { - n[i] = CreateObject (); - m[i] = CreateObject (); - n[i]->AggregateObject (m[i]); - } - - MatrixPropagationLossModel loss; - // no loss by default - loss.SetDefaultLoss (0); - // -10 dB for 0 -> 1 and 1 -> 0 - loss.SetLoss (n[0], n[1], 10); - // -30 dB from 0 to 2 and -100 dB from 2 to 0 - loss.SetLoss (n[0], n[2], 30, /*symmetric = */false); - loss.SetLoss (n[2], n[0], 100, /*symmetric = */false); - // default from 1 to 2 - - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[0], m[1]), -10, "Loss 0 -> 1 incorrect"); - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[1], m[0]), -10, "Loss 1 -> 0 incorrect"); - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[0], m[2]), -30, "Loss 0 -> 2 incorrect"); - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[2], m[0]), -100, "Loss 2 -> 0 incorrect"); - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[1], m[2]), 0, "Loss 1 -> 2 incorrect"); - NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[2], m[1]), 0, "Loss 2 -> 1 incorrect"); - - return GetErrorStatus (); - } +public: + MatrixPropagationLossModelTestCase (); + virtual ~MatrixPropagationLossModelTestCase (); + +private: + virtual bool DoRun (void); }; +MatrixPropagationLossModelTestCase::MatrixPropagationLossModelTestCase () + : TestCase ("Test MatrixPropagationLossModel") +{ +} + +MatrixPropagationLossModelTestCase::~MatrixPropagationLossModelTestCase () +{ +} + +bool +MatrixPropagationLossModelTestCase::DoRun (void) +{ + Ptr n[3]; + Ptr m[3]; + for (int i = 0; i < 3; ++i) + { + n[i] = CreateObject (); + m[i] = CreateObject (); + n[i]->AggregateObject (m[i]); + } + + MatrixPropagationLossModel loss; + // no loss by default + loss.SetDefaultLoss (0); + // -10 dB for 0 -> 1 and 1 -> 0 + loss.SetLoss (n[0], n[1], 10); + // -30 dB from 0 to 2 and -100 dB from 2 to 0 + loss.SetLoss (n[0], n[2], 30, /*symmetric = */false); + loss.SetLoss (n[2], n[0], 100, /*symmetric = */false); + // default from 1 to 2 + + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[0], m[1]), -10, "Loss 0 -> 1 incorrect"); + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[1], m[0]), -10, "Loss 1 -> 0 incorrect"); + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[0], m[2]), -30, "Loss 0 -> 2 incorrect"); + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[2], m[0]), -100, "Loss 2 -> 0 incorrect"); + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[1], m[2]), 0, "Loss 1 -> 2 incorrect"); + NS_TEST_ASSERT_MSG_EQ (loss.CalcRxPower (0, m[2], m[1]), 0, "Loss 2 -> 1 incorrect"); + + Simulator::Destroy (); + + return GetErrorStatus (); +} + class PropagationLossModelsTestSuite : public TestSuite { public: