1 /* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */ |
|
2 /* |
|
3 * Copyright (c) 2006 INRIA |
|
4 * All rights reserved. |
|
5 * |
|
6 * This program is free software; you can redistribute it and/or modify |
|
7 * it under the terms of the GNU General Public License version 2 as |
|
8 * published by the Free Software Foundation; |
|
9 * |
|
10 * This program is distributed in the hope that it will be useful, |
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 * GNU General Public License for more details. |
|
14 * |
|
15 * You should have received a copy of the GNU General Public License |
|
16 * along with this program; if not, write to the Free Software |
|
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
18 * |
|
19 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
|
20 */ |
|
21 |
|
22 #include "ui-traced-variable.tcc" |
|
23 #include "si-traced-variable.tcc" |
|
24 #include "ns3/test.h" |
|
25 #include "ns3/callback.h" |
|
26 |
|
27 |
|
28 namespace ns3 { |
|
29 |
|
30 class Foo { |
|
31 public: |
|
32 void notify (uint64_t old_val, uint64_t new_val) {} |
|
33 }; |
|
34 |
|
35 class VariableTracerTest: public Test { |
|
36 public: |
|
37 VariableTracerTest (); |
|
38 void run_unsigned_tests (void); |
|
39 void run_signed_unsigned_tests (void); |
|
40 virtual bool run_tests (void); |
|
41 }; |
|
42 void |
|
43 VariableTracerTest::run_unsigned_tests (void) |
|
44 { |
|
45 UiVariableTracer<uint32_t> var, ovar, tmp; |
|
46 uint32_t utmp; |
|
47 Foo *foo = new Foo (); |
|
48 |
|
49 var.set_callback (make_callback (&Foo::notify, foo)); |
|
50 |
|
51 var = 10; |
|
52 ovar = var; |
|
53 |
|
54 if (var == ovar) { |
|
55 } |
|
56 if (var != ovar) { |
|
57 } |
|
58 if (var > ovar) { |
|
59 } |
|
60 if (var >= ovar) { |
|
61 } |
|
62 if (var < ovar) { |
|
63 } |
|
64 if (var <= ovar) { |
|
65 } |
|
66 |
|
67 if (var == 1) { |
|
68 } |
|
69 if (var != 1) { |
|
70 } |
|
71 if (var > 1) { |
|
72 } |
|
73 if (var >= 1) { |
|
74 } |
|
75 if (var < 1) { |
|
76 } |
|
77 if (var <= 1) { |
|
78 } |
|
79 |
|
80 if (1 == ovar) { |
|
81 } |
|
82 if (1 != ovar) { |
|
83 } |
|
84 if (1 > ovar) { |
|
85 } |
|
86 if (1 >= ovar) { |
|
87 } |
|
88 if (1 < ovar) { |
|
89 } |
|
90 if (1 <= ovar) { |
|
91 } |
|
92 |
|
93 var++; |
|
94 ++var; |
|
95 var--; |
|
96 --var; |
|
97 |
|
98 tmp = var + ovar; |
|
99 tmp = var - ovar; |
|
100 tmp = var / ovar; |
|
101 tmp = var * ovar; |
|
102 tmp = var << ovar; |
|
103 tmp = var >> ovar; |
|
104 tmp = var & ovar; |
|
105 tmp = var | ovar; |
|
106 tmp = var ^ ovar; |
|
107 |
|
108 tmp = var + 1; |
|
109 tmp = var - 1; |
|
110 tmp = var / 1; |
|
111 tmp = var * 1; |
|
112 tmp = var << 1; |
|
113 tmp = var >> 1; |
|
114 tmp = var & 1; |
|
115 tmp = var | 1; |
|
116 tmp = var ^ 1; |
|
117 |
|
118 tmp = 1 + ovar; |
|
119 tmp = 1 - ovar; |
|
120 tmp = 1 / ovar; |
|
121 tmp = 1 * ovar; |
|
122 tmp = 1 << ovar; |
|
123 tmp = 1 >> ovar; |
|
124 tmp = 1 & ovar; |
|
125 tmp = 1 | ovar; |
|
126 tmp = 1 ^ ovar; |
|
127 |
|
128 tmp += var; |
|
129 tmp -= var; |
|
130 tmp /= var; |
|
131 tmp *= var; |
|
132 tmp <<= var; |
|
133 tmp >>= var; |
|
134 tmp &= var; |
|
135 tmp |= var; |
|
136 tmp ^= var; |
|
137 |
|
138 tmp += 1; |
|
139 tmp -= 1; |
|
140 tmp /= 1; |
|
141 tmp *= 1; |
|
142 tmp <<= 1; |
|
143 tmp >>= 1; |
|
144 tmp &= 1; |
|
145 tmp |= 1; |
|
146 tmp ^= 1; |
|
147 |
|
148 |
|
149 utmp = var + ovar; |
|
150 utmp = var - ovar; |
|
151 utmp = var / ovar; |
|
152 utmp = var * ovar; |
|
153 utmp = var << ovar; |
|
154 utmp = var >> ovar; |
|
155 utmp = var & ovar; |
|
156 utmp = var | ovar; |
|
157 utmp = var ^ ovar; |
|
158 |
|
159 utmp = var + 1; |
|
160 utmp = var - 1; |
|
161 utmp = var / 1; |
|
162 utmp = var * 1; |
|
163 utmp = var << 1; |
|
164 utmp = var >> 1; |
|
165 utmp = var & 1; |
|
166 utmp = var | 1; |
|
167 utmp = var ^ 1; |
|
168 |
|
169 utmp = 1 + ovar; |
|
170 utmp = 1 - ovar; |
|
171 utmp = 1 / ovar; |
|
172 utmp = 1 * ovar; |
|
173 utmp = 1 << ovar; |
|
174 utmp = 1 >> ovar; |
|
175 utmp = 1 & ovar; |
|
176 utmp = 1 | ovar; |
|
177 utmp = 1 ^ ovar; |
|
178 |
|
179 utmp += var; |
|
180 utmp -= var; |
|
181 utmp /= var; |
|
182 utmp *= var; |
|
183 utmp <<= var; |
|
184 utmp >>= var; |
|
185 utmp &= var; |
|
186 utmp |= var; |
|
187 utmp ^= var; |
|
188 |
|
189 utmp += 1; |
|
190 utmp -= 1; |
|
191 utmp /= 1; |
|
192 utmp *= 1; |
|
193 utmp <<= 1; |
|
194 utmp >>= 1; |
|
195 utmp &= 1; |
|
196 utmp |= 1; |
|
197 utmp ^= 1; |
|
198 } |
|
199 |
|
200 void |
|
201 VariableTracerTest::run_signed_unsigned_tests (void) |
|
202 { |
|
203 unsigned short utmp = 10; |
|
204 unsigned int uitmp = 7; |
|
205 short stmp = 5; |
|
206 utmp = stmp; |
|
207 utmp += stmp; |
|
208 uitmp = utmp; |
|
209 utmp = uitmp; |
|
210 |
|
211 UiVariableTracer<unsigned short> uvar = 10; |
|
212 UiVariableTracer<unsigned int> uivar = 5; |
|
213 SiVariableTracer<short> svar = 5; |
|
214 SiVariableTracer<int> sivar = 5; |
|
215 uvar = svar; |
|
216 svar = uvar; |
|
217 uvar += svar; |
|
218 svar += uvar; |
|
219 |
|
220 uvar = sivar; |
|
221 sivar = uvar; |
|
222 uvar += sivar; |
|
223 sivar += uvar; |
|
224 |
|
225 uivar = uvar; |
|
226 uvar = uivar; |
|
227 uivar += uvar; |
|
228 uvar += uivar; |
|
229 |
|
230 sivar = svar; |
|
231 svar = sivar; |
|
232 sivar += svar; |
|
233 svar += sivar; |
|
234 } |
|
235 |
|
236 bool |
|
237 VariableTracerTest::run_tests (void) |
|
238 { |
|
239 run_unsigned_tests (); |
|
240 run_signed_unsigned_tests (); |
|
241 |
|
242 return true; |
|
243 } |
|
244 |
|
245 VariableTracerTest::VariableTracerTest () |
|
246 : Test ("VariableTracer") {} |
|
247 |
|
248 static VariableTracerTest g_variable_tracer_test; |
|
249 |
|
250 }; // namespace ns3 |
|
251 |
|
252 |
|