1 /*******************************************************************************
2 * Copyright (c) 2009, 2010, 2012 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Adjusted for new Event Model
12 *******************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.event
;
16 import junit
.framework
.TestCase
;
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
;
23 * Test suite for the TmfTimeRange class.
25 @SuppressWarnings("nls")
26 public class TmfTimeRangeTest
extends TestCase
{
28 // ------------------------------------------------------------------------
30 // ------------------------------------------------------------------------
33 * @param name the test name
35 public TmfTimeRangeTest(final String name
) {
40 protected void setUp() throws Exception
{
45 protected void tearDown() throws Exception
{
49 // ------------------------------------------------------------------------
51 // ------------------------------------------------------------------------
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
);
61 assertEquals("startTime", ts1
, range
.getStartTime());
62 assertEquals("endTime", ts2
, range
.getEndTime());
68 public void testBadConstructor() {
70 new TmfTimeRange(TmfTimestamp
.BIG_BANG
, null);
71 fail("TmfTimeRange: bad end time");
72 } catch (final IllegalArgumentException e
) {
77 new TmfTimeRange(null, TmfTimestamp
.BIG_CRUNCH
);
78 fail("TmfTimeRange: bad start time");
79 } catch (final IllegalArgumentException e
) {
87 public void testOpenRange1() {
88 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
89 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, ts2
);
91 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
92 assertEquals("endTime", ts2
, range
.getEndTime());
98 public void testOpenRange2() {
99 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
100 final TmfTimeRange range
= new TmfTimeRange(ts1
, TmfTimestamp
.BIG_CRUNCH
);
102 assertEquals("startTime", ts1
, range
.getStartTime());
103 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
109 public void testOpenRange3() {
110 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
112 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
113 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
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
);
125 assertEquals("startTime", ts1
, range1
.getStartTime());
126 assertEquals("endTime", ts2
, range1
.getEndTime());
128 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
129 final TmfTimeRange range3
= new TmfTimeRange(range2
);
131 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range3
.getStartTime());
132 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range3
.getEndTime());
138 public void testCopyConstructor2() {
140 new TmfTimeRange(null);
141 fail("TmfTimeRange: null argument");
142 } catch (final IllegalArgumentException e
) {
147 // ------------------------------------------------------------------------
149 // ------------------------------------------------------------------------
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
);
162 assertTrue("hashCode", range1
.hashCode() == range1b
.hashCode());
163 assertTrue("hashCode", range2
.hashCode() == range2b
.hashCode());
165 assertTrue("hashCode", range1
.hashCode() != range2
.hashCode());
168 // ------------------------------------------------------------------------
170 // ------------------------------------------------------------------------
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
);
181 assertTrue("equals", range1
.equals(range1
));
182 assertTrue("equals", range2
.equals(range2
));
184 assertTrue("equals", !range1
.equals(range2
));
185 assertTrue("equals", !range2
.equals(range1
));
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
);
197 final TmfTimeRange range2a
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
198 final TmfTimeRange range2b
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
200 assertTrue("equals", range1a
.equals(range1b
));
201 assertTrue("equals", range1b
.equals(range1a
));
203 assertTrue("equals", range2a
.equals(range2b
));
204 assertTrue("equals", range2b
.equals(range2a
));
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
);
217 assertTrue("equals", range1a
.equals(range1b
));
218 assertTrue("equals", range1b
.equals(range1c
));
219 assertTrue("equals", range1a
.equals(range1c
));
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
);
230 assertTrue("equals", !range1
.equals(null));
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
);
241 assertTrue("equals", !range1
.equals(ts1
));
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);
252 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts3
);
253 final TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
254 final TmfTimeRange range3
= new TmfTimeRange(ts1
, ts2
);
256 assertTrue("equals", !range1
.equals(range2
));
257 assertTrue("equals", !range1
.equals(range3
));
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);
268 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
269 final TmfTimeRange range2
= new TmfTimeRange(ts1
, ts3
);
270 final TmfTimeRange range3
= new TmfTimeRange(ts2
, ts3
);
272 assertTrue("equals", !range1
.equals(range2
));
273 assertTrue("equals", !range1
.equals(range3
));
276 // ------------------------------------------------------------------------
278 // ------------------------------------------------------------------------
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
);
288 final String expected
= "TmfTimeRange [fStartTime=" + ts1
+ ", fEndTime=" + ts2
+ "]";
289 assertEquals("toString", expected
, range
.toString());
292 // ------------------------------------------------------------------------
294 // ------------------------------------------------------------------------
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
);
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)));
308 assertFalse("contains (low value)", range
.contains(new TmfTimestamp(12340)));
309 assertFalse("contains (high value)", range
.contains(new TmfTimestamp(12351)));
311 assertTrue("contains (zero)", range
.contains(TmfTimestamp
.ZERO
));
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);
328 final TmfTimeRange range0
= new TmfTimeRange(ts3
, ts6
);
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
);
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
));
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
);
349 assertFalse("contains", range0
.contains(range6
));
350 assertFalse("contains", range0
.contains(range7
));
351 assertFalse("contains", range0
.contains(range8
));
352 assertFalse("contains", range0
.contains(range9
));
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
);
360 assertTrue("contains", range0
.contains(range10
));
361 assertTrue("contains", range0
.contains(range11
));
362 assertTrue("contains", range0
.contains(range12
));
363 assertTrue("contains", range0
.contains(range13
));
366 // ------------------------------------------------------------------------
368 // ------------------------------------------------------------------------
373 public void testGetIntersection() {
375 final ITmfTimestamp ts1a
= new TmfTimestamp(1000);
376 final ITmfTimestamp ts1b
= new TmfTimestamp(2000);
377 final TmfTimeRange range1
= new TmfTimeRange(ts1a
, ts1b
);
379 final ITmfTimestamp ts2a
= new TmfTimestamp(2000);
380 final ITmfTimestamp ts2b
= new TmfTimestamp(3000);
381 final TmfTimeRange range2
= new TmfTimeRange(ts2a
, ts2b
);
383 final ITmfTimestamp ts3a
= new TmfTimestamp(3000);
384 final ITmfTimestamp ts3b
= new TmfTimestamp(4000);
385 final TmfTimeRange range3
= new TmfTimeRange(ts3a
, ts3b
);
387 final ITmfTimestamp ts4a
= new TmfTimestamp(1500);
388 final ITmfTimestamp ts4b
= new TmfTimestamp(2500);
389 final TmfTimeRange range4
= new TmfTimeRange(ts4a
, ts4b
);
391 final ITmfTimestamp ts5a
= new TmfTimestamp(1500);
392 final ITmfTimestamp ts5b
= new TmfTimestamp(2000);
393 final TmfTimeRange range5
= new TmfTimeRange(ts5a
, ts5b
);
395 final ITmfTimestamp ts6a
= new TmfTimestamp(2000);
396 final ITmfTimestamp ts6b
= new TmfTimestamp(2500);
397 final TmfTimeRange range6
= new TmfTimeRange(ts6a
, ts6b
);
399 final ITmfTimestamp ts7a
= new TmfTimestamp(1500);
400 final ITmfTimestamp ts7b
= new TmfTimestamp(3500);
401 final TmfTimeRange range7
= new TmfTimeRange(ts7a
, ts7b
);
403 final ITmfTimestamp ts8a
= new TmfTimestamp(2250);
404 final ITmfTimestamp ts8b
= new TmfTimestamp(2750);
405 final TmfTimeRange range8
= new TmfTimeRange(ts8a
, ts8b
);
407 assertEquals("getIntersection (below - not contiguous)", null, range1
.getIntersection(range3
));
408 assertEquals("getIntersection (above - not contiguous)", null, range3
.getIntersection(range1
));
410 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b
, ts1b
), range1
.getIntersection(range2
));
411 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a
, ts3a
), range3
.getIntersection(range2
));
413 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a
, ts4b
), range2
.getIntersection(range4
));
414 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a
, ts4b
), range4
.getIntersection(range2
));
416 assertEquals("getIntersection (within - overlap1)", range6
, range2
.getIntersection(range6
));
417 assertEquals("getIntersection (within - overlap2)", range6
, range6
.getIntersection(range2
));
419 assertEquals("getIntersection (within - overlap3)", range5
, range1
.getIntersection(range5
));
420 assertEquals("getIntersection (within - overlap4)", range5
, range5
.getIntersection(range1
));
422 assertEquals("getIntersection (within - overlap5)", range8
, range2
.getIntersection(range8
));
423 assertEquals("getIntersection (within - overlap6)", range8
, range8
.getIntersection(range2
));
425 assertEquals("getIntersection (accross1)", range2
, range2
.getIntersection(range7
));
426 assertEquals("getIntersection (accross2)", range2
, range7
.getIntersection(range2
));