21 #include "ns3/simulator.h"
22 #include "ns3/boolean.h"
23 #include "ns3/config.h"
24 #include "ns3/waypoint-mobility-model.h"
33 :
TestCase (lazy ?
"Check Waypoint Mobility Model LAZY notification accuracy"
34 :
"Check Waypoint Mobility Model NON-LAZY notification accuracy"),
49 virtual void DoRun (
void);
50 virtual void DoTeardown (
void);
51 void ForceUpdates (
void);
58 mobilityStack.clear();
69 mobilityFactory.
SetTypeId (
"ns3::WaypointMobilityModel");
73 for (uint32_t i = 0; i < mobilityCount; i++)
79 mobilityStack.push_back (model);
86 for ( uint32_t iw = 0; iw < waypointCount; ++iw )
88 wpt.
time += Seconds (1.0);
89 waypoints.push_back (wpt);
93 std::vector<Ptr<MobilityModel> >::iterator i;
94 for (i = mobilityStack.begin (); i != mobilityStack.end (); ++i)
98 for ( std::deque<Waypoint>::iterator
w = waypoints.begin ();
w != waypoints.end (); ++
w )
105 for (
double updateTime = 0.5; updateTime <= ((double)waypointCount + 1.5); updateTime += 1.0 )
110 Config::Connect (
"/NodeList/*/$ns3::WaypointMobilityModel/CourseChange",
120 std::vector<Ptr<MobilityModel> >::iterator i;
121 for (i = mobilityStack.begin (); i != mobilityStack.end (); ++i)
140 "Course didn't change on one second time boundary with NON-LAZY notifcations");
146 "Course didn't change between waypoints with LAZY notifications");
Simulation virtual time values and global simulation resolution.
smart pointer class similar to boost::intrusive_ptr
WaypointMobilityModelTestSuite g_waypointMobilityModelTestSuite
void AddWaypoint(const Waypoint &waypoint)
static void Run(void)
Run the simulation until one of:
void SetTypeId(TypeId tid)
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
static void CourseChangeCallback(std::string path, Ptr< const MobilityModel > model)
void Connect(std::string path, const CallbackBase &cb)
virtual ~WaypointMobilityModelNotifyTest()
Keep track of the current position and velocity of an object.
double GetSeconds(void) const
Ptr< Object > Create(void) const
virtual void DoRun(void)
Implementation to actually run this TestCase.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
void Set(std::string name, const AttributeValue &value)
static Time Now(void)
Return the "current simulation time".
instantiate subclasses of ns3::Object.
WaypointMobilityModelNotifyTest(bool lazy)
static void Stop(void)
If an event invokes this method, it will be the last event scheduled by the Simulator::run method bef...
void Initialize(void)
This method calls the virtual DoInitialize method on all the objects aggregated to this object...
void CourseChangeCallback(std::string path, Ptr< const MobilityModel > model)
Waypoint-based mobility model.
std::deque< Waypoint > waypoints
virtual void DoTeardown(void)
Implementation to do any local setup required for this TestCase.
WaypointMobilityModelTestSuite()
std::vector< Ptr< MobilityModel > > mobilityStack
Ptr< T > GetObject(void) const