A Discrete-Event Network Simulator
API
lte-test-earfcn.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (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 
22 
23 #include "ns3/test.h"
24 #include "ns3/log.h"
25 
26 #include "ns3/lte-spectrum-value-helper.h"
27 
28 using namespace ns3;
29 
30 NS_LOG_COMPONENT_DEFINE ("LteTestEarfcn");
31 
41 {
42 public:
50  LteEarfcnTestCase (const char* str, uint32_t earfcn, double f);
51  virtual ~LteEarfcnTestCase ();
52 
53 protected:
54  uint32_t m_earfcn;
55  double m_f;
56 
57 private:
58  virtual void DoRun (void);
59 };
60 
61 LteEarfcnTestCase::LteEarfcnTestCase (const char* str, uint32_t earfcn, double f)
62  : TestCase (str),
63  m_earfcn (earfcn),
64  m_f (f)
65 {
66  NS_LOG_FUNCTION (this << str << earfcn << f);
67 }
68 
70 {
71 }
72 
73 void
75 {
76  double f = LteSpectrumValueHelper::GetCarrierFrequency (m_earfcn);
77  NS_TEST_ASSERT_MSG_EQ_TOL (f, m_f, 0.0000001, "wrong frequency");
78 }
79 
90 {
91 public:
99  LteEarfcnDlTestCase (const char* str, uint32_t earfcn, double f);
100 
101 private:
102  virtual void DoRun (void);
103 };
104 
105 LteEarfcnDlTestCase::LteEarfcnDlTestCase (const char* str, uint32_t earfcn, double f)
106  : LteEarfcnTestCase (str, earfcn, f)
107 {
108 }
109 
110 void
112 {
113 // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
114 // LogComponentEnable ("LteSpectrumValueHelper", logLevel);
115 // LogComponentEnable ("LteTestEarfcn", logLevel);
116 
117  double f = LteSpectrumValueHelper::GetDownlinkCarrierFrequency (m_earfcn);
118  NS_TEST_ASSERT_MSG_EQ_TOL (f, m_f, 0.0000001, "wrong frequency");
119 }
120 
121 
131 {
132 public:
140  LteEarfcnUlTestCase (const char* str, uint32_t earfcn, double f);
141 
142 private:
143  virtual void DoRun (void);
144 };
145 
146 LteEarfcnUlTestCase::LteEarfcnUlTestCase (const char* str, uint32_t earfcn, double f)
147  : LteEarfcnTestCase (str, earfcn, f)
148 {
149 }
150 
151 void
153 {
154  double f = LteSpectrumValueHelper::GetUplinkCarrierFrequency (m_earfcn);
155  NS_TEST_ASSERT_MSG_EQ_TOL (f, m_f, 0.0000001, "wrong frequency");
156 }
157 
158 
167 {
168 public:
170 };
171 
173 
175  : TestSuite ("lte-earfcn", UNIT)
176 {
177  NS_LOG_FUNCTION (this);
178 
179  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=500", 500, 2160e6), TestCase::QUICK);
180  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=1000", 1000, 1970e6), TestCase::QUICK);
181  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=1301", 1301, 1815.1e6), TestCase::QUICK);
182  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=7000", 7000, 0.0), TestCase::QUICK);
183  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=20000", 20000, 0.0), TestCase::QUICK);
184  AddTestCase (new LteEarfcnDlTestCase ("DL EARFCN=50000", 50000, 0.0), TestCase::QUICK);
185 
186  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=18100", 18100, 1930e6), TestCase::QUICK);
187  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=19000", 19000, 1890e6), TestCase::QUICK);
188  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=19400", 19400, 1730e6), TestCase::QUICK);
189  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=10", 10, 0.0), TestCase::QUICK);
190  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=1000", 1000, 0.0), TestCase::QUICK);
191  AddTestCase (new LteEarfcnUlTestCase ("UL EARFCN=50000", 50000, 0.0), TestCase::QUICK);
192 
193  AddTestCase (new LteEarfcnTestCase ("EARFCN=500", 500, 2160e6), TestCase::QUICK);
194  AddTestCase (new LteEarfcnTestCase ("EARFCN=1000", 1000, 1970e6), TestCase::QUICK);
195  AddTestCase (new LteEarfcnTestCase ("EARFCN=1301", 1301, 1815.1e6), TestCase::QUICK);
196  AddTestCase (new LteEarfcnTestCase ("EARFCN=8000", 8000, 0.0), TestCase::QUICK);
197  AddTestCase (new LteEarfcnTestCase ("EARFCN=50000", 50000, 0.0), TestCase::QUICK);
198  AddTestCase (new LteEarfcnTestCase ("EARFCN=18100", 18100, 1930e6), TestCase::QUICK);
199  AddTestCase (new LteEarfcnTestCase ("EARFCN=19000", 19000, 1890e6), TestCase::QUICK);
200  AddTestCase (new LteEarfcnTestCase ("EARFCN=19400", 19400, 1730e6), TestCase::QUICK);
201  AddTestCase (new LteEarfcnTestCase ("EARFCN=50000", 50000, 0.0), TestCase::QUICK);
202 }
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
ns3::TestCase::AddTestCase
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:299
LteEarfcnTestCase::DoRun
virtual void DoRun(void)
Implementation to actually run this TestCase.
Definition: lte-test-earfcn.cc:74
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
g_lteEarfcnTestSuite
static LteEarfcnTestSuite g_lteEarfcnTestSuite
Definition: lte-test-earfcn.cc:172
LteEarfcnTestCase::m_f
double m_f
the frequency
Definition: lte-test-earfcn.cc:55
ns3::TestCase
encapsulates test code
Definition: test.h:1154
LteEarfcnTestCase
Test case that is testing if the frequency is properly generated from provided EARFCN frequency.
Definition: lte-test-earfcn.cc:41
LteEarfcnDlTestCase::DoRun
virtual void DoRun(void)
Implementation to actually run this TestCase.
Definition: lte-test-earfcn.cc:111
LteEarfcnDlTestCase
Test case that is testing if the downlink frequency is properly converted from provided downlink EARF...
Definition: lte-test-earfcn.cc:90
NS_TEST_ASSERT_MSG_EQ_TOL
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
Definition: test.h:378
LteEarfcnTestSuite::LteEarfcnTestSuite
LteEarfcnTestSuite()
Definition: lte-test-earfcn.cc:174
LteEarfcnUlTestCase::LteEarfcnUlTestCase
LteEarfcnUlTestCase(const char *str, uint32_t earfcn, double f)
Constructor.
Definition: lte-test-earfcn.cc:146
LteEarfcnUlTestCase::DoRun
virtual void DoRun(void)
Implementation to actually run this TestCase.
Definition: lte-test-earfcn.cc:152
LteEarfcnTestCase::LteEarfcnTestCase
LteEarfcnTestCase(const char *str, uint32_t earfcn, double f)
Constructor.
Definition: lte-test-earfcn.cc:61
LteEarfcnTestCase::m_earfcn
uint32_t m_earfcn
the EARFCN
Definition: lte-test-earfcn.cc:54
ns3::TestSuite
A suite of tests to run.
Definition: test.h:1344
LteEarfcnTestSuite
Test suite for testing correct conversion of frequencies in the downlink and the uplink,...
Definition: lte-test-earfcn.cc:167
f
double f(double x, void *params)
Definition: 80211b.c:70
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition: log-macros-enabled.h:244
LteEarfcnDlTestCase::LteEarfcnDlTestCase
LteEarfcnDlTestCase(const char *str, uint32_t earfcn, double f)
Constructor.
Definition: lte-test-earfcn.cc:105
LteEarfcnUlTestCase
Test case that is testing if the uplink frequency is properly converted from provided uplink EARFCN f...
Definition: lte-test-earfcn.cc:131
LteEarfcnTestCase::~LteEarfcnTestCase
virtual ~LteEarfcnTestCase()
Definition: lte-test-earfcn.cc:69