aboutsummaryrefslogtreecommitdiff
path: root/src/util/test_time.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2010-10-27 09:21:14 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2010-10-27 09:21:14 +0000
commit71f77f1be3d6e2da1b88fe4a4fdd44c3c69b5325 (patch)
tree5570130fdab90ad02f4b5bfda414d13161f0f3d1 /src/util/test_time.c
parent1d7368a52af332af35ec6de22affef4f5f0c1da4 (diff)
downloadgnunet-71f77f1be3d6e2da1b88fe4a4fdd44c3c69b5325.tar.gz
gnunet-71f77f1be3d6e2da1b88fe4a4fdd44c3c69b5325.zip
Changed GNUNET_TIME_Absolute and GNUNET_TIME_Relative to allow safe comparisons between time values
Diffstat (limited to 'src/util/test_time.c')
-rw-r--r--src/util/test_time.c152
1 files changed, 76 insertions, 76 deletions
diff --git a/src/util/test_time.c b/src/util/test_time.c
index eecbbafae..13f5e58a0 100644
--- a/src/util/test_time.c
+++ b/src/util/test_time.c
@@ -45,12 +45,12 @@ check ()
45 forever = GNUNET_TIME_absolute_get_forever (); 45 forever = GNUNET_TIME_absolute_get_forever ();
46 relForever = GNUNET_TIME_relative_get_forever (); 46 relForever = GNUNET_TIME_relative_get_forever ();
47 relUnit = GNUNET_TIME_relative_get_unit (); 47 relUnit = GNUNET_TIME_relative_get_unit ();
48 zero.value = 0; 48 zero.abs_value = 0;
49 49
50 last = now = GNUNET_TIME_absolute_get (); 50 last = now = GNUNET_TIME_absolute_get ();
51 while (now.value == last.value) 51 while (now.abs_value == last.abs_value)
52 now = GNUNET_TIME_absolute_get (); 52 now = GNUNET_TIME_absolute_get ();
53 GNUNET_assert (now.value > last.value); 53 GNUNET_assert (now.abs_value > last.abs_value);
54 54
55 /* test overflow checking in multiply */ 55 /* test overflow checking in multiply */
56 rel = GNUNET_TIME_UNIT_SECONDS; 56 rel = GNUNET_TIME_UNIT_SECONDS;
@@ -58,169 +58,169 @@ check ()
58 for (i = 0; i < 55; i++) 58 for (i = 0; i < 55; i++)
59 rel = GNUNET_TIME_relative_multiply (rel, 2); 59 rel = GNUNET_TIME_relative_multiply (rel, 2);
60 GNUNET_log_skip (0, GNUNET_NO); 60 GNUNET_log_skip (0, GNUNET_NO);
61 GNUNET_assert (rel.value == GNUNET_TIME_UNIT_FOREVER_REL.value); 61 GNUNET_assert (rel.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value);
62 /*check zero*/ 62 /*check zero*/
63 rel.value = (UINT64_MAX) - 1024; 63 rel.rel_value = (UINT64_MAX) - 1024;
64 GNUNET_assert (GNUNET_TIME_relative_get_zero ().value == GNUNET_TIME_relative_multiply (rel,0).value); 64 GNUNET_assert (GNUNET_TIME_relative_get_zero ().rel_value == GNUNET_TIME_relative_multiply (rel,0).rel_value);
65 65
66 /* test infinity-check for relative to absolute */ 66 /* test infinity-check for relative to absolute */
67 GNUNET_log_skip (1, GNUNET_NO); 67 GNUNET_log_skip (1, GNUNET_NO);
68 last = GNUNET_TIME_relative_to_absolute (rel); 68 last = GNUNET_TIME_relative_to_absolute (rel);
69 GNUNET_assert (last.value == GNUNET_TIME_UNIT_FOREVER_ABS.value); 69 GNUNET_assert (last.abs_value == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value);
70 GNUNET_log_skip (0, GNUNET_YES); 70 GNUNET_log_skip (0, GNUNET_YES);
71 71
72 /*check relative to absolute*/ 72 /*check relative to absolute*/
73 rel.value = 0; 73 rel.rel_value = 0;
74 GNUNET_assert (GNUNET_TIME_absolute_get ().value == 74 GNUNET_assert (GNUNET_TIME_absolute_get ().abs_value ==
75 GNUNET_TIME_relative_to_absolute(rel).value); 75 GNUNET_TIME_relative_to_absolute(rel).abs_value);
76 /*check forever*/ 76 /*check forever*/
77 rel.value = UINT64_MAX; 77 rel.rel_value = UINT64_MAX;
78 GNUNET_assert (GNUNET_TIME_absolute_get_forever ().value == 78 GNUNET_assert (GNUNET_TIME_absolute_get_forever ().abs_value ==
79 GNUNET_TIME_relative_to_absolute(rel).value); 79 GNUNET_TIME_relative_to_absolute(rel).abs_value);
80 /* check overflow for r2a */ 80 /* check overflow for r2a */
81 rel.value = (UINT64_MAX) - 1024; 81 rel.rel_value = (UINT64_MAX) - 1024;
82 GNUNET_log_skip (1, GNUNET_NO); 82 GNUNET_log_skip (1, GNUNET_NO);
83 last = GNUNET_TIME_relative_to_absolute (rel); 83 last = GNUNET_TIME_relative_to_absolute (rel);
84 GNUNET_log_skip (0, GNUNET_NO); 84 GNUNET_log_skip (0, GNUNET_NO);
85 GNUNET_assert (last.value == GNUNET_TIME_UNIT_FOREVER_ABS.value); 85 GNUNET_assert (last.abs_value == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value);
86 86
87 /* check overflow for relative add */ 87 /* check overflow for relative add */
88 GNUNET_log_skip (1, GNUNET_NO); 88 GNUNET_log_skip (1, GNUNET_NO);
89 rel = GNUNET_TIME_relative_add (rel, rel); 89 rel = GNUNET_TIME_relative_add (rel, rel);
90 GNUNET_log_skip (0, GNUNET_NO); 90 GNUNET_log_skip (0, GNUNET_NO);
91 GNUNET_assert (rel.value == GNUNET_TIME_UNIT_FOREVER_REL.value); 91 GNUNET_assert (rel.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value);
92 92
93 GNUNET_log_skip (1, GNUNET_NO); 93 GNUNET_log_skip (1, GNUNET_NO);
94 rel = GNUNET_TIME_relative_add (relForever, relForever); 94 rel = GNUNET_TIME_relative_add (relForever, relForever);
95 GNUNET_log_skip (0, GNUNET_NO); 95 GNUNET_log_skip (0, GNUNET_NO);
96 GNUNET_assert (rel.value == relForever.value); 96 GNUNET_assert (rel.rel_value == relForever.rel_value);
97 97
98 GNUNET_log_skip (1, GNUNET_NO); 98 GNUNET_log_skip (1, GNUNET_NO);
99 rel = GNUNET_TIME_relative_add (relUnit, relUnit); 99 rel = GNUNET_TIME_relative_add (relUnit, relUnit);
100 GNUNET_assert (rel.value == 2 * relUnit.value); 100 GNUNET_assert (rel.rel_value == 2 * relUnit.rel_value);
101 101
102 /* check relation check in get_duration */ 102 /* check relation check in get_duration */
103 future.value = now.value + 1000000; 103 future.abs_value = now.abs_value + 1000000;
104 GNUNET_assert (GNUNET_TIME_absolute_get_difference (now, future).value == 104 GNUNET_assert (GNUNET_TIME_absolute_get_difference (now, future).rel_value ==
105 1000000); 105 1000000);
106 GNUNET_assert (GNUNET_TIME_absolute_get_difference (future, now).value == 106 GNUNET_assert (GNUNET_TIME_absolute_get_difference (future, now).rel_value ==
107 0); 107 0);
108 108
109 GNUNET_assert (GNUNET_TIME_absolute_get_difference (zero, forever).value == 109 GNUNET_assert (GNUNET_TIME_absolute_get_difference (zero, forever).rel_value ==
110 forever.value); 110 forever.abs_value);
111 111
112 past.value = now.value - 1000000; 112 past.abs_value = now.abs_value - 1000000;
113 rel = GNUNET_TIME_absolute_get_duration (future); 113 rel = GNUNET_TIME_absolute_get_duration (future);
114 GNUNET_assert (rel.value == 0); 114 GNUNET_assert (rel.rel_value == 0);
115 rel = GNUNET_TIME_absolute_get_duration (past); 115 rel = GNUNET_TIME_absolute_get_duration (past);
116 GNUNET_assert (rel.value >= 1000000); 116 GNUNET_assert (rel.rel_value >= 1000000);
117 117
118 /* check get remaining */ 118 /* check get remaining */
119 rel = GNUNET_TIME_absolute_get_remaining (now); 119 rel = GNUNET_TIME_absolute_get_remaining (now);
120 GNUNET_assert (rel.value == 0); 120 GNUNET_assert (rel.rel_value == 0);
121 rel = GNUNET_TIME_absolute_get_remaining (past); 121 rel = GNUNET_TIME_absolute_get_remaining (past);
122 GNUNET_assert (rel.value == 0); 122 GNUNET_assert (rel.rel_value == 0);
123 rel = GNUNET_TIME_absolute_get_remaining (future); 123 rel = GNUNET_TIME_absolute_get_remaining (future);
124 GNUNET_assert (rel.value > 0); 124 GNUNET_assert (rel.rel_value > 0);
125 GNUNET_assert (rel.value <= 1000000); 125 GNUNET_assert (rel.rel_value <= 1000000);
126 forever = GNUNET_TIME_absolute_get_forever (); 126 forever = GNUNET_TIME_absolute_get_forever ();
127 GNUNET_assert (GNUNET_TIME_relative_get_forever ().value == 127 GNUNET_assert (GNUNET_TIME_relative_get_forever ().rel_value ==
128 GNUNET_TIME_absolute_get_remaining (forever).value); 128 GNUNET_TIME_absolute_get_remaining (forever).rel_value);
129 129
130 /* check endianess */ 130 /* check endianess */
131 reln = GNUNET_TIME_relative_hton (rel); 131 reln = GNUNET_TIME_relative_hton (rel);
132 GNUNET_assert (rel.value == GNUNET_TIME_relative_ntoh (reln).value); 132 GNUNET_assert (rel.rel_value == GNUNET_TIME_relative_ntoh (reln).rel_value);
133 nown = GNUNET_TIME_absolute_hton (now); 133 nown = GNUNET_TIME_absolute_hton (now);
134 GNUNET_assert (now.value == GNUNET_TIME_absolute_ntoh (nown).value); 134 GNUNET_assert (now.abs_value == GNUNET_TIME_absolute_ntoh (nown).abs_value);
135 135
136 /* check absolute addition */ 136 /* check absolute addition */
137 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_SECONDS); 137 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_SECONDS);
138 GNUNET_assert (future.value == now.value + 1000); 138 GNUNET_assert (future.abs_value == now.abs_value + 1000);
139 139
140 future = GNUNET_TIME_absolute_add (forever, GNUNET_TIME_UNIT_ZERO); 140 future = GNUNET_TIME_absolute_add (forever, GNUNET_TIME_UNIT_ZERO);
141 GNUNET_assert (future.value == forever.value); 141 GNUNET_assert (future.abs_value == forever.abs_value);
142 142
143 rel.value = (UINT64_MAX) - 1024; 143 rel.rel_value = (UINT64_MAX) - 1024;
144 now.value = rel.value; 144 now.abs_value = rel.rel_value;
145 future = GNUNET_TIME_absolute_add (now, rel); 145 future = GNUNET_TIME_absolute_add (now, rel);
146 GNUNET_assert (future.value == forever.value); 146 GNUNET_assert (future.abs_value == forever.abs_value);
147 147
148 /* check zero */ 148 /* check zero */
149 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_ZERO); 149 future = GNUNET_TIME_absolute_add (now, GNUNET_TIME_UNIT_ZERO);
150 GNUNET_assert (future.value == now.value); 150 GNUNET_assert (future.abs_value == now.abs_value);
151 151
152 GNUNET_assert (forever.value == 152 GNUNET_assert (forever.abs_value ==
153 GNUNET_TIME_absolute_subtract (forever, 153 GNUNET_TIME_absolute_subtract (forever,
154 GNUNET_TIME_UNIT_MINUTES).value); 154 GNUNET_TIME_UNIT_MINUTES).abs_value);
155 /*check absolute subtract*/ 155 /*check absolute subtract*/
156 now.value= 50000; 156 now.abs_value= 50000;
157 rel.value = 100000; 157 rel.rel_value = 100000;
158 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.value == 158 GNUNET_assert (GNUNET_TIME_UNIT_ZERO_ABS.abs_value ==
159 (GNUNET_TIME_absolute_subtract(now,rel)).value); 159 (GNUNET_TIME_absolute_subtract(now,rel)).abs_value);
160 rel.value = 10000; 160 rel.rel_value = 10000;
161 GNUNET_assert (40000 == 161 GNUNET_assert (40000 ==
162 (GNUNET_TIME_absolute_subtract(now,rel)).value); 162 (GNUNET_TIME_absolute_subtract(now,rel)).abs_value);
163 163
164 /*check relative divide*/ 164 /*check relative divide*/
165 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.value == 165 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.rel_value ==
166 (GNUNET_TIME_relative_divide (rel,0)).value); 166 (GNUNET_TIME_relative_divide (rel,0)).rel_value);
167 167
168 rel = GNUNET_TIME_UNIT_FOREVER_REL; 168 rel = GNUNET_TIME_UNIT_FOREVER_REL;
169 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.value == 169 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.rel_value ==
170 (GNUNET_TIME_relative_divide (rel,2)).value); 170 (GNUNET_TIME_relative_divide (rel,2)).rel_value);
171 171
172 rel = GNUNET_TIME_relative_divide (relUnit,2); 172 rel = GNUNET_TIME_relative_divide (relUnit,2);
173 GNUNET_assert(rel.value == relUnit.value / 2); 173 GNUNET_assert(rel.rel_value == relUnit.rel_value / 2);
174 174
175 175
176 /* check Return absolute time of 0ms*/ 176 /* check Return absolute time of 0ms*/
177 zero = GNUNET_TIME_absolute_get_zero (); 177 zero = GNUNET_TIME_absolute_get_zero ();
178 178
179 /* check GNUNET_TIME_calculate_eta */ 179 /* check GNUNET_TIME_calculate_eta */
180 last.value = GNUNET_TIME_absolute_get ().value - 1024; 180 last.abs_value = GNUNET_TIME_absolute_get ().abs_value - 1024;
181 forever = GNUNET_TIME_absolute_get_forever (); 181 forever = GNUNET_TIME_absolute_get_forever ();
182 forever.value = forever.value - 1024; 182 forever.abs_value = forever.abs_value - 1024;
183 GNUNET_assert(GNUNET_TIME_absolute_get_zero ().value == 183 GNUNET_assert(GNUNET_TIME_absolute_get_zero ().abs_value ==
184 GNUNET_TIME_calculate_eta (forever, 50000, 100000).value); 184 GNUNET_TIME_calculate_eta (forever, 50000, 100000).rel_value);
185 /* check zero */ 185 /* check zero */
186 GNUNET_log_skip (1, GNUNET_NO); 186 GNUNET_log_skip (1, GNUNET_NO);
187 GNUNET_assert(GNUNET_TIME_UNIT_ZERO.value == 187 GNUNET_assert(GNUNET_TIME_UNIT_ZERO.rel_value ==
188 (GNUNET_TIME_calculate_eta (last, 60000, 50000)).value); 188 (GNUNET_TIME_calculate_eta (last, 60000, 50000)).rel_value);
189 GNUNET_log_skip (0, GNUNET_YES); 189 GNUNET_log_skip (0, GNUNET_YES);
190 /*check forever*/ 190 /*check forever*/
191 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.value == 191 GNUNET_assert(GNUNET_TIME_UNIT_FOREVER_REL.rel_value ==
192 (GNUNET_TIME_calculate_eta (last, 0, 50000)).value); 192 (GNUNET_TIME_calculate_eta (last, 0, 50000)).rel_value);
193 193
194 /*check relative subtract*/ 194 /*check relative subtract*/
195 now = GNUNET_TIME_absolute_get (); 195 now = GNUNET_TIME_absolute_get ();
196 rel.value = now.value; 196 rel.rel_value = now.abs_value;
197 relForever.value = rel.value + 1024; 197 relForever.rel_value = rel.rel_value + 1024;
198 GNUNET_assert(1024 == 198 GNUNET_assert(1024 ==
199 GNUNET_TIME_relative_subtract(relForever,rel).value); 199 GNUNET_TIME_relative_subtract(relForever,rel).rel_value);
200 /*check zero*/ 200 /*check zero*/
201 GNUNET_assert(GNUNET_TIME_relative_get_zero ().value == 201 GNUNET_assert(GNUNET_TIME_relative_get_zero ().rel_value ==
202 GNUNET_TIME_relative_subtract(rel,relForever).value); 202 GNUNET_TIME_relative_subtract(rel,relForever).rel_value);
203 /*check forever*/ 203 /*check forever*/
204 rel.value = UINT64_MAX; 204 rel.rel_value = UINT64_MAX;
205 GNUNET_assert(GNUNET_TIME_relative_get_forever ().value == 205 GNUNET_assert(GNUNET_TIME_relative_get_forever ().rel_value ==
206 GNUNET_TIME_relative_subtract(rel,relForever).value); 206 GNUNET_TIME_relative_subtract(rel,relForever).rel_value);
207 207
208 /*check GNUNET_TIME_relative_min*/ 208 /*check GNUNET_TIME_relative_min*/
209 now = GNUNET_TIME_absolute_get (); 209 now = GNUNET_TIME_absolute_get ();
210 rel.value = now.value; 210 rel.rel_value = now.abs_value;
211 relForever.value = rel.value - 1024; 211 relForever.rel_value = rel.rel_value - 1024;
212 GNUNET_assert(relForever.value == GNUNET_TIME_relative_min(rel,relForever).value); 212 GNUNET_assert(relForever.rel_value == GNUNET_TIME_relative_min(rel,relForever).rel_value);
213 213
214 /*check GNUNET_TIME_relative_max */ 214 /*check GNUNET_TIME_relative_max */
215 GNUNET_assert(rel.value == GNUNET_TIME_relative_max(rel,relForever).value); 215 GNUNET_assert(rel.rel_value == GNUNET_TIME_relative_max(rel,relForever).rel_value);
216 216
217 /*check GNUNET_TIME_absolute_min*/ 217 /*check GNUNET_TIME_absolute_min*/
218 now = GNUNET_TIME_absolute_get (); 218 now = GNUNET_TIME_absolute_get ();
219 last.value = now.value - 1024; 219 last.abs_value = now.abs_value - 1024;
220 GNUNET_assert(last.value == GNUNET_TIME_absolute_min(now,last).value); 220 GNUNET_assert(last.abs_value == GNUNET_TIME_absolute_min(now,last).abs_value);
221 221
222 /*check GNUNET_TIME_absolute_max*/ 222 /*check GNUNET_TIME_absolute_max*/
223 GNUNET_assert(now.value == GNUNET_TIME_absolute_max(now,last).value); 223 GNUNET_assert(now.abs_value == GNUNET_TIME_absolute_max(now,last).abs_value);
224 224
225 return 0; 225 return 0;
226} 226}