tmf: Make TmfTimestamp and TmfTimeRange immutable
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / event / TmfTimestampTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
d7dbf09a 2 * Copyright (c) 2009, 2012 Ericsson
54a7a54c 3 *
d18dd09b
ASL
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
54a7a54c 8 *
d18dd09b
ASL
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
9ee9135e 11 * Francois Chouinard - Adjusted for new Event Model
d18dd09b
ASL
12 *******************************************************************************/
13
6c13869b 14package org.eclipse.linuxtools.tmf.core.tests.event;
d18dd09b 15
75828b1a
FC
16import junit.framework.TestCase;
17
5179fc01 18import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
6c13869b 19import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
f8177ba2 20import org.eclipse.linuxtools.tmf.core.event.TmfTimestampFormat;
cbd4ad82 21
d18dd09b 22/**
cbd4ad82 23 * Test suite for the TmfTimestamp class.
d18dd09b 24 */
3b38ea61 25@SuppressWarnings("nls")
d18dd09b
ASL
26public class TmfTimestampTest extends TestCase {
27
085d898f
FC
28 // ------------------------------------------------------------------------
29 // Variables
30 // ------------------------------------------------------------------------
31
32 private final ITmfTimestamp ts0 = new TmfTimestamp();
f8177ba2 33 private final ITmfTimestamp ts1 = new TmfTimestamp(12345, 0);
085d898f 34 private final ITmfTimestamp ts2 = new TmfTimestamp(12345, -1);
f8177ba2 35 private final ITmfTimestamp ts3 = new TmfTimestamp(12345, 2, 5);
085d898f
FC
36
37 // ------------------------------------------------------------------------
38 // Housekeping
39 // ------------------------------------------------------------------------
40
41 /**
42 * @param name the test name
43 */
44 public TmfTimestampTest(final String name) {
45 super(name);
46 }
47
48 @Override
49 protected void setUp() throws Exception {
50 super.setUp();
51 }
52
53 @Override
54 protected void tearDown() throws Exception {
55 super.tearDown();
56 }
57
58 // ------------------------------------------------------------------------
59 // Constructors
60 // ------------------------------------------------------------------------
d18dd09b 61
54a7a54c
FC
62 /**
63 *
64 */
65 public void testDefaultConstructor() {
f2dd0808
FC
66 assertEquals("getValue", 0, ts0.getValue());
67 assertEquals("getscale", 0, ts0.getScale());
68 assertEquals("getPrecision", 0, ts0.getPrecision());
69 }
70
54a7a54c
FC
71 /**
72 *
73 */
74 public void testValueConstructor() {
f2dd0808
FC
75 assertEquals("getValue", 12345, ts1.getValue());
76 assertEquals("getscale", 0, ts1.getScale());
77 assertEquals("getPrecision", 0, ts1.getPrecision());
78 }
79
54a7a54c
FC
80 /**
81 *
82 */
83 public void testValueScaleConstructor() {
f2dd0808
FC
84 assertEquals("getValue", 12345, ts2.getValue());
85 assertEquals("getscale", -1, ts2.getScale());
86 assertEquals("getPrecision", 0, ts2.getPrecision());
87 }
88
54a7a54c
FC
89 /**
90 *
91 */
92 public void testFullConstructor() {
f2dd0808
FC
93 assertEquals("getValue", 12345, ts3.getValue());
94 assertEquals("getscale", 2, ts3.getScale());
95 assertEquals("getPrecision", 5, ts3.getPrecision());
96 }
97
54a7a54c
FC
98 /**
99 *
100 */
101 public void testCopyConstructor() {
085d898f
FC
102 final ITmfTimestamp ts = new TmfTimestamp(12345, 2, 5);
103 final ITmfTimestamp copy = new TmfTimestamp(ts);
f2dd0808
FC
104
105 assertEquals("getValue", ts.getValue(), copy.getValue());
106 assertEquals("getscale", ts.getScale(), copy.getScale());
107 assertEquals("getPrecision", ts.getPrecision(), copy.getPrecision());
108
109 assertEquals("getValue", 12345, copy.getValue());
110 assertEquals("getscale", 2, copy.getScale());
111 assertEquals("getPrecision", 5, copy.getPrecision());
112 }
113
54a7a54c
FC
114 /**
115 *
116 */
117 public void testCopyNullConstructor() {
f2dd0808 118 try {
6e85c58d 119 new TmfTimestamp(null);
75d42a16 120 fail("TmfTimestamp: null argument");
085d898f 121 } catch (final IllegalArgumentException e) {
f2dd0808
FC
122 }
123 }
124
54a7a54c
FC
125 /**
126 *
127 */
128 public void testCopyConstructorBigBang() {
085d898f 129 final ITmfTimestamp ts = new TmfTimestamp(TmfTimestamp.BIG_BANG);
a4115405
FC
130 assertEquals("getValue", TmfTimestamp.BIG_BANG.getValue(), ts.getValue());
131 assertEquals("getscale", TmfTimestamp.BIG_BANG.getScale(), ts.getScale());
132 assertEquals("getPrecision", TmfTimestamp.BIG_BANG.getPrecision(), ts.getPrecision());
f2dd0808
FC
133 }
134
54a7a54c
FC
135 /**
136 *
137 */
138 public void testCopyConstructorBigCrunch() {
085d898f 139 final ITmfTimestamp ts = new TmfTimestamp(TmfTimestamp.BIG_CRUNCH);
a4115405
FC
140 assertEquals("getValue", TmfTimestamp.BIG_CRUNCH.getValue(), ts.getValue());
141 assertEquals("getscale", TmfTimestamp.BIG_CRUNCH.getScale(), ts.getScale());
142 assertEquals("getPrecision", TmfTimestamp.BIG_CRUNCH.getPrecision(), ts.getPrecision());
f2dd0808
FC
143 }
144
54a7a54c
FC
145 /**
146 *
147 */
148 public void testCopyConstructorZero() {
085d898f 149 final ITmfTimestamp ts = new TmfTimestamp(TmfTimestamp.ZERO);
a4115405
FC
150 assertEquals("getValue", TmfTimestamp.ZERO.getValue(), ts.getValue());
151 assertEquals("getscale", TmfTimestamp.ZERO.getScale(), ts.getScale());
152 assertEquals("getPrecision", TmfTimestamp.ZERO.getPrecision(), ts.getPrecision());
f2dd0808 153 }
d18dd09b 154
9ee9135e
FC
155 // ------------------------------------------------------------------------
156 // hashCode
157 // ------------------------------------------------------------------------
158
54a7a54c
FC
159 /**
160 *
161 */
162 public void testHashCode() {
085d898f
FC
163 final ITmfTimestamp ts0copy = new TmfTimestamp(ts0);
164 final ITmfTimestamp ts1copy = new TmfTimestamp(ts1);
165 final ITmfTimestamp ts2copy = new TmfTimestamp(ts2);
9ee9135e
FC
166
167 assertTrue("hashCode", ts0.hashCode() == ts0copy.hashCode());
168 assertTrue("hashCode", ts1.hashCode() == ts1copy.hashCode());
169 assertTrue("hashCode", ts2.hashCode() == ts2copy.hashCode());
170
171 assertTrue("hashCode", ts0.hashCode() != ts1.hashCode());
172 }
085d898f 173
f2dd0808
FC
174 // ------------------------------------------------------------------------
175 // equals
176 // ------------------------------------------------------------------------
d18dd09b 177
54a7a54c
FC
178 /**
179 *
180 */
181 public void testEqualsReflexivity() {
f2dd0808
FC
182 assertTrue("equals", ts0.equals(ts0));
183 assertTrue("equals", ts1.equals(ts1));
184
185 assertTrue("equals", !ts0.equals(ts1));
186 assertTrue("equals", !ts1.equals(ts0));
187 }
188
54a7a54c
FC
189 /**
190 *
191 */
192 public void testEqualsSymmetry() {
085d898f 193 final ITmfTimestamp ts0copy = new TmfTimestamp(ts0);
f2dd0808
FC
194 assertTrue("equals", ts0.equals(ts0copy));
195 assertTrue("equals", ts0copy.equals(ts0));
196
085d898f 197 final ITmfTimestamp ts1copy = new TmfTimestamp(ts1);
f2dd0808
FC
198 assertTrue("equals", ts1.equals(ts1copy));
199 assertTrue("equals", ts1copy.equals(ts1));
200
085d898f 201 final ITmfTimestamp ts2copy = new TmfTimestamp(ts2);
f2dd0808
FC
202 assertTrue("equals", ts2.equals(ts2copy));
203 assertTrue("equals", ts2copy.equals(ts2));
204 }
205
54a7a54c
FC
206 /**
207 *
208 */
209 public void testEqualsTransivity() {
085d898f
FC
210 final ITmfTimestamp ts0copy1 = new TmfTimestamp(ts0);
211 final ITmfTimestamp ts0copy2 = new TmfTimestamp(ts0copy1);
f2dd0808
FC
212 assertTrue("equals", ts0.equals(ts0copy1));
213 assertTrue("equals", ts0copy1.equals(ts0copy2));
214 assertTrue("equals", ts0.equals(ts0copy2));
215
085d898f
FC
216 final ITmfTimestamp ts1copy1 = new TmfTimestamp(ts1);
217 final ITmfTimestamp ts1copy2 = new TmfTimestamp(ts1copy1);
f2dd0808
FC
218 assertTrue("equals", ts1.equals(ts1copy1));
219 assertTrue("equals", ts1copy1.equals(ts1copy2));
220 assertTrue("equals", ts1.equals(ts1copy2));
221
085d898f
FC
222 final ITmfTimestamp ts2copy1 = new TmfTimestamp(ts2);
223 final ITmfTimestamp ts2copy2 = new TmfTimestamp(ts2copy1);
f2dd0808
FC
224 assertTrue("equals", ts2.equals(ts2copy1));
225 assertTrue("equals", ts2copy1.equals(ts2copy2));
226 assertTrue("equals", ts2.equals(ts2copy2));
227 }
228
54a7a54c
FC
229 /**
230 *
231 */
232 public void testEqualsNull() {
f2dd0808
FC
233 assertTrue("equals", !ts0.equals(null));
234 assertTrue("equals", !ts1.equals(null));
235 }
236
54a7a54c
FC
237 /**
238 *
239 */
240 public void testEqualsNonTimestamp() {
f2dd0808
FC
241 assertFalse("equals", ts0.equals(ts0.toString()));
242 }
085d898f 243
f2dd0808
FC
244 // ------------------------------------------------------------------------
245 // toString
246 // ------------------------------------------------------------------------
d18dd09b 247
54a7a54c
FC
248 /**
249 *
250 */
f8177ba2 251 public void testToStringDefault() {
d96e9054
FC
252 assertEquals("toString", "00:00:00.000 000 000", ts0.toString());
253 assertEquals("toString", "03:25:45.000 000 000", ts1.toString());
254 assertEquals("toString", "00:20:34.500 000 000", ts2.toString());
255 assertEquals("toString", "06:55:00.000 000 000", ts3.toString());
f2dd0808 256 }
d18dd09b 257
f8177ba2
FC
258 /**
259 *
260 */
261 public void testToStringInterval() {
d96e9054
FC
262 assertEquals("toString", "000.000 000 000", ts0.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
263 assertEquals("toString", "12345.000 000 000", ts1.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
264 assertEquals("toString", "1234.500 000 000", ts2.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
265 assertEquals("toString", "1234500.000 000 000", ts3.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
f8177ba2
FC
266 }
267
f2dd0808 268 // ------------------------------------------------------------------------
f2dd0808
FC
269 // normalize
270 // ------------------------------------------------------------------------
d18dd09b 271
54a7a54c
FC
272 /**
273 *
274 */
275 public void testNormalizeOffset() {
f2dd0808
FC
276 ITmfTimestamp ts = ts0.normalize(0, 0);
277 assertEquals("getValue", 0, ts.getValue());
278 assertEquals("getscale", 0, ts.getScale());
279 assertEquals("getPrecision", 0, ts.getPrecision());
280
281 ts = ts0.normalize(12345, 0);
282 assertEquals("getValue", 12345, ts.getValue());
283 assertEquals("getscale", 0, ts.getScale());
284 assertEquals("getPrecision", 0, ts.getPrecision());
285
286 ts = ts0.normalize(10, 0);
287 assertEquals("getValue", 10, ts.getValue());
288 assertEquals("getscale", 0, ts.getScale());
289 assertEquals("getPrecision", 0, ts.getPrecision());
290
291 ts = ts0.normalize(-10, 0);
292 assertEquals("getValue", -10, ts.getValue());
293 assertEquals("getscale", 0, ts.getScale());
294 assertEquals("getPrecision", 0, ts.getPrecision());
295 }
296
54a7a54c
FC
297 /**
298 *
299 */
300 public void testNormalizeOffsetLowerLimits() {
f8177ba2 301 final ITmfTimestamp ref = new TmfTimestamp(Long.MIN_VALUE + 5, 0);
f2dd0808
FC
302
303 ITmfTimestamp ts = ref.normalize(-4, 0);
304 assertEquals("getValue", Long.MIN_VALUE + 1, ts.getValue());
305 assertEquals("getscale", 0, ts.getScale());
306 assertEquals("getPrecision", 0, ts.getPrecision());
307
308 ts = ref.normalize(-5, 0);
309 assertEquals("getValue", Long.MIN_VALUE, ts.getValue());
310 assertEquals("getscale", 0, ts.getScale());
311 assertEquals("getPrecision", 0, ts.getPrecision());
312
313 ts = ref.normalize(-6, 0);
314 assertEquals("getValue", Long.MIN_VALUE, ts.getValue());
315 assertEquals("getscale", 0, ts.getScale());
316 assertEquals("getPrecision", 0, ts.getPrecision());
317 }
318
54a7a54c
FC
319 /**
320 *
321 */
322 public void testNormalizeOffsetUpperLimits() {
f8177ba2 323 final ITmfTimestamp ref = new TmfTimestamp(Long.MAX_VALUE - 5, 0);
f2dd0808
FC
324
325 ITmfTimestamp ts = ref.normalize(4, 0);
326 assertEquals("getValue", Long.MAX_VALUE - 1, ts.getValue());
327 assertEquals("getscale", 0, ts.getScale());
328 assertEquals("getPrecision", 0, ts.getPrecision());
329
330 ts = ref.normalize(5, 0);
331 assertEquals("getValue", Long.MAX_VALUE, ts.getValue());
332 assertEquals("getscale", 0, ts.getScale());
333 assertEquals("getPrecision", 0, ts.getPrecision());
334
335 ts = ref.normalize(6, 0);
336 assertEquals("getValue", Long.MAX_VALUE, ts.getValue());
337 assertEquals("getscale", 0, ts.getScale());
338 assertEquals("getPrecision", 0, ts.getPrecision());
339 }
340
54a7a54c
FC
341 /**
342 *
343 */
344 public void testNormalizeScale() {
f2dd0808
FC
345 ITmfTimestamp ts = ts0.normalize(0, 10);
346 assertEquals("getValue", 0, ts.getValue());
347 assertEquals("getscale", 10, ts.getScale());
348 assertEquals("getPrecision", 0, ts.getPrecision());
349
350 ts = ts0.normalize(0, -10);
351 assertEquals("getValue", 0, ts.getValue());
352 assertEquals("getscale", -10, ts.getScale());
353 assertEquals("getPrecision", 0, ts.getPrecision());
354 }
355
54a7a54c
FC
356 /**
357 *
358 */
359 public void testNormalizedScaleLimits() {
085d898f 360 final int MAX_SCALE_DIFF = 19;
f2dd0808
FC
361
362 // Test below limit
363 try {
364 ts1.normalize(0, +MAX_SCALE_DIFF - 1);
365 ts1.normalize(0, -MAX_SCALE_DIFF + 1);
085d898f 366 } catch (final ArithmeticException e) {
75d42a16 367 fail("normalize: scale error");
f2dd0808
FC
368 }
369
370 // Test at limit
371 try {
372 ts1.normalize(0, +MAX_SCALE_DIFF);
75d42a16 373 fail("normalize: scale error");
f2dd0808 374 ts1.normalize(0, -MAX_SCALE_DIFF);
75d42a16 375 fail("normalize: scale error");
085d898f 376 } catch (final ArithmeticException e) {
f2dd0808
FC
377 }
378
379 // Test over limit
380 try {
381 ts1.normalize(0, +MAX_SCALE_DIFF + 1);
75d42a16 382 fail("normalize: scale error");
f2dd0808 383 ts1.normalize(0, -MAX_SCALE_DIFF - 1);
75d42a16 384 fail("normalize: scale error");
085d898f 385 } catch (final ArithmeticException e) {
f2dd0808
FC
386 }
387 }
388
54a7a54c
FC
389 /**
390 *
391 */
392 public void testNormalizeOffsetAndScaleTrivial() {
085d898f 393 final ITmfTimestamp ts = ts0.normalize(0, 0);
f2dd0808
FC
394 assertEquals("getValue", 0, ts.getValue());
395 assertEquals("getscale", 0, ts.getScale());
396 assertEquals("getPrecision", 0, ts.getPrecision());
397 }
398
54a7a54c
FC
399 /**
400 *
401 */
402 public void testNormalizeOffsetAndScale() {
085d898f 403 final int SCALE = 12;
f2dd0808
FC
404
405 ITmfTimestamp ts = ts0.normalize(0, SCALE);
406 assertEquals("getValue", 0, ts.getValue());
407 assertEquals("getscale", SCALE, ts.getScale());
408 assertEquals("getPrecision", 0, ts.getPrecision());
409
410 ts = ts0.normalize(12345, SCALE);
411 assertEquals("getValue", 12345, ts.getValue());
412 assertEquals("getscale", SCALE, ts.getScale());
413 assertEquals("getPrecision", 0, ts.getPrecision());
414
415 ts = ts0.normalize(10, SCALE);
416 assertEquals("getValue", 10, ts.getValue());
417 assertEquals("getscale", SCALE, ts.getScale());
418 assertEquals("getPrecision", 0, ts.getPrecision());
419
420 ts = ts0.normalize(-10, SCALE);
421 assertEquals("getValue", -10, ts.getValue());
422 assertEquals("getscale", SCALE, ts.getScale());
423 assertEquals("getPrecision", 0, ts.getPrecision());
424 }
425
54a7a54c
FC
426 /**
427 *
428 */
429 public void testNormalizeOffsetAndScale2() {
f2dd0808
FC
430 int SCALE = 2;
431 ITmfTimestamp ts = ts1.normalize(0, SCALE);
432 assertEquals("getValue", 123, ts.getValue());
433 assertEquals("getscale", SCALE, ts.getScale());
434 assertEquals("getPrecision", 0, ts.getPrecision());
435
436 ts = ts1.normalize(12345, SCALE);
437 assertEquals("getValue", 12468, ts.getValue());
438 assertEquals("getscale", SCALE, ts.getScale());
439 assertEquals("getPrecision", 0, ts.getPrecision());
440
441 SCALE = -2;
442 ts = ts1.normalize(0, SCALE);
443 assertEquals("getValue", 1234500, ts.getValue());
444 assertEquals("getscale", SCALE, ts.getScale());
445 assertEquals("getPrecision", 0, ts.getPrecision());
446
447 ts = ts1.normalize(67, SCALE);
448 assertEquals("getValue", 1234567, ts.getValue());
449 assertEquals("getscale", SCALE, ts.getScale());
450 assertEquals("getPrecision", 0, ts.getPrecision());
451 }
085d898f 452
f2dd0808
FC
453 // ------------------------------------------------------------------------
454 // compareTo
455 // ------------------------------------------------------------------------
d18dd09b 456
54a7a54c
FC
457 /**
458 *
459 */
460 @SuppressWarnings("hiding")
461 public void testBasicCompareTo() {
085d898f
FC
462 final ITmfTimestamp ts1 = new TmfTimestamp(900, 0, 50);
463 final ITmfTimestamp ts2 = new TmfTimestamp(1000, 0, 50);
464 final ITmfTimestamp ts3 = new TmfTimestamp(1100, 0, 50);
465 final ITmfTimestamp ts4 = new TmfTimestamp(1000, 0, 75);
d18dd09b 466
f2dd0808
FC
467 assertTrue(ts1.compareTo(ts1) == 0);
468
469 assertTrue("CompareTo", ts1.compareTo(ts2) < 0);
470 assertTrue("CompareTo", ts1.compareTo(ts3) < 0);
471 assertTrue("CompareTo", ts1.compareTo(ts4) < 0);
472
473 assertTrue("CompareTo", ts2.compareTo(ts1) > 0);
474 assertTrue("CompareTo", ts2.compareTo(ts3) < 0);
475 assertTrue("CompareTo", ts2.compareTo(ts4) == 0);
476
477 assertTrue("CompareTo", ts3.compareTo(ts1) > 0);
478 assertTrue("CompareTo", ts3.compareTo(ts2) > 0);
479 assertTrue("CompareTo", ts3.compareTo(ts4) > 0);
480 }
481
54a7a54c
FC
482 /**
483 *
484 */
485 public void testCompareToCornerCases1() {
085d898f
FC
486 final ITmfTimestamp ts0a = new TmfTimestamp(ts0);
487 final ITmfTimestamp ts0b = new TmfTimestamp(ts0.getValue(), ts0.getScale() + 1);
488 final ITmfTimestamp ts0c = new TmfTimestamp(ts0.getValue() + 1, ts0.getScale());
489 final ITmfTimestamp ts0d = new TmfTimestamp(ts0.getValue() + 1, ts0.getScale() + 1);
f2dd0808
FC
490
491 assertTrue("compareTo", ts0.compareTo(ts0, false) == 0);
492 assertTrue("compareTo", ts0.compareTo(ts0a, false) == 0);
493 assertTrue("compareTo", ts0.compareTo(ts0b, false) == 0);
1703b536 494 assertTrue("compareTo", ts0.compareTo(ts0c, false) == -1);
f2dd0808
FC
495 assertTrue("compareTo", ts0.compareTo(ts0d, false) == -1);
496 }
497
54a7a54c
FC
498 /**
499 *
500 */
501 public void testCompareToCornerCases2() {
085d898f
FC
502 final ITmfTimestamp ts0a = new TmfTimestamp(Long.MAX_VALUE, Integer.MAX_VALUE - 1);
503 final ITmfTimestamp ts0b = new TmfTimestamp(0, Integer.MAX_VALUE);
504 final ITmfTimestamp ts0c = new TmfTimestamp(Long.MAX_VALUE, Integer.MAX_VALUE);
f2dd0808 505
1703b536
FC
506 assertTrue("compareTo", ts0a.compareTo(ts0b, false) == 1);
507 assertTrue("compareTo", ts0a.compareTo(ts0c, false) == -1);
f2dd0808 508
1703b536
FC
509 assertTrue("compareTo", ts0b.compareTo(ts0a, false) == -1);
510 assertTrue("compareTo", ts0b.compareTo(ts0c, false) == -1);
f2dd0808 511
1703b536
FC
512 assertTrue("compareTo", ts0c.compareTo(ts0a, false) == 1);
513 assertTrue("compareTo", ts0c.compareTo(ts0b, false) == 1);
f2dd0808
FC
514 }
515
54a7a54c
FC
516 /**
517 *
518 */
519 public void testCompareToCornerCases3() {
085d898f
FC
520 final ITmfTimestamp ts0a = new TmfTimestamp(Long.MIN_VALUE, Integer.MAX_VALUE - 1);
521 final ITmfTimestamp ts0b = new TmfTimestamp(0, Integer.MAX_VALUE);
522 final ITmfTimestamp ts0c = new TmfTimestamp(Long.MIN_VALUE, Integer.MAX_VALUE);
f2dd0808 523
1703b536
FC
524 assertTrue("compareTo", ts0a.compareTo(ts0b, false) == -1);
525 assertTrue("compareTo", ts0a.compareTo(ts0c, false) == 1);
f2dd0808 526
1703b536
FC
527 assertTrue("compareTo", ts0b.compareTo(ts0a, false) == 1);
528 assertTrue("compareTo", ts0b.compareTo(ts0c, false) == 1);
f2dd0808 529
1703b536
FC
530 assertTrue("compareTo", ts0c.compareTo(ts0a, false) == -1);
531 assertTrue("compareTo", ts0c.compareTo(ts0b, false) == -1);
532 }
533
54a7a54c
FC
534 /**
535 *
536 */
537 public void testCompareToCornerCases4() {
1703b536
FC
538 assertTrue("compareTo", ts0.compareTo(null, false) == 1);
539 assertTrue("compareTo", ts0.compareTo(null, true) == 1);
f2dd0808
FC
540 }
541
54a7a54c
FC
542 /**
543 *
544 */
545 @SuppressWarnings("hiding")
546 public void testCompareToSameScale() {
085d898f
FC
547 final ITmfTimestamp ts1 = new TmfTimestamp(900, 0, 50);
548 final ITmfTimestamp ts2 = new TmfTimestamp(1000, 0, 50);
549 final ITmfTimestamp ts3 = new TmfTimestamp(1100, 0, 50);
550 final ITmfTimestamp ts4 = new TmfTimestamp(1000, 0, 75);
f2dd0808
FC
551
552 assertTrue(ts1.compareTo(ts1, false) == 0);
553
554 assertTrue("CompareTo", ts1.compareTo(ts2, false) < 0);
555 assertTrue("CompareTo", ts1.compareTo(ts3, false) < 0);
556 assertTrue("CompareTo", ts1.compareTo(ts4, false) < 0);
557
558 assertTrue("CompareTo", ts2.compareTo(ts1, false) > 0);
559 assertTrue("CompareTo", ts2.compareTo(ts3, false) < 0);
560 assertTrue("CompareTo", ts2.compareTo(ts4, false) == 0);
561
562 assertTrue("CompareTo", ts3.compareTo(ts1, false) > 0);
563 assertTrue("CompareTo", ts3.compareTo(ts2, false) > 0);
564 assertTrue("CompareTo", ts3.compareTo(ts4, false) > 0);
565 }
566
54a7a54c
FC
567 /**
568 *
569 */
570 @SuppressWarnings("hiding")
571 public void testCompareToDifferentScale() {
085d898f
FC
572 final ITmfTimestamp ts1 = new TmfTimestamp(9000, -1, 50);
573 final ITmfTimestamp ts2 = new TmfTimestamp(1000, 0, 50);
574 final ITmfTimestamp ts3 = new TmfTimestamp(110, 1, 50);
575 final ITmfTimestamp ts4 = new TmfTimestamp(1, 3, 75);
f2dd0808
FC
576
577 assertTrue("CompareTo", ts1.compareTo(ts1, false) == 0);
578
579 assertTrue("CompareTo", ts1.compareTo(ts2, false) < 0);
580 assertTrue("CompareTo", ts1.compareTo(ts3, false) < 0);
581 assertTrue("CompareTo", ts1.compareTo(ts4, false) < 0);
582
583 assertTrue("CompareTo", ts2.compareTo(ts1, false) > 0);
584 assertTrue("CompareTo", ts2.compareTo(ts3, false) < 0);
585 assertTrue("CompareTo", ts2.compareTo(ts4, false) == 0);
586
587 assertTrue("CompareTo", ts3.compareTo(ts1, false) > 0);
588 assertTrue("CompareTo", ts3.compareTo(ts2, false) > 0);
589 assertTrue("CompareTo", ts3.compareTo(ts4, false) > 0);
590 }
591
54a7a54c
FC
592 /**
593 *
594 */
595 @SuppressWarnings("hiding")
596 public void testCompareToWithinPrecision() {
085d898f
FC
597 final ITmfTimestamp ts1 = new TmfTimestamp(900, 0, 50);
598 final ITmfTimestamp ts2 = new TmfTimestamp(1000, 0, 50);
599 final ITmfTimestamp ts3 = new TmfTimestamp(1100, 0, 50);
600 final ITmfTimestamp ts4 = new TmfTimestamp(1000, 0, 75);
f2dd0808
FC
601
602 assertTrue("CompareTo", ts1.compareTo(ts1, true) == 0);
603
604 assertTrue("CompareTo", ts1.compareTo(ts2, true) == 0);
605 assertTrue("CompareTo", ts1.compareTo(ts3, true) < 0);
606 assertTrue("CompareTo", ts1.compareTo(ts4, true) == 0);
607
608 assertTrue("CompareTo", ts2.compareTo(ts1, true) == 0);
609 assertTrue("CompareTo", ts2.compareTo(ts3, true) == 0);
610 assertTrue("CompareTo", ts2.compareTo(ts4, true) == 0);
611
612 assertTrue("CompareTo", ts3.compareTo(ts1, true) > 0);
613 assertTrue("CompareTo", ts3.compareTo(ts2, true) == 0);
614 assertTrue("CompareTo", ts3.compareTo(ts4, true) == 0);
615 }
cbd4ad82 616
54a7a54c
FC
617 /**
618 *
619 */
620 @SuppressWarnings("hiding")
621 public void testCompareToLargeScale1() {
085d898f
FC
622 final ITmfTimestamp ts1 = new TmfTimestamp(-1, 100);
623 final ITmfTimestamp ts2 = new TmfTimestamp(-1000, -100);
624 final ITmfTimestamp ts3 = new TmfTimestamp(1, 100);
625 final ITmfTimestamp ts4 = new TmfTimestamp(1000, -100);
cbd4ad82 626
f2dd0808
FC
627 assertTrue("CompareTo", ts1.compareTo(ts2, false) < 0);
628 assertTrue("CompareTo", ts1.compareTo(ts3, false) < 0);
629 assertTrue("CompareTo", ts1.compareTo(ts4, false) < 0);
cbd4ad82 630
f2dd0808
FC
631 assertTrue("CompareTo", ts2.compareTo(ts1, false) > 0);
632 assertTrue("CompareTo", ts2.compareTo(ts3, false) < 0);
633 assertTrue("CompareTo", ts2.compareTo(ts4, false) < 0);
cbd4ad82 634
f2dd0808
FC
635 assertTrue("CompareTo", ts3.compareTo(ts1, false) > 0);
636 assertTrue("CompareTo", ts3.compareTo(ts2, false) > 0);
637 assertTrue("CompareTo", ts3.compareTo(ts4, false) > 0);
d18dd09b 638
f2dd0808
FC
639 assertTrue("CompareTo", ts4.compareTo(ts1, false) > 0);
640 assertTrue("CompareTo", ts4.compareTo(ts2, false) > 0);
641 assertTrue("CompareTo", ts4.compareTo(ts3, false) < 0);
642 }
643
54a7a54c
FC
644 /**
645 *
646 */
647 public void testCompareToLargeScale2() {
085d898f
FC
648 final ITmfTimestamp ts0a = new TmfTimestamp(0, Integer.MAX_VALUE);
649 final ITmfTimestamp ts0b = new TmfTimestamp(1, Integer.MAX_VALUE);
d18dd09b 650
f2dd0808
FC
651 assertTrue("CompareTo", ts0a.compareTo(ts0, false) == 0);
652 assertTrue("CompareTo", ts0.compareTo(ts0a, false) == 0);
d18dd09b 653
f2dd0808
FC
654 assertTrue("CompareTo", ts0b.compareTo(ts0, false) == 1);
655 assertTrue("CompareTo", ts0.compareTo(ts0b, false) == -1);
656 }
d18dd09b 657
73005152
BH
658 // ------------------------------------------------------------------------
659 // getDelta
660 // ------------------------------------------------------------------------
085d898f 661
54a7a54c
FC
662 /**
663 *
664 */
665 @SuppressWarnings("hiding")
666 public void testDelta() {
f2dd0808 667 // Delta for same scale and precision (delta > 0)
7656d70a
FC
668 ITmfTimestamp ts0 = new TmfTimestamp(10, 9);
669 ITmfTimestamp ts1 = new TmfTimestamp(5, 9);
670 ITmfTimestamp exp = new TmfTimestamp(5, 9);
f2dd0808
FC
671
672 ITmfTimestamp delta = ts0.getDelta(ts1);
673 assertEquals("getDelta", 0, delta.compareTo(exp, false));
674
675 // Delta for same scale and precision (delta < 0)
676 ts0 = new TmfTimestamp(5, 9);
677 ts1 = new TmfTimestamp(10, 9);
678 exp = new TmfTimestamp(-5, 9);
679
680 delta = ts0.getDelta(ts1);
681 assertEquals("getDelta", 0, delta.compareTo(exp, false));
682
683 // Delta for different scale and same precision (delta > 0)
684 ts0 = new TmfTimestamp(5, 9);
5179fc01 685 ts1 = new TmfTimestamp(10, 8);
f2dd0808 686 exp = new TmfTimestamp(4, 9);
73005152
BH
687
688 delta = ts0.getDelta(ts1);
689 assertEquals("getDelta", 0, delta.compareTo(exp, false));
690
691 // Delta for different scale and same precision (delta > 0)
f2dd0808 692 ts0 = new TmfTimestamp(5, 9);
5179fc01 693 ts1 = new TmfTimestamp(10, 7);
f2dd0808 694 exp = new TmfTimestamp(5, 9);
73005152
BH
695
696 delta = ts0.getDelta(ts1);
697 assertEquals("getDelta", 0, delta.compareTo(exp, false));
698
699 // Delta for different scale and same precision
5179fc01 700 ts0 = new TmfTimestamp(10, 9);
f2dd0808 701 ts1 = new TmfTimestamp(5, 8);
5179fc01 702 exp = new TmfTimestamp(10, 9);
73005152
BH
703
704 delta = ts0.getDelta(ts1);
705 assertEquals("getDelta", 0, delta.compareTo(exp, false));
706
707 // Delta for same scale and different precision
5179fc01 708 ts0 = new TmfTimestamp(10, 9, 1);
f2dd0808
FC
709 ts1 = new TmfTimestamp(5, 9, 2);
710 exp = new TmfTimestamp(5, 9, 3);
73005152
BH
711
712 delta = ts0.getDelta(ts1);
713 assertEquals("getDelta", 0, delta.compareTo(exp, true));
5179fc01 714 assertEquals("precision", 3, delta.getPrecision());
f2dd0808 715
73005152 716 // Delta for same scale and different precision
f2dd0808 717 ts0 = new TmfTimestamp(5, 9, 2);
5179fc01
FC
718 ts1 = new TmfTimestamp(10, 9, 1);
719 exp = new TmfTimestamp(-5, 9, 3);
73005152
BH
720
721 delta = ts0.getDelta(ts1);
f2dd0808 722 assertEquals("getDelta", 0, delta.compareTo(exp, true));
5179fc01 723 assertEquals("precision", 3, delta.getPrecision());
73005152
BH
724
725 // Delta for different scale and different precision
f2dd0808 726 ts0 = new TmfTimestamp(5, 9, 2);
5179fc01 727 ts1 = new TmfTimestamp(10, 8, 1);
f2dd0808 728 exp = new TmfTimestamp(4, 9, 3);
73005152
BH
729 delta = ts0.getDelta(ts1);
730 assertEquals("getDelta", 0, delta.compareTo(exp, true));
731 assertEquals("precision", 2, delta.getPrecision());
f2dd0808
FC
732 }
733
d18dd09b 734}
This page took 0.0749 seconds and 5 git commands to generate.