A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
test-angles.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2011 CTTC
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Nicola Baldo <nbaldo@cttc.es>
19
*/
20
21
#include <ns3/log.h>
22
#include <ns3/test.h>
23
#include <ns3/antenna-model.h>
24
#include <cmath>
25
#include <string>
26
#include <iostream>
27
#include <sstream>
28
29
namespace
ns3 {
30
31
class
OneVectorConstructorTestCase
:
public
TestCase
32
{
33
public
:
34
static
std::string
BuildNameString
(
Vector
v);
35
OneVectorConstructorTestCase
(
Vector
v,
Angles
a);
36
37
private
:
38
virtual
void
DoRun
(
void
);
39
40
Vector
m_v
;
41
Angles
m_a
;
42
};
43
44
std::string
OneVectorConstructorTestCase::BuildNameString
(
Vector
v)
45
{
46
std::ostringstream oss;
47
oss <<
" v = "
<< v;
48
return
oss.str ();
49
}
50
51
52
OneVectorConstructorTestCase::OneVectorConstructorTestCase
(
Vector
v,
Angles
a)
53
:
TestCase
(BuildNameString (v)),
54
m_v (v),
55
m_a (a)
56
{
57
}
58
59
void
60
OneVectorConstructorTestCase::DoRun
()
61
{
62
Angles
a (
m_v
);
63
NS_TEST_EXPECT_MSG_EQ_TOL
( a.
phi
,
m_a
.
phi
, 1e-10,
"incorrect phi"
);
64
NS_TEST_EXPECT_MSG_EQ_TOL
( a.
theta
,
m_a
.
theta
, 1e-10,
"incorrect theta"
);
65
}
66
67
68
69
70
71
class
TwoVectorsConstructorTestCase
:
public
TestCase
72
{
73
public
:
74
static
std::string
BuildNameString
(
Vector
v,
Vector
o);
75
TwoVectorsConstructorTestCase
(
Vector
v,
Vector
o,
Angles
a);
76
77
private
:
78
virtual
void
DoRun
(
void
);
79
80
Vector
m_v
;
81
Vector
m_o
;
82
Angles
m_a
;
83
};
84
85
std::string
TwoVectorsConstructorTestCase::BuildNameString
(
Vector
v,
Vector
o)
86
{
87
std::ostringstream oss;
88
oss <<
" v = "
<< v <<
", o = "
<< o;
89
return
oss.str ();
90
}
91
92
93
TwoVectorsConstructorTestCase::TwoVectorsConstructorTestCase
(
Vector
v,
Vector
o,
Angles
a)
94
:
TestCase
(BuildNameString (v, o)),
95
m_v (v),
96
m_o (o),
97
m_a (a)
98
{
99
}
100
101
void
102
TwoVectorsConstructorTestCase::DoRun
()
103
{
104
Angles
a (
m_v
,
m_o
);
105
NS_TEST_EXPECT_MSG_EQ_TOL
( a.
phi
,
m_a
.
phi
, 1e-10,
"incorrect phi"
);
106
NS_TEST_EXPECT_MSG_EQ_TOL
( a.
theta
,
m_a
.
theta
, 1e-10,
"incorrect theta"
);
107
}
108
109
110
111
112
113
114
class
AnglesTestSuite
:
public
TestSuite
115
{
116
public
:
117
AnglesTestSuite
();
118
};
119
120
AnglesTestSuite::AnglesTestSuite
()
121
:
TestSuite
(
"angles"
, UNIT)
122
{
123
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 0, 0),
Angles
(0, M_PI_2)));
124
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, 0, 0),
Angles
(M_PI, M_PI_2)));
125
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 1, 0),
Angles
(M_PI_2, M_PI_2)));
126
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, -1, 0),
Angles
(-M_PI_2, M_PI_2)));
127
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 0, 1),
Angles
(0, 0)));
128
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 0, -1),
Angles
(0, M_PI)));
129
130
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(2, 0, 0),
Angles
(0, M_PI_2)));
131
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-2, 0, 0),
Angles
(M_PI, M_PI_2)));
132
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 2, 0),
Angles
(M_PI_2, M_PI_2)));
133
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, -2, 0),
Angles
(-M_PI_2, M_PI_2)));
134
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 0, 2),
Angles
(0, 0)));
135
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 0, -2),
Angles
(0, M_PI)));
136
137
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 0, 1),
Angles
(0, M_PI_4)));
138
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 0, -1),
Angles
(0, 3*M_PI_4)));
139
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 1, 0),
Angles
(M_PI_4, M_PI_2)));
140
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, -1, 0),
Angles
(-M_PI_4, M_PI_2)));
141
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, 0, 1),
Angles
(M_PI, M_PI_4)));
142
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, 0, -1),
Angles
(M_PI, 3*M_PI_4)));
143
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, 1, 0),
Angles
(3*M_PI_4, M_PI_2)));
144
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, -1, 0),
Angles
(-3*M_PI_4, M_PI_2)));
145
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 1, 1),
Angles
(M_PI_2, M_PI_4)));
146
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, 1, -1),
Angles
(M_PI_2, 3*M_PI_4)));
147
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, -1, 1),
Angles
(-M_PI_2, M_PI_4)));
148
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(0, -1, -1),
Angles
(-M_PI_2, 3*M_PI_4)));
149
150
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 1, sqrt (2)),
Angles
(M_PI_4, M_PI_4)));
151
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, 1, -sqrt (2)),
Angles
(M_PI_4, 3*M_PI_4)));
152
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(1, -1, sqrt (2)),
Angles
(-M_PI_4, M_PI_4)));
153
AddTestCase
(
new
OneVectorConstructorTestCase
(
Vector
(-1, 1, sqrt (2)),
Angles
(3*M_PI_4, M_PI_4)));
154
155
156
157
158
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 0, 0),
Vector
(0, 0, 0),
Angles
(0, M_PI_2)));
159
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 0, 0),
Vector
(0, 0, 0),
Angles
(M_PI, M_PI_2)));
160
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 1, 0),
Vector
(0, 0, 0),
Angles
(M_PI_2, M_PI_2)));
161
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -1, 0),
Vector
(0, 0, 0),
Angles
(-M_PI_2, M_PI_2)));
162
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 0, 1),
Vector
(0, 0, 0),
Angles
(0, 0)));
163
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 0, -1),
Vector
(0, 0, 0),
Angles
(0, M_PI)));
164
165
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(2, 0, 0),
Vector
(0, 0, 0),
Angles
(0, M_PI_2)));
166
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-2, 0, 0),
Vector
(0, 0, 0),
Angles
(M_PI, M_PI_2)));
167
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 2, 0),
Vector
(0, 0, 0),
Angles
(M_PI_2, M_PI_2)));
168
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -2, 0),
Vector
(0, 0, 0),
Angles
(-M_PI_2, M_PI_2)));
169
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 0, 2),
Vector
(0, 0, 0),
Angles
(0, 0)));
170
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 0, -2),
Vector
(0, 0, 0),
Angles
(0, M_PI)));
171
172
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 0, 1),
Vector
(0, 0, 0),
Angles
(0, M_PI_4)));
173
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 0, -1),
Vector
(0, 0, 0),
Angles
(0, 3*M_PI_4)));
174
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 1, 0),
Vector
(0, 0, 0),
Angles
(M_PI_4, M_PI_2)));
175
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, -1, 0),
Vector
(0, 0, 0),
Angles
(-M_PI_4, M_PI_2)));
176
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 0, 1),
Vector
(0, 0, 0),
Angles
(M_PI, M_PI_4)));
177
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 0, -1),
Vector
(0, 0, 0),
Angles
(M_PI, 3*M_PI_4)));
178
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 1, 0),
Vector
(0, 0, 0),
Angles
(3*M_PI_4, M_PI_2)));
179
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, -1, 0),
Vector
(0, 0, 0),
Angles
(-3*M_PI_4, M_PI_2)));
180
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 1, 1),
Vector
(0, 0, 0),
Angles
(M_PI_2, M_PI_4)));
181
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, 1, -1),
Vector
(0, 0, 0),
Angles
(M_PI_2, 3*M_PI_4)));
182
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -1, 1),
Vector
(0, 0, 0),
Angles
(-M_PI_2, M_PI_4)));
183
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -1, -1),
Vector
(0, 0, 0),
Angles
(-M_PI_2, 3*M_PI_4)));
184
185
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 1, sqrt (2)),
Vector
(0, 0, 0),
Angles
(M_PI_4, M_PI_4)));
186
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 1, -sqrt (2)),
Vector
(0, 0, 0),
Angles
(M_PI_4, 3*M_PI_4)));
187
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, -1, sqrt (2)),
Vector
(0, 0, 0),
Angles
(-M_PI_4, M_PI_4)));
188
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 1, sqrt (2)),
Vector
(0, 0, 0),
Angles
(3*M_PI_4, M_PI_4)));
189
190
191
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(3, 2, 2),
Vector
(2, 2, 2),
Angles
(0, M_PI_2)));
192
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(1, 2, 2),
Vector
(2, 2, 2),
Angles
(M_PI, M_PI_2)));
193
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(2, 3, 2),
Vector
(2, 2, 2),
Angles
(M_PI_2, M_PI_2)));
194
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 2, 2),
Vector
(-1, 3, 2),
Angles
(-M_PI_2, M_PI_2)));
195
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(4, -2, 7),
Vector
(4, -2, 6),
Angles
(0, 0)));
196
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -5, -1),
Vector
(0, -5, 0),
Angles
(0, M_PI)));
197
198
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-2, 2, -1),
Vector
(-4, 2, -1),
Angles
(0, M_PI_2)));
199
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(2, 2, 0),
Vector
(4, 2, 0),
Angles
(M_PI, M_PI_2)));
200
201
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(-1, 4, 4),
Vector
(-2, 4, 3),
Angles
(0, M_PI_4)));
202
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0, -2, -6),
Vector
(-1, -2, -5),
Angles
(0, 3*M_PI_4)));
203
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(77, 3, 43),
Vector
(78, 2, 43),
Angles
(3*M_PI_4, M_PI_2)));
204
205
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(24, -2, -6 -sqrt (2)),
Vector
(23, -3, -6),
Angles
(M_PI_4, 3*M_PI_4)));
206
AddTestCase
(
new
TwoVectorsConstructorTestCase
(
Vector
(0.5, 11.45, sqrt (2)-1),
Vector
(-0.5, 12.45, -1),
Angles
(-M_PI_4, M_PI_4)));
207
208
209
};
210
211
static
AnglesTestSuite
staticAnglesTestSuiteInstance
;
212
213
214
215
216
}
// namespace ns3
src
antenna
test
test-angles.cc
Generated on Tue Oct 9 2012 16:45:32 for ns-3 by
1.8.1.2