Merge branch 'master' into lttng-kepler
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / event / TmfTimeRangeTest.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2010, 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Adjusted for new Event Model
12 *******************************************************************************/
13
14 package org.eclipse.linuxtools.tmf.core.tests.event;
15
16 import junit.framework.TestCase;
17
18 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
19 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
20 import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
21
22 /**
23 * Test suite for the TmfTimeRange class.
24 */
25 @SuppressWarnings("nls")
26 public class TmfTimeRangeTest extends TestCase {
27
28 // ------------------------------------------------------------------------
29 // Housekeeping
30 // ------------------------------------------------------------------------
31
32 /**
33 * @param name the test name
34 */
35 public TmfTimeRangeTest(final String name) {
36 super(name);
37 }
38
39 @Override
40 protected void setUp() throws Exception {
41 super.setUp();
42 }
43
44 @Override
45 protected void tearDown() throws Exception {
46 super.tearDown();
47 }
48
49 // ------------------------------------------------------------------------
50 // Constructors
51 // ------------------------------------------------------------------------
52
53 /**
54 *
55 */
56 public void testConstructor() {
57 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
58 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
59 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
60
61 assertEquals("startTime", ts1, range.getStartTime());
62 assertEquals("endTime", ts2, range.getEndTime());
63 }
64
65 /**
66 *
67 */
68 public void testBadConstructor() {
69 try {
70 new TmfTimeRange(TmfTimestamp.BIG_BANG, null);
71 fail("TmfTimeRange: bad end time");
72 } catch (final IllegalArgumentException e) {
73 // Success
74 }
75
76 try {
77 new TmfTimeRange(null, TmfTimestamp.BIG_CRUNCH);
78 fail("TmfTimeRange: bad start time");
79 } catch (final IllegalArgumentException e) {
80 // Success
81 }
82 }
83
84 /**
85 *
86 */
87 public void testOpenRange1() {
88 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
89 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, ts2);
90
91 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
92 assertEquals("endTime", ts2, range.getEndTime());
93 }
94
95 /**
96 *
97 */
98 public void testOpenRange2() {
99 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
100 final TmfTimeRange range = new TmfTimeRange(ts1, TmfTimestamp.BIG_CRUNCH);
101
102 assertEquals("startTime", ts1, range.getStartTime());
103 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
104 }
105
106 /**
107 *
108 */
109 public void testOpenRange3() {
110 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
111
112 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
113 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
114 }
115
116 /**
117 *
118 */
119 public void testCopyConstructor() {
120 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
121 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
122 final TmfTimeRange range0 = new TmfTimeRange(ts1, ts2);
123 final TmfTimeRange range1 = new TmfTimeRange(range0);
124
125 assertEquals("startTime", ts1, range1.getStartTime());
126 assertEquals("endTime", ts2, range1.getEndTime());
127
128 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
129 final TmfTimeRange range3 = new TmfTimeRange(range2);
130
131 assertEquals("startTime", TmfTimestamp.BIG_BANG, range3.getStartTime());
132 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range3.getEndTime());
133 }
134
135 /**
136 *
137 */
138 public void testCopyConstructor2() {
139 try {
140 new TmfTimeRange(null);
141 fail("TmfTimeRange: null argument");
142 } catch (final IllegalArgumentException e) {
143 // Success
144 }
145 }
146
147 // ------------------------------------------------------------------------
148 // hashCode
149 // ------------------------------------------------------------------------
150
151 /**
152 *
153 */
154 public void testHashCode() {
155 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
156 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
157 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
158 final TmfTimeRange range1b = new TmfTimeRange(range1);
159 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
160 final TmfTimeRange range2b = new TmfTimeRange(range2);
161
162 assertTrue("hashCode", range1.hashCode() == range1b.hashCode());
163 assertTrue("hashCode", range2.hashCode() == range2b.hashCode());
164
165 assertTrue("hashCode", range1.hashCode() != range2.hashCode());
166 }
167
168 // ------------------------------------------------------------------------
169 // equals
170 // ------------------------------------------------------------------------
171
172 /**
173 *
174 */
175 public void testEqualsReflexivity() {
176 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
177 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
178 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
179 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
180
181 assertTrue("equals", range1.equals(range1));
182 assertTrue("equals", range2.equals(range2));
183
184 assertTrue("equals", !range1.equals(range2));
185 assertTrue("equals", !range2.equals(range1));
186 }
187
188 /**
189 *
190 */
191 public void testEqualsSymmetry() {
192 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
193 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
194 final TmfTimeRange range1a = new TmfTimeRange(ts1, ts2);
195 final TmfTimeRange range1b = new TmfTimeRange(ts1, ts2);
196
197 final TmfTimeRange range2a = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
198 final TmfTimeRange range2b = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
199
200 assertTrue("equals", range1a.equals(range1b));
201 assertTrue("equals", range1b.equals(range1a));
202
203 assertTrue("equals", range2a.equals(range2b));
204 assertTrue("equals", range2b.equals(range2a));
205 }
206
207 /**
208 *
209 */
210 public void testEqualsTransivity() {
211 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
212 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
213 final TmfTimeRange range1a = new TmfTimeRange(ts1, ts2);
214 final TmfTimeRange range1b = new TmfTimeRange(ts1, ts2);
215 final TmfTimeRange range1c = new TmfTimeRange(ts1, ts2);
216
217 assertTrue("equals", range1a.equals(range1b));
218 assertTrue("equals", range1b.equals(range1c));
219 assertTrue("equals", range1a.equals(range1c));
220 }
221
222 /**
223 *
224 */
225 public void testEqualsNull() {
226 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
227 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
228 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
229
230 assertTrue("equals", !range1.equals(null));
231 }
232
233 /**
234 *
235 */
236 public void testEqualsBadType() {
237 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
238 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
239 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
240
241 assertTrue("equals", !range1.equals(ts1));
242 }
243
244 /**
245 *
246 */
247 public void testEqualStartTime() {
248 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
249 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
250 final ITmfTimestamp ts3 = new TmfTimestamp(12355);
251
252 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts3);
253 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
254 final TmfTimeRange range3 = new TmfTimeRange(ts1, ts2);
255
256 assertTrue("equals", !range1.equals(range2));
257 assertTrue("equals", !range1.equals(range3));
258 }
259
260 /**
261 *
262 */
263 public void testEqualsEndTime() {
264 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
265 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
266 final ITmfTimestamp ts3 = new TmfTimestamp(12355);
267
268 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
269 final TmfTimeRange range2 = new TmfTimeRange(ts1, ts3);
270 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts3);
271
272 assertTrue("equals", !range1.equals(range2));
273 assertTrue("equals", !range1.equals(range3));
274 }
275
276 // ------------------------------------------------------------------------
277 // toString
278 // ------------------------------------------------------------------------
279
280 /**
281 *
282 */
283 public void testToString() {
284 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
285 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
286 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
287
288 final String expected = "TmfTimeRange [fStartTime=" + ts1 + ", fEndTime=" + ts2 + "]";
289 assertEquals("toString", expected, range.toString());
290 }
291
292 // ------------------------------------------------------------------------
293 // contains
294 // ------------------------------------------------------------------------
295
296 /**
297 *
298 */
299 public void testContainsTimestamp() {
300 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
301 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
302 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
303
304 assertTrue("contains (lower bound)", range.contains(new TmfTimestamp(12345)));
305 assertTrue("contains (higher bound)", range.contains(new TmfTimestamp(12350)));
306 assertTrue("contains (within bounds)", range.contains(new TmfTimestamp(12346)));
307
308 assertFalse("contains (low value)", range.contains(new TmfTimestamp(12340)));
309 assertFalse("contains (high value)", range.contains(new TmfTimestamp(12351)));
310
311 assertTrue("contains (zero)", range.contains(TmfTimestamp.ZERO));
312 }
313
314 /**
315 *
316 */
317 public void testContainsRange() {
318 final ITmfTimestamp ts1 = new TmfTimestamp(10);
319 final ITmfTimestamp ts2 = new TmfTimestamp(20);
320 final ITmfTimestamp ts3 = new TmfTimestamp(30);
321 final ITmfTimestamp ts4 = new TmfTimestamp(40);
322 final ITmfTimestamp ts5 = new TmfTimestamp(50);
323 final ITmfTimestamp ts6 = new TmfTimestamp(60);
324 final ITmfTimestamp ts7 = new TmfTimestamp(70);
325 final ITmfTimestamp ts8 = new TmfTimestamp(80);
326
327 // Reference range
328 final TmfTimeRange range0 = new TmfTimeRange(ts3, ts6);
329
330 // Start time below range
331 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
332 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
333 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts4);
334 final TmfTimeRange range4 = new TmfTimeRange(ts2, ts6);
335 final TmfTimeRange range5 = new TmfTimeRange(ts2, ts7);
336
337 assertFalse("contains", range0.contains(range1));
338 assertFalse("contains", range0.contains(range2));
339 assertFalse("contains", range0.contains(range3));
340 assertFalse("contains", range0.contains(range4));
341 assertFalse("contains", range0.contains(range5));
342
343 // End time above range
344 final TmfTimeRange range6 = new TmfTimeRange(ts3, ts7);
345 final TmfTimeRange range7 = new TmfTimeRange(ts4, ts7);
346 final TmfTimeRange range8 = new TmfTimeRange(ts6, ts7);
347 final TmfTimeRange range9 = new TmfTimeRange(ts7, ts8);
348
349 assertFalse("contains", range0.contains(range6));
350 assertFalse("contains", range0.contains(range7));
351 assertFalse("contains", range0.contains(range8));
352 assertFalse("contains", range0.contains(range9));
353
354 // Within range
355 final TmfTimeRange range10 = new TmfTimeRange(ts3, ts4);
356 final TmfTimeRange range11 = new TmfTimeRange(ts3, ts6);
357 final TmfTimeRange range12 = new TmfTimeRange(ts4, ts5);
358 final TmfTimeRange range13 = new TmfTimeRange(ts4, ts6);
359
360 assertTrue("contains", range0.contains(range10));
361 assertTrue("contains", range0.contains(range11));
362 assertTrue("contains", range0.contains(range12));
363 assertTrue("contains", range0.contains(range13));
364 }
365
366 // ------------------------------------------------------------------------
367 // getIntersection
368 // ------------------------------------------------------------------------
369
370 /**
371 *
372 */
373 public void testGetIntersection() {
374
375 final ITmfTimestamp ts1a = new TmfTimestamp(1000);
376 final ITmfTimestamp ts1b = new TmfTimestamp(2000);
377 final TmfTimeRange range1 = new TmfTimeRange(ts1a, ts1b);
378
379 final ITmfTimestamp ts2a = new TmfTimestamp(2000);
380 final ITmfTimestamp ts2b = new TmfTimestamp(3000);
381 final TmfTimeRange range2 = new TmfTimeRange(ts2a, ts2b);
382
383 final ITmfTimestamp ts3a = new TmfTimestamp(3000);
384 final ITmfTimestamp ts3b = new TmfTimestamp(4000);
385 final TmfTimeRange range3 = new TmfTimeRange(ts3a, ts3b);
386
387 final ITmfTimestamp ts4a = new TmfTimestamp(1500);
388 final ITmfTimestamp ts4b = new TmfTimestamp(2500);
389 final TmfTimeRange range4 = new TmfTimeRange(ts4a, ts4b);
390
391 final ITmfTimestamp ts5a = new TmfTimestamp(1500);
392 final ITmfTimestamp ts5b = new TmfTimestamp(2000);
393 final TmfTimeRange range5 = new TmfTimeRange(ts5a, ts5b);
394
395 final ITmfTimestamp ts6a = new TmfTimestamp(2000);
396 final ITmfTimestamp ts6b = new TmfTimestamp(2500);
397 final TmfTimeRange range6 = new TmfTimeRange(ts6a, ts6b);
398
399 final ITmfTimestamp ts7a = new TmfTimestamp(1500);
400 final ITmfTimestamp ts7b = new TmfTimestamp(3500);
401 final TmfTimeRange range7 = new TmfTimeRange(ts7a, ts7b);
402
403 final ITmfTimestamp ts8a = new TmfTimestamp(2250);
404 final ITmfTimestamp ts8b = new TmfTimestamp(2750);
405 final TmfTimeRange range8 = new TmfTimeRange(ts8a, ts8b);
406
407 assertEquals("getIntersection (below - not contiguous)", null, range1.getIntersection(range3));
408 assertEquals("getIntersection (above - not contiguous)", null, range3.getIntersection(range1));
409
410 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b, ts1b), range1.getIntersection(range2));
411 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a, ts3a), range3.getIntersection(range2));
412
413 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a, ts4b), range2.getIntersection(range4));
414 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a, ts4b), range4.getIntersection(range2));
415
416 assertEquals("getIntersection (within - overlap1)", range6, range2.getIntersection(range6));
417 assertEquals("getIntersection (within - overlap2)", range6, range6.getIntersection(range2));
418
419 assertEquals("getIntersection (within - overlap3)", range5, range1.getIntersection(range5));
420 assertEquals("getIntersection (within - overlap4)", range5, range5.getIntersection(range1));
421
422 assertEquals("getIntersection (within - overlap5)", range8, range2.getIntersection(range8));
423 assertEquals("getIntersection (within - overlap6)", range8, range8.getIntersection(range2));
424
425 assertEquals("getIntersection (accross1)", range2, range2.getIntersection(range7));
426 assertEquals("getIntersection (accross2)", range2, range7.getIntersection(range2));
427 }
428
429 }
This page took 0.051314 seconds and 6 git commands to generate.