src/propagation/test/itu-r-1411-los-test-suite.cc
author Tom Henderson <tomh@tomh.org>
Mon, 28 Sep 2015 20:27:25 -0700
changeset 11676 05ea1489e509
parent 10968 2d29fee2b7b8
permissions -rw-r--r--
bug 2184: Integer overflow in MacLow
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8739
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     2
/*
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     4
 *
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     8
 *
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    13
 *
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    17
 *
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    18
 * Author: Marco Miozzo <marco.miozzo@cttc.es>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    19
 *         Nicola Baldo <nbaldo@cttc.es>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    20
 */
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    21
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    22
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    23
#include <ns3/log.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    24
#include <ns3/test.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    25
#include <ns3/itu-r-1411-los-propagation-loss-model.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    26
#include <ns3/string.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    27
#include <ns3/double.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    28
#include <ns3/constant-position-mobility-model.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    29
#include <ns3/enum.h>
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    30
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    31
10553
8c347165bb56 Move tests outside ns3 namespace
Vedran Miletić <rivanvx@gmail.com>
parents: 10411
diff changeset
    32
using namespace ns3;
8739
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    33
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10553
diff changeset
    34
NS_LOG_COMPONENT_DEFINE ("ItuR1411LosPropagationLossModelTest");
8739
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    35
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    36
class ItuR1411LosPropagationLossModelTestCase : public TestCase
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    37
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    38
public:
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    39
  ItuR1411LosPropagationLossModelTestCase (double freq, double dist, double hb, double hm, double refValue, std::string name);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    40
  virtual ~ItuR1411LosPropagationLossModelTestCase ();
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    41
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    42
private:
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    43
  virtual void DoRun (void);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    44
  Ptr<MobilityModel> CreateMobilityModel (uint16_t index);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    45
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    46
  double m_freq;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    47
  double m_dist;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    48
  double m_hb;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    49
  double m_hm;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    50
  double m_lossRef;
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    51
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    52
};
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    53
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    54
ItuR1411LosPropagationLossModelTestCase::ItuR1411LosPropagationLossModelTestCase (double freq, double dist, double hb, double hm, double refValue, std::string name)
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    55
  : TestCase (name),
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    56
    m_freq (freq),
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    57
    m_dist (dist),
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    58
    m_hb (hb),
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    59
    m_hm (hm),
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    60
    m_lossRef (refValue)
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    61
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    62
}
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    63
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    64
ItuR1411LosPropagationLossModelTestCase::~ItuR1411LosPropagationLossModelTestCase ()
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    65
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    66
}
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    67
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    68
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    69
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    70
void
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    71
ItuR1411LosPropagationLossModelTestCase::DoRun (void)
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    72
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    73
  NS_LOG_FUNCTION (this);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    74
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    75
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    76
  Ptr<MobilityModel> mma = CreateObject<ConstantPositionMobilityModel> ();
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    77
  mma->SetPosition (Vector (0.0, 0.0, m_hb));
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    78
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    79
  Ptr<MobilityModel> mmb = CreateObject<ConstantPositionMobilityModel> ();
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    80
  mmb->SetPosition (Vector (m_dist, 0.0, m_hm));
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    81
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    82
  Ptr<ItuR1411LosPropagationLossModel> propagationLossModel = CreateObject<ItuR1411LosPropagationLossModel> ();
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    83
  propagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    84
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    85
  double loss = propagationLossModel->GetLoss (mma, mmb);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    86
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    87
  NS_LOG_INFO ("Calculated loss: " << loss);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    88
  NS_LOG_INFO ("Theoretical loss: " << m_lossRef);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    89
 
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    90
  NS_TEST_ASSERT_MSG_EQ_TOL (loss, m_lossRef, 0.1, "Wrong loss!");
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    91
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    92
}
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    93
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    94
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    95
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    96
class ItuR1411LosPropagationLossModelTestSuite : public TestSuite
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    97
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    98
public:
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    99
  ItuR1411LosPropagationLossModelTestSuite ();
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   100
};
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   101
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   102
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   103
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   104
ItuR1411LosPropagationLossModelTestSuite::ItuR1411LosPropagationLossModelTestSuite ()
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   105
  : TestSuite ("itu-r-1411-los", SYSTEM)
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   106
{
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   107
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   108
  LogComponentEnable ("ItuR1411LosPropagationLossModelTest", LOG_LEVEL_ALL);
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   109
8743
aa6d621a9640 mention where test values come from
Nicola Baldo <nbaldo@cttc.es>
parents: 8739
diff changeset
   110
  // reference values obtained with the octave scripts in src/propagation/test/reference/
aa6d621a9640 mention where test values come from
Nicola Baldo <nbaldo@cttc.es>
parents: 8739
diff changeset
   111
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 8743
diff changeset
   112
  AddTestCase (new ItuR1411LosPropagationLossModelTestCase (2.1140e9, 100, 30, 1,  81.005, "freq=2114MHz, dist=100m"), TestCase::QUICK);
8739
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   113
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 8743
diff changeset
   114
  AddTestCase (new ItuR1411LosPropagationLossModelTestCase (1999e6, 200, 30, 1,  87.060, "freq=1999MHz, dist=200m"), TestCase::QUICK);
8743
aa6d621a9640 mention where test values come from
Nicola Baldo <nbaldo@cttc.es>
parents: 8739
diff changeset
   115
aa6d621a9640 mention where test values come from
Nicola Baldo <nbaldo@cttc.es>
parents: 8739
diff changeset
   116
8739
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   117
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   118
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   119
}
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   120
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   121
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   122
d4a80ca13a60 added separate test suites for new propagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   123
static ItuR1411LosPropagationLossModelTestSuite g_ituR1411LosTestSuite;