src/simulator/simulator.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 26 Feb 2008 01:39:59 +0100
changeset 2357 d64b1561b1c2
parent 1863 50fa1ca3b26c
child 2503 e667dc0f350e
permissions -rw-r--r--
Release all events left upon Simulator::Destroy
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#include "simulator.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "scheduler.h"
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
    23
#include "event-impl.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
    25
#include "ns3/ptr.h"
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    26
#include "ns3/assert.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    27
#include "ns3/default-value.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    28
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    29
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
#include <math.h>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
#include <fstream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
#include <list>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
#include <vector>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
#include <iostream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
#define noTRACE_SIMU 1
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
#ifdef TRACE_SIMU
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
#include <iostream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
# define TRACE(x) \
213
1e6d6776b284 fix trace output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 209
diff changeset
    41
std::cout << "SIMU TRACE " << Simulator::Now () << " " << x << std::endl;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
# define TRACE_S(x) \
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
std::cout << "SIMU TRACE " << x << std::endl;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
#else /* TRACE_SIMU */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
# define TRACE(format,...)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
# define TRACE_S(format,...)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
#endif /* TRACE_SIMU */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
    50
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
class SimulatorPrivate {
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    55
  SimulatorPrivate (Scheduler *events);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    56
  ~SimulatorPrivate ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    58
  void EnableLogTo (char const *filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    60
  bool IsFinished (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    61
  Time Next (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    62
  void Stop (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    63
  void StopAt (Time const &time);
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    64
  EventId Schedule (Time const &time, const Ptr<EventImpl> &event);
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    65
  EventId ScheduleNow (const Ptr<EventImpl> &event);
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    66
  EventId ScheduleDestroy (const Ptr<EventImpl> &event);
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
    67
  void Remove (const EventId &ev);
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
    68
  void Cancel (const EventId &ev);
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
    69
  bool IsExpired (const EventId &ev) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    70
  void Run (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    71
  Time Now (void) const;
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
    72
  Time GetDelayLeft (const EventId &id) const;
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
    73
  Time GetMaximumSimulationTime (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    76
  void ProcessOneEvent (void);
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
    77
  uint64_t NextTs (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
    79
  typedef std::list<EventId> DestroyEvents;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
    80
  DestroyEvents m_destroyEvents;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    81
  uint64_t m_stopAt;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    82
  bool m_stop;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    83
  Scheduler *m_events;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    84
  uint32_t m_uid;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    85
  uint32_t m_currentUid;
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
    86
  uint64_t m_currentTs;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    87
  std::ofstream m_log;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    88
  std::ifstream m_inputLog;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    89
  bool m_logEnable;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
    90
  // number of events that have been inserted but not yet scheduled,
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
    91
  // not counting the "destroy" events; this is used for validation
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
    92
  int m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
};
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
SimulatorPrivate::SimulatorPrivate (Scheduler *events)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   100
  m_stop = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   101
  m_stopAt = 0;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   102
  m_events = events;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   103
  // uids are allocated from 4.
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   104
  // uid 0 is "invalid" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   105
  // uid 1 is "now" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   106
  // uid 2 is "destroy" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   107
  m_uid = 4; 
200
46031a283b0d We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 198
diff changeset
   108
  // before ::Run is entered, the m_currentUid will be zero
46031a283b0d We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 198
diff changeset
   109
  m_currentUid = 0;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   110
  m_logEnable = false;
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   111
  m_currentTs = 0;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   112
  m_unscheduledEvents = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
SimulatorPrivate::~SimulatorPrivate ()
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   117
  while (!m_destroyEvents.empty ()) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   118
    {
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   119
      Ptr<EventImpl> ev = m_destroyEvents.front ().PeekEventImpl ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   120
      m_destroyEvents.pop_front ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   121
      TRACE ("handle destroy " << ev);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   122
      if (!ev->IsCancelled ())
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   123
        {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   124
          ev->Invoke ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   125
        }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   126
    }
2357
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
   127
  while (!m_events->IsEmpty ())
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
   128
    {
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
   129
      EventId next = m_events->RemoveNext ();
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
   130
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   131
  delete m_events;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   132
  m_events = (Scheduler *)0xdeadbeaf;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   137
SimulatorPrivate::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   139
  m_log.open (filename);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   140
  m_logEnable = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   144
SimulatorPrivate::ProcessOneEvent (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
{
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   146
  EventId next = m_events->RemoveNext ();
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   147
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   148
  NS_ASSERT (next.GetTs () >= m_currentTs);
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   149
  --m_unscheduledEvents;
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   150
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   151
  TRACE ("handle " << nextEv);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   152
  m_currentTs = next.GetTs ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   153
  m_currentUid = next.GetUid ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   154
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   155
    {
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   156
      m_log << "e "<<next.GetUid () << " " << next.GetTs () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   157
    }
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   158
  EventImpl *event = next.PeekEventImpl ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   159
  event->Invoke ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   163
SimulatorPrivate::IsFinished (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   165
  return m_events->IsEmpty ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   167
uint64_t
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   168
SimulatorPrivate::NextTs (void) const
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   169
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   170
  NS_ASSERT (!m_events->IsEmpty ());
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   171
  EventId id = m_events->PeekNext ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   172
  return id.GetTs ();
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   173
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   174
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   175
SimulatorPrivate::Next (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
{
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   177
  return TimeStep (NextTs ());
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   181
SimulatorPrivate::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
{
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   183
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   184
  while (!m_events->IsEmpty () && !m_stop && 
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   185
         (m_stopAt == 0 || m_stopAt > NextTs ())) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   186
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   187
      ProcessOneEvent ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   188
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   189
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   190
  // If the simulator stopped naturally by lack of events, make a
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   191
  // consistency test to check that we didn't lose any events along the way.
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   192
  NS_ASSERT(!m_events->IsEmpty () || m_unscheduledEvents == 0);
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   193
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   194
  m_log.close ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   199
SimulatorPrivate::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   201
  m_stop = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   204
SimulatorPrivate::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   206
  NS_ASSERT (at.IsPositive ());
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   207
  m_stopAt = at.GetTimeStep ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   209
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   210
SimulatorPrivate::Schedule (Time const &time, const Ptr<EventImpl> &event)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   212
  NS_ASSERT (time.IsPositive ());
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   213
  NS_ASSERT (time >= TimeStep (m_currentTs));
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   214
  uint64_t ts = (uint64_t) time.GetTimeStep ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   215
  EventId id (event, ts, m_uid);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   216
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   217
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   218
      m_log << "i "<<m_currentUid<<" "<<m_currentTs<<" "
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   219
            <<m_uid<<" "<<time.GetTimeStep () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   220
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   221
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   222
  ++m_unscheduledEvents;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   223
  m_events->Insert (id);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   224
  return id;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   226
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   227
SimulatorPrivate::ScheduleNow (const Ptr<EventImpl> &event)
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   228
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   229
  EventId id (event, m_currentTs, m_uid);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   230
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   231
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   232
      m_log << "i "<<m_currentUid<<" "<<m_currentTs<<" "
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   233
            <<m_uid<<" "<<m_currentTs << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   234
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   235
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   236
  ++m_unscheduledEvents;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   237
  m_events->Insert (id);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   238
  return id;
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   239
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   240
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   241
SimulatorPrivate::ScheduleDestroy (const Ptr<EventImpl> &event)
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   242
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   243
  EventId id (event, m_currentTs, 2);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   244
  m_destroyEvents.push_back (id);
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   245
  if (m_logEnable) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   246
  {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   247
    m_log << "id " << m_currentUid << " " << Now ().GetTimeStep () << " "
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   248
          << m_uid << std::endl;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   249
  }
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   250
  m_uid++;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   251
  return id;
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   252
}
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   253
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   254
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   255
SimulatorPrivate::Now (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   256
{
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   257
  return TimeStep (m_currentTs);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   258
}
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   259
Time 
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   260
SimulatorPrivate::GetDelayLeft (const EventId &id) const
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   261
{
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   262
  if (IsExpired (id))
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   263
    {
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   264
      return TimeStep (0);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   265
    }
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   266
  else
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   267
    {
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   268
      return TimeStep (id.GetTs () - m_currentTs);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   269
    }
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   270
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   271
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   272
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   273
SimulatorPrivate::Remove (const EventId &ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   274
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   275
  if (ev.GetUid () == 2)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   276
    {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   277
      // destroy events.
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   278
      for (DestroyEvents::iterator i = m_destroyEvents.begin (); i != m_destroyEvents.end (); i++)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   279
        {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   280
          if (*i == ev)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   281
            {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   282
              m_destroyEvents.erase (i);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   283
              break;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   284
            }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   285
         }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   286
      return;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   287
    }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   288
  if (IsExpired (ev))
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   289
    {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   290
      return;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   291
    }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   292
  m_events->Remove (ev);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   293
  Cancel (ev);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   294
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   295
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   296
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   297
      m_log << "r " << m_currentUid << " " << m_currentTs << " "
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   298
            << ev.GetUid () << " " << ev.GetTs () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   299
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   300
  --m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   301
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   303
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   304
SimulatorPrivate::Cancel (const EventId &id)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   305
{
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   306
  if (!IsExpired (id))
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   307
    {
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   308
      id.PeekEventImpl ()->Cancel ();
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   309
    }
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   310
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   311
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   312
bool
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   313
SimulatorPrivate::IsExpired (const EventId &ev) const
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   314
{
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   315
  if (ev.GetUid () == 2)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   316
    {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   317
      // destroy events.
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   318
      for (DestroyEvents::const_iterator i = m_destroyEvents.begin (); i != m_destroyEvents.end (); i++)
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   319
        {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   320
          if (*i == ev)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   321
            {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   322
              return false;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   323
            }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   324
         }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   325
      return true;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   326
    }
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   327
  if (ev.PeekEventImpl () == 0 ||
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   328
      ev.GetTs () < m_currentTs ||
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   329
      (ev.GetTs () == m_currentTs &&
209
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   330
       ev.GetUid () <= m_currentUid) ||
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   331
      ev.PeekEventImpl ()->IsCancelled ()) 
209
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   332
    {
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   333
      return true;
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   334
    }
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   335
  else
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   336
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   337
      return false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   338
    }
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   339
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   340
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   341
Time 
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   342
SimulatorPrivate::GetMaximumSimulationTime (void) const
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   343
{
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   344
  // XXX: I am fairly certain other compilers use other non-standard
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   345
  // post-fixes to indicate 64 bit constants.
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   346
  return TimeStep (0x7fffffffffffffffLL);
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   347
}
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   348
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   349
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   350
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   351
}; // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   352
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   353
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   354
#include "scheduler-list.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   355
#include "scheduler-heap.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   356
#include "scheduler-map.h"
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   357
#include "scheduler-factory.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   358
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   360
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   361
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   362
SimulatorPrivate *Simulator::m_priv = 0;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   363
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   364
void Simulator::SetLinkedList (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   365
{
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   366
  DefaultValue::Bind ("Scheduler", "List");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   367
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   368
void Simulator::SetBinaryHeap (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   369
{
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   370
  DefaultValue::Bind ("Scheduler", "BinaryHeap");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   371
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   372
void Simulator::SetStdMap (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   373
{
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   374
  DefaultValue::Bind ("Scheduler", "Map");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   375
}
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   376
void 
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
   377
Simulator::SetExternal (const std::string &external)
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   378
{
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   379
  DefaultValue::Bind ("Scheduler", external);
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   380
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   381
void Simulator::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   382
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   383
  GetPriv ()->EnableLogTo (filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   384
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   385
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   386
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   387
SimulatorPrivate *
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   388
Simulator::GetPriv (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   389
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   390
  if (m_priv == 0) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   391
    {
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
   392
      Scheduler *events = SchedulerFactory::CreateDefault ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   393
      m_priv = new SimulatorPrivate (events);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   394
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   395
  TRACE_S ("priv " << m_priv);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   396
  return m_priv;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   397
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   398
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   399
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   400
Simulator::Destroy (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   401
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   402
  delete m_priv;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   403
  m_priv = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   404
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   405
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   406
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   407
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   408
Simulator::IsFinished (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   409
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   410
  return GetPriv ()->IsFinished ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   411
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   412
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   413
Simulator::Next (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   414
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   415
  return GetPriv ()->Next ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   416
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   417
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   418
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   419
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   420
Simulator::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   421
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   422
  GetPriv ()->Run ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   423
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   424
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   425
Simulator::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   426
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   427
  TRACE ("stop");
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   428
  GetPriv ()->Stop ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   429
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   430
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   431
Simulator::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   432
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   433
  GetPriv ()->StopAt (at);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   434
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   435
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   436
Simulator::Now (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   437
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   438
  return GetPriv ()->Now ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   439
}
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   440
Time
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   441
Simulator::GetDelayLeft (const EventId &id)
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   442
{
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   443
  return GetPriv ()->GetDelayLeft (id);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   444
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   445
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   446
Ptr<EventImpl>
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   447
Simulator::MakeEvent (void (*f) (void))
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   448
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   449
    // zero arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   450
  class EventFunctionImpl0 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   451
  public:
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   452
    typedef void (*F)(void);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   453
      
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   454
    EventFunctionImpl0 (F function) 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   455
      : m_function (function)
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   456
    {}
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   457
    virtual ~EventFunctionImpl0 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   458
  protected:
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   459
    virtual void Notify (void) { 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   460
      (*m_function) (); 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   461
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   462
  private:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   463
  	F m_function;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   464
  } *ev = new EventFunctionImpl0 (f);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   465
  return Ptr<EventImpl> (ev, false);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   466
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   467
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   468
Simulator::Schedule (Time const &time, const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   469
{
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   470
  return GetPriv ()->Schedule (Now () + time, ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   471
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   472
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   473
Simulator::ScheduleNow (const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   474
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   475
  return GetPriv ()->ScheduleNow (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   476
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   477
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   478
Simulator::ScheduleDestroy (const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   479
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   480
  return GetPriv ()->ScheduleDestroy (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   481
}  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   482
EventId
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   483
Simulator::Schedule (Time const &time, void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   484
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   485
  return Schedule (time, MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   486
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   487
EventId
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   488
Simulator::ScheduleNow (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   489
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   490
  return ScheduleNow (MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   491
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   492
EventId
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   493
Simulator::ScheduleDestroy (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   494
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   495
  return ScheduleDestroy (MakeEvent (f));
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   496
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   497
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   498
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   499
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   500
Simulator::Remove (const EventId &ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   501
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   502
  return GetPriv ()->Remove (ev);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   503
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   504
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   505
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   506
Simulator::Cancel (const EventId &ev)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   507
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   508
  return GetPriv ()->Cancel (ev);
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   509
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   510
bool 
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   511
Simulator::IsExpired (const EventId &id)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   512
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   513
  return GetPriv ()->IsExpired (id);
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   514
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   515
679
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   516
Time Now (void)
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   517
{
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   518
  return Time (Simulator::Now ());
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   519
}
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   520
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   521
Time 
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   522
Simulator::GetMaximumSimulationTime (void)
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   523
{
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   524
  return GetPriv ()->GetMaximumSimulationTime ();
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   525
}
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   526
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   527
} // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   528
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   529
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   530
#ifdef RUN_SELF_TESTS
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   531
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   532
#include "ns3/test.h"
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   533
#include "ns3/ptr.h"
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   534
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   535
namespace ns3 {
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   536
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   537
static void foo0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   538
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   539
static void foo1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   540
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   541
static void foo2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   542
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   543
static void foo3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   544
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   545
static void foo4 (int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   546
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   547
static void foo5 (int, int, int, int, int)
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   548
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   549
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   550
#if 1
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   551
static void ber1 (int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   552
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   553
static void ber2 (int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   554
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   555
static void ber3 (int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   556
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   557
static void ber4 (int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   558
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   559
static void ber5 (int &, int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   560
{}
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   561
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   562
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   563
static void cber1 (const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   564
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   565
static void cber2 (const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   566
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   567
static void cber3 (const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   568
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   569
static void cber4 (const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   570
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   571
static void cber5 (const int &, const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   572
{}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   573
  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   574
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   575
class SimulatorTests : public Test {
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   576
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   577
  SimulatorTests ();
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   578
  // only here for testing of Ptr<>
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   579
  void Ref (void) const;
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   580
  void Unref (void) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   581
  virtual ~SimulatorTests ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   582
  virtual bool RunTests (void);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   583
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   584
  uint64_t NowUs ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   585
  bool RunOneTest (void);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   586
  void RunTestsConst (void) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   587
  void A (int a);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   588
  void B (int b);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   589
  void C (int c);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   590
  void D (int d);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   591
  void bar0 (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   592
  void bar1 (int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   593
  void bar2 (int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   594
  void bar3 (int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   595
  void bar4 (int, int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   596
  void bar5 (int, int, int, int, int);
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   597
  void baz1 (int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   598
  void baz2 (int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   599
  void baz3 (int &, int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   600
  void baz4 (int &, int &, int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   601
  void baz5 (int &, int &, int &, int &, int &);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   602
  void cbaz1 (const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   603
  void cbaz2 (const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   604
  void cbaz3 (const int &, const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   605
  void cbaz4 (const int &, const int &, const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   606
  void cbaz5 (const int &, const int &, const int &, const int &, const int &);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   607
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   608
  void bar0c (void) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   609
  void bar1c (int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   610
  void bar2c (int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   611
  void bar3c (int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   612
  void bar4c (int, int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   613
  void bar5c (int, int, int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   614
  void baz1c (int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   615
  void baz2c (int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   616
  void baz3c (int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   617
  void baz4c (int &, int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   618
  void baz5c (int &, int &, int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   619
  void cbaz1c (const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   620
  void cbaz2c (const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   621
  void cbaz3c (const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   622
  void cbaz4c (const int &, const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   623
  void cbaz5c (const int &, const int &, const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   624
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   625
  void destroy (void);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   626
  
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   627
  bool m_b;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   628
  bool m_a;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   629
  bool m_c;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   630
  bool m_d;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   631
  EventId m_idC;
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   632
  bool m_destroy;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   633
  EventId m_destroyId;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   634
};
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   635
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   636
SimulatorTests::SimulatorTests ()
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   637
  : Test ("Simulator")
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   638
{}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   639
SimulatorTests::~SimulatorTests ()
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   640
{}
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   641
void 
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   642
SimulatorTests::Ref (void) const
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   643
{}
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   644
void 
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   645
SimulatorTests::Unref (void) const
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   646
{}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   647
uint64_t
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   648
SimulatorTests::NowUs (void)
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   649
{
163
2a7e05018eeb rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 162
diff changeset
   650
  uint64_t ns = Now ().GetNanoSeconds ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   651
  return ns / 1000;
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   652
}  
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   653
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   654
SimulatorTests::A (int a)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   655
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   656
  m_a = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   657
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   658
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   659
SimulatorTests::B (int b)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   660
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   661
  if (b != 2 || NowUs () != 11) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   662
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   663
      m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   664
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   665
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   666
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   667
      m_b = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   668
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   669
  Simulator::Remove (m_idC);
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   670
  Simulator::Schedule (MicroSeconds (10), &SimulatorTests::D, this, 4);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   671
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   672
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   673
SimulatorTests::C (int c)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   674
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   675
  m_c = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   676
}
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   677
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   678
SimulatorTests::D (int d)
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   679
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   680
  if (d != 4 || NowUs () != (11+10)) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   681
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   682
      m_d = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   683
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   684
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   685
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   686
      m_d = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   687
    }
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   688
}
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   689
void
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   690
SimulatorTests::destroy (void)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   691
{
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   692
  if (m_destroyId.IsExpired ())
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   693
    {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   694
      m_destroy = true; 
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   695
    }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   696
}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   697
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   698
SimulatorTests::bar0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   699
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   700
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   701
SimulatorTests::bar1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   702
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   703
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   704
SimulatorTests::bar2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   705
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   706
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   707
SimulatorTests::bar3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   708
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   709
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   710
SimulatorTests::bar4 (int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   711
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   712
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   713
SimulatorTests::bar5 (int, int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   714
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   715
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   716
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   717
SimulatorTests::baz1 (int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   718
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   719
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   720
SimulatorTests::baz2 (int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   721
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   722
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   723
SimulatorTests::baz3 (int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   724
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   725
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   726
SimulatorTests::baz4 (int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   727
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   728
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   729
SimulatorTests::baz5 (int &, int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   730
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   731
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   732
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   733
SimulatorTests::cbaz1 (const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   734
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   735
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   736
SimulatorTests::cbaz2 (const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   737
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   738
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   739
SimulatorTests::cbaz3 (const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   740
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   741
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   742
SimulatorTests::cbaz4 (const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   743
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   744
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   745
SimulatorTests::cbaz5 (const int &, const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   746
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   747
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   748
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   749
SimulatorTests::bar0c (void) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   750
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   751
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   752
SimulatorTests::bar1c (int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   753
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   754
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   755
SimulatorTests::bar2c (int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   756
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   757
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   758
SimulatorTests::bar3c (int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   759
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   760
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   761
SimulatorTests::bar4c (int, int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   762
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   763
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   764
SimulatorTests::bar5c (int, int, int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   765
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   766
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   767
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   768
SimulatorTests::baz1c (int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   769
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   770
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   771
SimulatorTests::baz2c (int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   772
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   773
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   774
SimulatorTests::baz3c (int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   775
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   776
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   777
SimulatorTests::baz4c (int &, int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   778
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   779
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   780
SimulatorTests::baz5c (int &, int &, int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   781
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   782
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   783
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   784
SimulatorTests::cbaz1c (const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   785
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   786
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   787
SimulatorTests::cbaz2c (const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   788
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   789
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   790
SimulatorTests::cbaz3c (const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   791
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   792
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   793
SimulatorTests::cbaz4c (const int &, const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   794
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   795
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   796
SimulatorTests::cbaz5c (const int &, const int &, const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   797
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   798
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   799
bool
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   800
SimulatorTests::RunOneTest (void)
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   801
{
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   802
  bool result = true;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   803
  m_a = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   804
  m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   805
  m_c = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   806
  m_d = false;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   807
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   808
  EventId a = Simulator::Schedule (MicroSeconds (10), &SimulatorTests::A, this, 1);
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   809
  Simulator::Schedule (MicroSeconds (11), &SimulatorTests::B, this, 2);
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   810
  m_idC = Simulator::Schedule (MicroSeconds (12), &SimulatorTests::C, this, 3);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   811
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   812
  NS_TEST_ASSERT (!m_idC.IsExpired ());
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   813
  NS_TEST_ASSERT (!a.IsExpired ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   814
  Simulator::Cancel (a);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   815
  NS_TEST_ASSERT (a.IsExpired ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   816
  Simulator::Run ();
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   817
  NS_TEST_ASSERT (m_a);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   818
  NS_TEST_ASSERT (m_b);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   819
  NS_TEST_ASSERT (m_c);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   820
  NS_TEST_ASSERT (m_d);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   821
  return result;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   822
}
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   823
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   824
SimulatorTests::RunTestsConst (void) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   825
{
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   826
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   827
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   828
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   829
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   830
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   831
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   832
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   833
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   834
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   835
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   836
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   837
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   838
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   839
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   840
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   841
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   842
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   843
  Simulator::ScheduleNow (&SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   844
  Simulator::ScheduleNow (&SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   845
  Simulator::ScheduleNow (&SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   846
  Simulator::ScheduleNow (&SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   847
  Simulator::ScheduleNow (&SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   848
  Simulator::ScheduleNow (&SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   849
  Simulator::ScheduleNow (&SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   850
  Simulator::ScheduleNow (&SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   851
  Simulator::ScheduleNow (&SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   852
  Simulator::ScheduleNow (&SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   853
  Simulator::ScheduleNow (&SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   854
  Simulator::ScheduleNow (&SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   855
  Simulator::ScheduleNow (&SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   856
  Simulator::ScheduleNow (&SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   857
  Simulator::ScheduleNow (&SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   858
  Simulator::ScheduleNow (&SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   859
  Simulator::ScheduleNow (&SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   860
  Simulator::ScheduleDestroy (&SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   861
  Simulator::ScheduleDestroy (&SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   862
  Simulator::ScheduleDestroy (&SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   863
  Simulator::ScheduleDestroy (&SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   864
  Simulator::ScheduleDestroy (&SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   865
  Simulator::ScheduleDestroy (&SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   866
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   867
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   868
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   869
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   870
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   871
  Simulator::ScheduleDestroy (&SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   872
  Simulator::ScheduleDestroy (&SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   873
  Simulator::ScheduleDestroy (&SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   874
  Simulator::ScheduleDestroy (&SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   875
  Simulator::ScheduleDestroy (&SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   876
  Simulator::ScheduleDestroy (&SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   877
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   878
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   879
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   880
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   881
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   882
  Simulator::ScheduleNow (&SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   883
  Simulator::ScheduleNow (&SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   884
  Simulator::ScheduleNow (&SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   885
  Simulator::ScheduleNow (&SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   886
  Simulator::ScheduleNow (&SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   887
  Simulator::ScheduleDestroy (&SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   888
  Simulator::ScheduleDestroy (&SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   889
  Simulator::ScheduleDestroy (&SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   890
  Simulator::ScheduleDestroy (&SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   891
  Simulator::ScheduleDestroy (&SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   892
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   893
  Simulator::Run ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   894
  Simulator::Destroy ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   895
}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   896
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   897
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   898
SimulatorTests::RunTests (void)
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   899
{
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   900
  bool result = true;
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   901
1522
70371ffd0ce5 Call Simulator::Destroy () before running simulator unit tests, to force time to start from zero (some tests check for absolute times)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1521
diff changeset
   902
  Simulator::Destroy ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   903
  Simulator::SetLinkedList ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   904
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   905
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   906
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   907
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   908
  Simulator::Destroy ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   909
  Simulator::SetBinaryHeap ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   910
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   911
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   912
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   913
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   914
  Simulator::Destroy ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   915
  Simulator::SetStdMap ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   916
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   917
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   918
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   919
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   920
  Simulator::Destroy ();
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   921
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   922
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   923
  Simulator::Schedule (Seconds (0.0), &foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   924
  Simulator::Schedule (Seconds (0.0), &foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   925
  Simulator::Schedule (Seconds (0.0), &foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   926
  Simulator::Schedule (Seconds (0.0), &foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   927
  Simulator::Schedule (Seconds (0.0), &foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   928
  Simulator::Schedule (Seconds (0.0), &foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   929
  Simulator::Schedule (Seconds (0.0), &cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   930
  Simulator::Schedule (Seconds (0.0), &cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   931
  Simulator::Schedule (Seconds (0.0), &cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   932
  Simulator::Schedule (Seconds (0.0), &cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   933
  Simulator::Schedule (Seconds (0.0), &cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   934
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   935
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   936
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   937
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   938
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   939
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   940
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   941
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   942
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   943
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   944
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   945
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   946
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   947
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   948
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   949
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   950
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   951
  Simulator::ScheduleNow (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   952
  Simulator::ScheduleNow (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   953
  Simulator::ScheduleNow (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   954
  Simulator::ScheduleNow (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   955
  Simulator::ScheduleNow (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   956
  Simulator::ScheduleNow (&foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   957
  Simulator::ScheduleNow (&cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   958
  Simulator::ScheduleNow (&cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   959
  Simulator::ScheduleNow (&cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   960
  Simulator::ScheduleNow (&cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   961
  Simulator::ScheduleNow (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   962
  Simulator::ScheduleNow (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   963
  Simulator::ScheduleNow (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   964
  Simulator::ScheduleNow (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   965
  Simulator::ScheduleNow (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   966
  Simulator::ScheduleNow (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   967
  Simulator::ScheduleNow (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   968
  Simulator::ScheduleNow (&SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   969
  Simulator::ScheduleNow (&SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   970
  Simulator::ScheduleNow (&SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   971
  Simulator::ScheduleNow (&SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   972
  Simulator::ScheduleNow (&SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   973
  Simulator::ScheduleNow (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   974
  Simulator::ScheduleNow (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   975
  Simulator::ScheduleNow (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   976
  Simulator::ScheduleNow (&SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   977
  Simulator::ScheduleNow (&SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   978
  Simulator::ScheduleNow (&SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   979
  Simulator::ScheduleDestroy (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   980
  Simulator::ScheduleDestroy (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   981
  Simulator::ScheduleDestroy (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   982
  Simulator::ScheduleDestroy (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   983
  Simulator::ScheduleDestroy (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   984
  Simulator::ScheduleDestroy (&foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   985
  Simulator::ScheduleDestroy (&cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   986
  Simulator::ScheduleDestroy (&cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   987
  Simulator::ScheduleDestroy (&cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   988
  Simulator::ScheduleDestroy (&cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   989
  Simulator::ScheduleDestroy (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   990
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   991
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   992
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   993
  Simulator::ScheduleDestroy (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   994
  Simulator::ScheduleDestroy (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   995
  Simulator::ScheduleDestroy (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   996
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   997
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   998
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   999
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1000
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1001
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1002
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1003
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1004
  Simulator::ScheduleDestroy (&SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1005
  Simulator::ScheduleDestroy (&SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1006
  Simulator::ScheduleDestroy (&SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1007
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1008
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1009
  // the code below does not compile, as expected.
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1010
  //Simulator::Schedule (Seconds (0.0), &cber1, 0.0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1011
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1012
#if 1
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1013
  Simulator::Schedule (Seconds (0.0), &ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1014
  Simulator::Schedule (Seconds (0.0), &ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1015
  Simulator::Schedule (Seconds (0.0), &ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1016
  Simulator::Schedule (Seconds (0.0), &ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1017
  Simulator::Schedule (Seconds (0.0), &ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1018
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1019
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1020
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1021
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1022
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1023
  Simulator::ScheduleNow (&ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1024
  Simulator::ScheduleNow (&ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1025
  Simulator::ScheduleNow (&ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1026
  Simulator::ScheduleNow (&ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1027
  Simulator::ScheduleNow (&ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1028
  Simulator::ScheduleNow (&SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1029
  Simulator::ScheduleNow (&SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1030
  Simulator::ScheduleNow (&SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1031
  Simulator::ScheduleNow (&SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1032
  Simulator::ScheduleNow (&SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1033
  Simulator::ScheduleDestroy (&ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1034
  Simulator::ScheduleDestroy (&ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1035
  Simulator::ScheduleDestroy (&ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1036
  Simulator::ScheduleDestroy (&ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1037
  Simulator::ScheduleDestroy (&ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1038
  Simulator::ScheduleDestroy (&SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1039
  Simulator::ScheduleDestroy (&SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1040
  Simulator::ScheduleDestroy (&SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1041
  Simulator::ScheduleDestroy (&SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1042
  Simulator::ScheduleDestroy (&SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1043
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1044
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
  1045
  RunTestsConst ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
  1046
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1047
  EventId nowId = Simulator::ScheduleNow (&foo0);
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
  1048
  m_destroyId = Simulator::ScheduleDestroy (&SimulatorTests::destroy, this);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1049
  NS_TEST_ASSERT (!m_destroyId.IsExpired ());
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1050
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1051
  Simulator::Run ();
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
  1052
  m_destroy = false;
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1053
  Simulator::Destroy ();
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1054
  NS_TEST_ASSERT (m_destroy);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1055
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1056
  EventId anId = Simulator::ScheduleNow (&foo0);
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1057
  EventId anotherId = anId;
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1058
  NS_TEST_ASSERT (!(anId.IsExpired () || anotherId.IsExpired ()));
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1059
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1060
  Simulator::Remove (anId);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1061
  NS_TEST_ASSERT (anId.IsExpired ());
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1062
  NS_TEST_ASSERT (anotherId.IsExpired ());
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1063
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1064
  Simulator::Run ();
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1065
  Simulator::Destroy ();
2357
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1066
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1067
  Simulator::Schedule (Seconds (10.0), &SimulatorTests::baz1, this, 0);
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1068
  Simulator::StopAt (Seconds (1.0));
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1069
  Simulator::Run ();
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1070
  Simulator::Destroy ();
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1071
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1072
  return result;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1073
}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1074
53
ae406f4957d5 variable/method/function coding style update
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 52
diff changeset
  1075
SimulatorTests gSimulatorTests;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1076
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1077
}; // namespace ns3
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1078
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1079
#endif /* RUN_SELF_TESTS */
24
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
  1080
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
  1081
37
af78cb75be51 improve tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 36
diff changeset
  1082