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 // ------------------------------------------------------------------------
32 public TmfTimeRangeTest(final String name
) {
37 protected void setUp() throws Exception
{
42 protected void tearDown() throws Exception
{
46 // ------------------------------------------------------------------------
48 // ------------------------------------------------------------------------
50 public void testConstructor() throws Exception
{
51 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
52 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
53 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
55 assertEquals("startTime", ts1
, range
.getStartTime());
56 assertEquals("endTime", ts2
, range
.getEndTime());
59 public void testBadConstructor() throws Exception
{
61 new TmfTimeRange(TmfTimestamp
.BIG_BANG
, null);
62 fail("TmfTimeRange: bad end time");
63 } catch (final IllegalArgumentException e
) {
68 new TmfTimeRange(null, TmfTimestamp
.BIG_CRUNCH
);
69 fail("TmfTimeRange: bad start time");
70 } catch (final IllegalArgumentException e
) {
75 public void testOpenRange1() throws Exception
{
76 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
77 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, ts2
);
79 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
80 assertEquals("endTime", ts2
, range
.getEndTime());
83 public void testOpenRange2() throws Exception
{
84 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
85 final TmfTimeRange range
= new TmfTimeRange(ts1
, TmfTimestamp
.BIG_CRUNCH
);
87 assertEquals("startTime", ts1
, range
.getStartTime());
88 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
91 public void testOpenRange3() throws Exception
{
92 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
94 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
95 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
98 public void testCopyConstructor() throws Exception
{
99 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
100 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
101 final TmfTimeRange range0
= new TmfTimeRange(ts1
, ts2
);
102 final TmfTimeRange range1
= new TmfTimeRange(range0
);
104 assertEquals("startTime", ts1
, range1
.getStartTime());
105 assertEquals("endTime", ts2
, range1
.getEndTime());
107 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
108 final TmfTimeRange range3
= new TmfTimeRange(range2
);
110 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range3
.getStartTime());
111 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range3
.getEndTime());
114 public void testCopyConstructor2() throws Exception
{
116 new TmfTimeRange(null);
117 fail("TmfTimeRange: null argument");
118 } catch (final IllegalArgumentException e
) {
123 // ------------------------------------------------------------------------
125 // ------------------------------------------------------------------------
127 public void testClone() throws Exception
{
128 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
129 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
131 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
132 final TmfTimeRange clone
= range
.clone();
134 assertTrue("clone", range
.clone().equals(range
));
135 assertTrue("clone", clone
.clone().equals(clone
));
137 assertEquals("clone", range
, clone
);
138 assertEquals("clone", ts1
, clone
.getStartTime());
139 assertEquals("clone", ts2
, clone
.getEndTime());
142 // ------------------------------------------------------------------------
144 // ------------------------------------------------------------------------
146 public void testHashCode() throws Exception
{
147 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
148 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
149 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
150 final TmfTimeRange range1b
= new TmfTimeRange(range1
);
151 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
152 final TmfTimeRange range2b
= new TmfTimeRange(range2
);
154 assertTrue("hashCode", range1
.hashCode() == range1b
.hashCode());
155 assertTrue("hashCode", range2
.hashCode() == range2b
.hashCode());
157 assertTrue("hashCode", range1
.hashCode() != range2
.hashCode());
160 // ------------------------------------------------------------------------
162 // ------------------------------------------------------------------------
164 public void testEqualsReflexivity() throws Exception
{
165 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
166 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
167 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
168 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
170 assertTrue("equals", range1
.equals(range1
));
171 assertTrue("equals", range2
.equals(range2
));
173 assertTrue("equals", !range1
.equals(range2
));
174 assertTrue("equals", !range2
.equals(range1
));
177 public void testEqualsSymmetry() throws Exception
{
178 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
179 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
180 final TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
181 final TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
183 final TmfTimeRange range2a
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
184 final TmfTimeRange range2b
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
186 assertTrue("equals", range1a
.equals(range1b
));
187 assertTrue("equals", range1b
.equals(range1a
));
189 assertTrue("equals", range2a
.equals(range2b
));
190 assertTrue("equals", range2b
.equals(range2a
));
193 public void testEqualsTransivity() throws Exception
{
194 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
195 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
196 final TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
197 final TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
198 final TmfTimeRange range1c
= new TmfTimeRange(ts1
, ts2
);
200 assertTrue("equals", range1a
.equals(range1b
));
201 assertTrue("equals", range1b
.equals(range1c
));
202 assertTrue("equals", range1a
.equals(range1c
));
205 public void testEqualsNull() throws Exception
{
206 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
207 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
208 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
210 assertTrue("equals", !range1
.equals(null));
213 public void testEqualsBadType() throws Exception
{
214 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
215 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
216 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
218 assertTrue("equals", !range1
.equals(ts1
));
221 public void testEqualStartTime() throws Exception
{
222 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
223 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
224 final ITmfTimestamp ts3
= new TmfTimestamp(12355);
226 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts3
);
227 final TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
228 final TmfTimeRange range3
= new TmfTimeRange(ts1
, ts2
);
230 assertTrue("equals", !range1
.equals(range2
));
231 assertTrue("equals", !range1
.equals(range3
));
234 public void testEqualsEndTime() throws Exception
{
235 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
236 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
237 final ITmfTimestamp ts3
= new TmfTimestamp(12355);
239 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
240 final TmfTimeRange range2
= new TmfTimeRange(ts1
, ts3
);
241 final TmfTimeRange range3
= new TmfTimeRange(ts2
, ts3
);
243 assertTrue("equals", !range1
.equals(range2
));
244 assertTrue("equals", !range1
.equals(range3
));
247 // ------------------------------------------------------------------------
249 // ------------------------------------------------------------------------
251 public void testToString() throws Exception
{
252 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
253 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
254 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
256 final String expected
= "TmfTimeRange [fStartTime=" + ts1
+ ", fEndTime=" + ts2
+ "]";
257 assertEquals("toString", expected
, range
.toString());
260 // ------------------------------------------------------------------------
262 // ------------------------------------------------------------------------
264 public void testContainsTimestamp() throws Exception
{
265 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
266 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
267 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
269 assertTrue("contains (lower bound)", range
.contains(new TmfTimestamp(12345)));
270 assertTrue("contains (higher bound)", range
.contains(new TmfTimestamp(12350)));
271 assertTrue("contains (within bounds)", range
.contains(new TmfTimestamp(12346)));
273 assertFalse("contains (low value)", range
.contains(new TmfTimestamp(12340)));
274 assertFalse("contains (high value)", range
.contains(new TmfTimestamp(12351)));
276 assertTrue("contains (zero)", range
.contains(TmfTimestamp
.ZERO
));
279 public void testContainsRange() throws Exception
{
280 final ITmfTimestamp ts1
= new TmfTimestamp(10);
281 final ITmfTimestamp ts2
= new TmfTimestamp(20);
282 final ITmfTimestamp ts3
= new TmfTimestamp(30);
283 final ITmfTimestamp ts4
= new TmfTimestamp(40);
284 final ITmfTimestamp ts5
= new TmfTimestamp(50);
285 final ITmfTimestamp ts6
= new TmfTimestamp(60);
286 final ITmfTimestamp ts7
= new TmfTimestamp(70);
287 final ITmfTimestamp ts8
= new TmfTimestamp(80);
290 final TmfTimeRange range0
= new TmfTimeRange(ts3
, ts6
);
292 // Start time below range
293 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
294 final TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
295 final TmfTimeRange range3
= new TmfTimeRange(ts2
, ts4
);
296 final TmfTimeRange range4
= new TmfTimeRange(ts2
, ts6
);
297 final TmfTimeRange range5
= new TmfTimeRange(ts2
, ts7
);
299 assertFalse("contains", range0
.contains(range1
));
300 assertFalse("contains", range0
.contains(range2
));
301 assertFalse("contains", range0
.contains(range3
));
302 assertFalse("contains", range0
.contains(range4
));
303 assertFalse("contains", range0
.contains(range5
));
305 // End time above range
306 final TmfTimeRange range6
= new TmfTimeRange(ts3
, ts7
);
307 final TmfTimeRange range7
= new TmfTimeRange(ts4
, ts7
);
308 final TmfTimeRange range8
= new TmfTimeRange(ts6
, ts7
);
309 final TmfTimeRange range9
= new TmfTimeRange(ts7
, ts8
);
311 assertFalse("contains", range0
.contains(range6
));
312 assertFalse("contains", range0
.contains(range7
));
313 assertFalse("contains", range0
.contains(range8
));
314 assertFalse("contains", range0
.contains(range9
));
317 final TmfTimeRange range10
= new TmfTimeRange(ts3
, ts4
);
318 final TmfTimeRange range11
= new TmfTimeRange(ts3
, ts6
);
319 final TmfTimeRange range12
= new TmfTimeRange(ts4
, ts5
);
320 final TmfTimeRange range13
= new TmfTimeRange(ts4
, ts6
);
322 assertTrue("contains", range0
.contains(range10
));
323 assertTrue("contains", range0
.contains(range11
));
324 assertTrue("contains", range0
.contains(range12
));
325 assertTrue("contains", range0
.contains(range13
));
328 // ------------------------------------------------------------------------
330 // ------------------------------------------------------------------------
332 public void testGetIntersection() throws Exception
{
334 final ITmfTimestamp ts1a
= new TmfTimestamp(1000);
335 final ITmfTimestamp ts1b
= new TmfTimestamp(2000);
336 final TmfTimeRange range1
= new TmfTimeRange(ts1a
, ts1b
);
338 final ITmfTimestamp ts2a
= new TmfTimestamp(2000);
339 final ITmfTimestamp ts2b
= new TmfTimestamp(3000);
340 final TmfTimeRange range2
= new TmfTimeRange(ts2a
, ts2b
);
342 final ITmfTimestamp ts3a
= new TmfTimestamp(3000);
343 final ITmfTimestamp ts3b
= new TmfTimestamp(4000);
344 final TmfTimeRange range3
= new TmfTimeRange(ts3a
, ts3b
);
346 final ITmfTimestamp ts4a
= new TmfTimestamp(1500);
347 final ITmfTimestamp ts4b
= new TmfTimestamp(2500);
348 final TmfTimeRange range4
= new TmfTimeRange(ts4a
, ts4b
);
350 final ITmfTimestamp ts5a
= new TmfTimestamp(1500);
351 final ITmfTimestamp ts5b
= new TmfTimestamp(2000);
352 final TmfTimeRange range5
= new TmfTimeRange(ts5a
, ts5b
);
354 final ITmfTimestamp ts6a
= new TmfTimestamp(2000);
355 final ITmfTimestamp ts6b
= new TmfTimestamp(2500);
356 final TmfTimeRange range6
= new TmfTimeRange(ts6a
, ts6b
);
358 final ITmfTimestamp ts7a
= new TmfTimestamp(1500);
359 final ITmfTimestamp ts7b
= new TmfTimestamp(3500);
360 final TmfTimeRange range7
= new TmfTimeRange(ts7a
, ts7b
);
362 final ITmfTimestamp ts8a
= new TmfTimestamp(2250);
363 final ITmfTimestamp ts8b
= new TmfTimestamp(2750);
364 final TmfTimeRange range8
= new TmfTimeRange(ts8a
, ts8b
);
366 assertEquals("getIntersection (below - not contiguous)", null, range1
.getIntersection(range3
));
367 assertEquals("getIntersection (above - not contiguous)", null, range3
.getIntersection(range1
));
369 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b
, ts1b
), range1
.getIntersection(range2
));
370 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a
, ts3a
), range3
.getIntersection(range2
));
372 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a
, ts4b
), range2
.getIntersection(range4
));
373 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a
, ts4b
), range4
.getIntersection(range2
));
375 assertEquals("getIntersection (within - overlap1)", range6
, range2
.getIntersection(range6
));
376 assertEquals("getIntersection (within - overlap2)", range6
, range6
.getIntersection(range2
));
378 assertEquals("getIntersection (within - overlap3)", range5
, range1
.getIntersection(range5
));
379 assertEquals("getIntersection (within - overlap4)", range5
, range5
.getIntersection(range1
));
381 assertEquals("getIntersection (within - overlap5)", range8
, range2
.getIntersection(range8
));
382 assertEquals("getIntersection (within - overlap6)", range8
, range8
.getIntersection(range2
));
384 assertEquals("getIntersection (accross1)", range2
, range2
.getIntersection(range7
));
385 assertEquals("getIntersection (accross2)", range2
, range7
.getIntersection(range2
));