src/core/reference-list-test.cc
changeset 150 663120712cd9
parent 131 f4fb87e77034
equal deleted inserted replaced
149:d5b12472c5e2 150:663120712cd9
     1 /* -*- Mode:NS3; -*- */
     1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
     2 /*
     2 /*
     3  * Copyright (c) 2006 INRIA
     3  * Copyright (c) 2006 INRIA
     4  * All rights reserved.
     4  * All rights reserved.
     5  *
     5  *
     6  * This program is free software; you can redistribute it and/or modify
     6  * This program is free software; you can redistribute it and/or modify
    26 #define noREFTEST_DEBUG 1
    26 #define noREFTEST_DEBUG 1
    27 
    27 
    28 #ifdef REFTEST_DEBUG 
    28 #ifdef REFTEST_DEBUG 
    29 #include <iostream>
    29 #include <iostream>
    30 #define TRACE(x) \
    30 #define TRACE(x) \
    31     std::cout << x << std::endl;
    31   std::cout << x << std::endl;
    32 #else
    32 #else
    33 #define TRACE(x)
    33 #define TRACE(x)
    34 #endif
    34 #endif
    35 
    35 
    36 namespace {
    36 namespace {
    37 
    37 
    38 class A {
    38 class A {
    39 public:
    39 public:
    40     A () {
    40   A () {
    41         TRACE ("constructor");
    41       TRACE ("constructor");
    42     }
    42   }
    43     ~A () {
    43   ~A () {
    44         TRACE ("destructor");
    44       TRACE ("destructor");
    45     }
    45   }
    46     void Trace (void) {
    46   void Trace (void) {
    47         TRACE ("trace");
    47       TRACE ("trace");
    48     }
    48   }
    49 };
    49 };
    50 
    50 
    51 class RefTest : public ns3::Test {
    51 class RefTest : public ns3::Test {
    52 public:
    52 public:
    53     RefTest ();
    53   RefTest ();
    54     virtual bool RunTests (void);
    54   virtual bool RunTests (void);
    55 private:
    55 private:
    56     void OneTest (ns3::ReferenceList<A *>);
    56   void OneTest (ns3::ReferenceList<A *>);
    57 };
    57 };
    58 
    58 
    59 RefTest::RefTest ()
    59 RefTest::RefTest ()
    60     : ns3::Test ("ReferenceList")
    60   : ns3::Test ("ReferenceList")
    61 {}
    61 {}
    62 
    62 
    63 void
    63 void
    64 RefTest::OneTest (ns3::ReferenceList<A *> a) 
    64 RefTest::OneTest (ns3::ReferenceList<A *> a) 
    65 {
    65 {
    66     a->Trace ();
    66   a->Trace ();
    67 }
    67 }
    68 
    68 
    69 bool 
    69 bool 
    70 RefTest::RunTests (void)
    70 RefTest::RunTests (void)
    71 {
    71 {
    72     bool ok = true;
    72   bool ok = true;
    73 
    73 
    74     {
    74   {
    75         ns3::ReferenceList<A *> tmp;
    75       ns3::ReferenceList<A *> tmp;
    76         {
    76       {
    77             ns3::ReferenceList<A *> a (new A ());
    77           ns3::ReferenceList<A *> a (new A ());
    78             
    78           
    79             OneTest (a);
    79           OneTest (a);
    80             tmp = a;
    80           tmp = a;
    81             OneTest (tmp);
    81           OneTest (tmp);
    82             a = tmp;
    82           a = tmp;
    83             OneTest (a);
    83           OneTest (a);
    84             TRACE ("leave inner scope");
    84           TRACE ("leave inner scope");
    85         }
    85       }
    86         OneTest (tmp);
    86       OneTest (tmp);
    87         TRACE ("leave outer scope");
    87       TRACE ("leave outer scope");
    88     }
    88   }
    89 
    89 
    90     {
    90   {
    91         ns3::ReferenceList<A *> tmp;
    91       ns3::ReferenceList<A *> tmp;
    92     }
    92   }
    93 
    93 
    94     {
    94   {
    95         ns3::ReferenceList<A *> tmp (new A ());
    95       ns3::ReferenceList<A *> tmp (new A ());
    96     }
    96   }
    97 
    97 
    98     {
    98   {
    99         ns3::ReferenceList<A *> tmp;
    99       ns3::ReferenceList<A *> tmp;
   100         tmp.Set (new A ());
   100       tmp.Set (new A ());
   101     }
   101   }
   102 
   102 
   103     {
   103   {
   104         TRACE ("test assignement");
   104       TRACE ("test assignement");
   105         ns3::ReferenceList<A *> a0 (new A ());
   105       ns3::ReferenceList<A *> a0 (new A ());
   106         ns3::ReferenceList<A *> a1 (new A ());
   106       ns3::ReferenceList<A *> a1 (new A ());
   107         a0 = a1;
   107       a0 = a1;
   108     }
   108   }
   109 
   109 
   110 
   110 
   111 
   111 
   112     return ok;
   112   return ok;
   113 }
   113 }
   114 
   114 
   115 
   115 
   116 static RefTest gRefTest = RefTest ();
   116 static RefTest gRefTest = RefTest ();
   117 
   117