35 |
35 |
36 SequenceNumberTestObj () |
36 SequenceNumberTestObj () |
37 { |
37 { |
38 m_testTracedSequenceNumber = SequenceNumber32 (0); |
38 m_testTracedSequenceNumber = SequenceNumber32 (0); |
39 } |
39 } |
40 |
40 |
41 static TypeId GetTypeId (void) |
41 static TypeId GetTypeId (void) |
42 { |
42 { |
43 static TypeId tid = TypeId("ns3::SequenceNumberTestObj") |
43 static TypeId tid = TypeId("ns3::SequenceNumberTestObj") |
44 .SetParent<Object> () |
44 .SetParent<Object> () |
45 .AddTraceSource ("TestTracedSequenceNumber", |
45 .AddTraceSource ("TestTracedSequenceNumber", |
46 "A traceable sequence number", |
46 "A traceable sequence number", |
47 MakeTraceSourceAccessor (&SequenceNumberTestObj::m_testTracedSequenceNumber)) |
47 MakeTraceSourceAccessor (&SequenceNumberTestObj::m_testTracedSequenceNumber)) |
48 .AddConstructor<SequenceNumberTestObj> () |
48 .AddConstructor<SequenceNumberTestObj> () |
49 ; |
49 ; |
50 return tid; |
50 return tid; |
51 } |
51 } |
52 |
52 |
53 TypeId GetInstanceTypeId (void) const |
53 TypeId GetInstanceTypeId (void) const |
54 { |
54 { |
55 return GetTypeId (); |
55 return GetTypeId (); |
56 } |
56 } |
57 |
57 |
58 void IncSequenceNumber () |
58 void IncSequenceNumber () |
59 { |
59 { |
60 m_testTracedSequenceNumber += 1; |
60 m_testTracedSequenceNumber += 1; |
61 } |
61 } |
62 |
62 |
63 |
63 |
64 }; |
64 }; |
65 |
65 |
66 class SequenceNumberTestCase : public TestCase |
66 class SequenceNumberTestCase : public TestCase |
67 { |
67 { |
98 { |
99 { |
99 #define NS_TEST_ASSERT_EQUAL(a,b) NS_TEST_ASSERT_MSG_EQ(a,b, "foo") |
100 #define NS_TEST_ASSERT_EQUAL(a,b) NS_TEST_ASSERT_MSG_EQ(a,b, "foo") |
100 #define NS_TEST_ASSERT(a) NS_TEST_ASSERT_MSG_EQ(bool(a), true, "foo") |
101 #define NS_TEST_ASSERT(a) NS_TEST_ASSERT_MSG_EQ(bool(a), true, "foo") |
101 |
102 |
102 { |
103 { |
103 SequenceNumber32 num1 (3), num2 (5); |
104 SequenceNumber32 num1 (3), num2 (5); |
104 uint32_t value; |
105 uint32_t value; |
105 |
106 |
106 value = (num1 + num2).GetValue (); |
107 value = (num1 + num2).GetValue (); |
107 NS_TEST_ASSERT_EQUAL (value, 8); |
108 NS_TEST_ASSERT_EQUAL (value, 8); |
108 |
109 |
109 num1 += num2.GetValue (); |
110 num1 += num2.GetValue (); |
110 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
111 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
111 |
|
112 ++num1; |
|
113 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9)); |
|
114 |
112 |
115 --num1; |
113 ++num1; |
116 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
114 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9)); |
117 |
115 |
118 num1++; |
116 --num1; |
119 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9)); |
117 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
120 |
118 |
121 num1--; |
119 num1++; |
122 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
120 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9)); |
123 |
121 |
|
122 num1--; |
|
123 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8)); |
|
124 |
124 } |
125 } |
125 |
126 |
126 { |
127 { |
127 SequenceNumber16 num1 (60900), num2 (5), num3 (10000); |
128 SequenceNumber16 num1 (60900), num2 (5), num3 (10000); |
128 |
129 |
129 NS_TEST_ASSERT (num1 == num1); |
130 NS_TEST_ASSERT (num1 == num1); |
130 |
131 |
131 NS_TEST_ASSERT (num2 != num1); |
132 NS_TEST_ASSERT (num2 != num1); |
132 |
133 |
133 NS_TEST_ASSERT (num3 > num2); |
134 NS_TEST_ASSERT (num3 > num2); |
134 NS_TEST_ASSERT (num3 >= num2); |
135 NS_TEST_ASSERT (num3 >= num2); |
135 NS_TEST_ASSERT (num1 < num3); |
136 NS_TEST_ASSERT (num1 < num3); |
136 NS_TEST_ASSERT (num1 <= num3); |
137 NS_TEST_ASSERT (num1 <= num3); |
137 |
138 |
138 NS_TEST_ASSERT (num1 < num2); |
139 NS_TEST_ASSERT (num1 < num2); |
139 NS_TEST_ASSERT (num1 <= num2); |
140 NS_TEST_ASSERT (num1 <= num2); |
140 NS_TEST_ASSERT (num2 > num1); |
141 NS_TEST_ASSERT (num2 > num1); |
141 NS_TEST_ASSERT (num2 >= num1); |
142 NS_TEST_ASSERT (num2 >= num1); |
142 |
143 |
143 NS_TEST_ASSERT (num1+num2 > num1); |
144 NS_TEST_ASSERT (num1+num2 > num1); |
144 NS_TEST_ASSERT (num1+num2 >= num1); |
145 NS_TEST_ASSERT (num1+num2 >= num1); |
145 NS_TEST_ASSERT (num1 < num1+num2); |
146 NS_TEST_ASSERT (num1 < num1+num2); |
146 NS_TEST_ASSERT (num1 <= num1+num2); |
147 NS_TEST_ASSERT (num1 <= num1+num2); |
147 |
148 |
148 NS_TEST_ASSERT (num1 < num1+num3); |
149 NS_TEST_ASSERT (num1 < num1+num3); |
149 NS_TEST_ASSERT (num1 <= num1+num3); |
150 NS_TEST_ASSERT (num1 <= num1+num3); |
150 NS_TEST_ASSERT (num1+num3 > num1); |
151 NS_TEST_ASSERT (num1+num3 > num1); |
151 NS_TEST_ASSERT (num1+num3 >= num1); |
152 NS_TEST_ASSERT (num1+num3 >= num1); |
152 } |
153 } |
153 |
154 |
154 { |
155 { |
155 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (1000) + SequenceNumber16 (6000)) - SequenceNumber16 (1000), 6000); |
156 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (1000) + SequenceNumber16 (6000)) - SequenceNumber16 (1000), 6000); |
156 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (6000)) - SequenceNumber16 (60000), 6000); |
157 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (6000)) - SequenceNumber16 (60000), 6000); |
157 NS_TEST_ASSERT_EQUAL (SequenceNumber16 (1000) - SequenceNumber16 (6000), -5000); |
158 NS_TEST_ASSERT_EQUAL (SequenceNumber16 (1000) - SequenceNumber16 (6000), -5000); |
158 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (1000)) - SequenceNumber16 (65000), -4000); |
159 NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (1000)) - SequenceNumber16 (65000), -4000); |
159 } |
160 } |
160 |
161 |
161 { |
162 { |
162 SequenceNumber32 num1 (3); |
163 SequenceNumber32 num1 (3); |
163 |
164 |
164 NS_TEST_ASSERT_EQUAL (num1 + 10, SequenceNumber32 (13)); |
165 NS_TEST_ASSERT_EQUAL (num1 + 10, SequenceNumber32 (13)); |
165 num1 += -1; |
166 num1 += -1; |
166 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (2)); |
167 NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (2)); |
167 |
168 |
168 NS_TEST_ASSERT_EQUAL (num1 - (num1 - 100), 100); |
169 NS_TEST_ASSERT_EQUAL (num1 - (num1 - 100), 100); |
169 } |
170 } |
170 |
171 |
171 { |
172 { |
172 Ptr<SequenceNumberTestObj> obj = CreateObject<SequenceNumberTestObj> (); |
173 Ptr<SequenceNumberTestObj> obj = CreateObject<SequenceNumberTestObj> (); |