author | Peter D. Barnes, Jr. <barnes26@llnl.gov> |
Fri, 26 Sep 2014 15:51:00 -0700 | |
changeset 10968 | 2d29fee2b7b8 |
parent 10553 | 8c347165bb56 |
permissions | -rw-r--r-- |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
2 |
/* |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
3 |
* Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
4 |
* |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
8 |
* |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
13 |
* |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
17 |
* |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
18 |
* Author: Nicola Baldo <nbaldo@cttc.es> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
19 |
*/ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
20 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
21 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
22 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
23 |
#include "ns3/log.h" |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
24 |
#include "ns3/test.h" |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
25 |
#include <ns3/building-position-allocator.h> |
10081
f0879d02aafd
Renaming of file buildings-mobility-model in mobility-building-info
Marco Miozzo <marco.miozzo@cttc.es>
parents:
10080
diff
changeset
|
26 |
#include <ns3/mobility-building-info.h> |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
27 |
#include <ns3/constant-position-mobility-model.h> |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
28 |
#include <ns3/mobility-model.h> |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
29 |
#include <ns3/building.h> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
30 |
#include <ns3/buildings-helper.h> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
31 |
#include <ns3/mobility-helper.h> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
32 |
#include <ns3/simulator.h> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
33 |
#include <map> |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
34 |
|
10553
8c347165bb56
Move tests outside ns3 namespace
Vedran Miletić <rivanvx@gmail.com>
parents:
10081
diff
changeset
|
35 |
using namespace ns3; |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
36 |
|
10968
2d29fee2b7b8
[Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
10553
diff
changeset
|
37 |
NS_LOG_COMPONENT_DEFINE ("BuildingPositionAllocatorTest"); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
38 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
39 |
struct Room |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
40 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
41 |
Room (uint32_t xx, uint32_t yy, uint32_t zz); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
42 |
uint32_t x; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
43 |
uint32_t y; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
44 |
uint32_t z; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
45 |
}; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
46 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
47 |
Room::Room (uint32_t xx, uint32_t yy, uint32_t zz) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
48 |
: x (xx), |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
49 |
y (yy), |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
50 |
z (zz) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
51 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
52 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
53 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
54 |
bool |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
55 |
operator < (const Room& a, const Room& b) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
56 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
57 |
return ( (a.x < b.x) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
58 |
|| ( (a.x == b.x) && (a.y < b.y) ) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
59 |
|| ( (a.x == b.x) && (a.y == b.y) && (a.z < b.z) )); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
60 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
61 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
62 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
63 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
64 |
class RandomRoomPositionAllocatorTestCase : public TestCase |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
65 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
66 |
public: |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
67 |
RandomRoomPositionAllocatorTestCase (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
68 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
69 |
private: |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
70 |
virtual void DoRun (void); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
71 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
72 |
}; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
73 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
74 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
75 |
RandomRoomPositionAllocatorTestCase::RandomRoomPositionAllocatorTestCase () |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
76 |
: TestCase ("RandomRoom, 12 rooms, 24 nodes") |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
77 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
78 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
79 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
80 |
void |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
81 |
RandomRoomPositionAllocatorTestCase::DoRun () |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
82 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
83 |
NS_LOG_FUNCTION (this); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
84 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
85 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
86 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
87 |
NS_LOG_LOGIC ("create building"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
88 |
Ptr<Building> b = CreateObject<Building> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
89 |
b->SetBoundaries (Box (1, 3, 1, 4, 1, 3)); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
90 |
b->SetNFloors (2); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
91 |
b->SetNRoomsX (2); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
92 |
b->SetNRoomsY (3); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
93 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
94 |
NodeContainer nodes; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
95 |
nodes.Create (24); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
96 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
97 |
MobilityHelper mobility; |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
98 |
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
99 |
Ptr<PositionAllocator> positionAlloc = CreateObject<RandomRoomPositionAllocator> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
100 |
mobility.SetPositionAllocator (positionAlloc); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
101 |
mobility.Install (nodes); |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
102 |
BuildingsHelper::Install (nodes); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
103 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
104 |
BuildingsHelper::MakeMobilityModelConsistent (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
105 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
106 |
std::map<Room, uint32_t> roomCounter; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
107 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
108 |
for (NodeContainer::Iterator it = nodes.Begin (); it != nodes.End (); ++it) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
109 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
110 |
Ptr<MobilityModel> mm = (*it)->GetObject<MobilityModel> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
111 |
NS_ASSERT_MSG (mm, "no mobility model aggregated to this node"); |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
112 |
Ptr<MobilityBuildingInfo> bmm = mm->GetObject<MobilityBuildingInfo> (); |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
113 |
NS_ASSERT_MSG (bmm, "MobilityBuildingInfo has not been aggregated to this node mobility model"); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
114 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
115 |
NS_TEST_ASSERT_MSG_EQ (bmm->IsIndoor (), true, "node should be indoor"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
116 |
Room r (bmm->GetRoomNumberX (), bmm->GetRoomNumberY (), bmm->GetFloorNumber ()); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
117 |
++(roomCounter[r]); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
118 |
|
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
119 |
Vector p = mm->GetPosition (); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
120 |
NS_TEST_ASSERT_MSG_GT (p.x, bmm->GetRoomNumberX (), "wrong x value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
121 |
NS_TEST_ASSERT_MSG_LT (p.x, bmm->GetRoomNumberX () + 1, "wrong x value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
122 |
NS_TEST_ASSERT_MSG_GT (p.y, bmm->GetRoomNumberY (), "wrong y value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
123 |
NS_TEST_ASSERT_MSG_LT (p.y, bmm->GetRoomNumberY () + 1, "wrong y value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
124 |
NS_TEST_ASSERT_MSG_GT (p.z, bmm->GetFloorNumber (), "wrong z value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
125 |
NS_TEST_ASSERT_MSG_LT (p.z, bmm->GetFloorNumber () + 1, "wrong z value"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
126 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
127 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
128 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
129 |
for (std::map<Room, uint32_t>::iterator it = roomCounter.begin (); it != roomCounter.end (); ++it) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
130 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
131 |
// random selection is done without replacement until the set of |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
132 |
// eligible room is empty, at which point the set is filled |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
133 |
// again. Hence with 24 nodes and 12 rooms we expect 2 nodes per room |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
134 |
NS_TEST_ASSERT_MSG_EQ (it->second, 2, "expected 2 nodes per room"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
135 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
136 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
137 |
NS_TEST_ASSERT_MSG_EQ (roomCounter.size (), 12, "expected 12 rooms allocated"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
138 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
139 |
Simulator::Destroy (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
140 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
141 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
142 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
143 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
144 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
145 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
146 |
class SameRoomPositionAllocatorTestCase : public TestCase |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
147 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
148 |
public: |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
149 |
SameRoomPositionAllocatorTestCase (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
150 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
151 |
private: |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
152 |
virtual void DoRun (void); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
153 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
154 |
}; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
155 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
156 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
157 |
SameRoomPositionAllocatorTestCase::SameRoomPositionAllocatorTestCase () |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
158 |
: TestCase ("SameRoom 48 nodes") |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
159 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
160 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
161 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
162 |
void |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
163 |
SameRoomPositionAllocatorTestCase::DoRun () |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
164 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
165 |
NS_LOG_FUNCTION (this); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
166 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
167 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
168 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
169 |
NS_LOG_LOGIC ("create building"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
170 |
Ptr<Building> b = CreateObject<Building> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
171 |
b->SetBoundaries (Box (-10, -6, 20, 26, -1, 5)); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
172 |
b->SetNFloors (2); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
173 |
b->SetNRoomsX (2); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
174 |
b->SetNRoomsY (3); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
175 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
176 |
NodeContainer nodes; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
177 |
nodes.Create (24); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
178 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
179 |
MobilityHelper mobility; |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
180 |
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
181 |
Ptr<PositionAllocator> positionAlloc = CreateObject<RandomRoomPositionAllocator> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
182 |
mobility.SetPositionAllocator (positionAlloc); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
183 |
mobility.Install (nodes); |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
184 |
BuildingsHelper::Install (nodes); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
185 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
186 |
NodeContainer copyNodes; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
187 |
copyNodes.Create (48); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
188 |
positionAlloc = CreateObject<SameRoomPositionAllocator> (nodes); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
189 |
mobility.SetPositionAllocator (positionAlloc); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
190 |
mobility.Install (copyNodes); |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
191 |
BuildingsHelper::Install (copyNodes); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
192 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
193 |
BuildingsHelper::MakeMobilityModelConsistent (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
194 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
195 |
std::map<Room, uint32_t> roomCounter; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
196 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
197 |
for (NodeContainer::Iterator it = copyNodes.Begin (); it != copyNodes.End (); ++it) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
198 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
199 |
Ptr<MobilityModel> mm = (*it)->GetObject<MobilityModel> (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
200 |
NS_ASSERT_MSG (mm, "no mobility model aggregated to this node"); |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
201 |
Ptr<MobilityBuildingInfo> bmm = mm->GetObject<MobilityBuildingInfo> (); |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9266
diff
changeset
|
202 |
NS_ASSERT_MSG (bmm, "MobilityBuildingInfo has not been aggregated to this node mobility model"); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
203 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
204 |
NS_TEST_ASSERT_MSG_EQ (bmm->IsIndoor (), true, "node should be indoor"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
205 |
Room r (bmm->GetRoomNumberX (), bmm->GetRoomNumberY (), bmm->GetFloorNumber ()); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
206 |
++(roomCounter[r]); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
207 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
208 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
209 |
for (std::map<Room, uint32_t>::iterator it = roomCounter.begin (); it != roomCounter.end (); ++it) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
210 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
211 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
212 |
NS_TEST_ASSERT_MSG_EQ (it->second, 4, "expected 4 nodes per room"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
213 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
214 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
215 |
NS_TEST_ASSERT_MSG_EQ (roomCounter.size (), 12, "expected 12 rooms allocated"); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
216 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
217 |
Simulator::Destroy (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
218 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
219 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
220 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
221 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
222 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
223 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
224 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
225 |
class BuildingPositionAllocatorTestSuite : public TestSuite |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
226 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
227 |
public: |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
228 |
BuildingPositionAllocatorTestSuite (); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
229 |
}; |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
230 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
231 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
232 |
BuildingPositionAllocatorTestSuite::BuildingPositionAllocatorTestSuite () |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
233 |
: TestSuite ("building-position-allocator", UNIT) |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
234 |
{ |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
235 |
NS_LOG_FUNCTION (this); |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
236 |
|
9266
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
8822
diff
changeset
|
237 |
AddTestCase (new RandomRoomPositionAllocatorTestCase, TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
8822
diff
changeset
|
238 |
AddTestCase (new SameRoomPositionAllocatorTestCase, TestCase::QUICK); |
8767
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
239 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
240 |
} |
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
241 |
|
76e71d929a3f
added building-position-allocator test
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
242 |
static BuildingPositionAllocatorTestSuite buildingsPositionAllocatorTestSuiteInstance; |