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 |