1 /*******************************************************************************
2 * Copyright (c) 2009, 2014 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 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
15 package org
.eclipse
.tracecompass
.tmf
.core
.tests
.event
;
17 import static org
.junit
.Assert
.assertEquals
;
18 import static org
.junit
.Assert
.assertFalse
;
19 import static org
.junit
.Assert
.assertTrue
;
20 import static org
.junit
.Assert
.fail
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.ITmfTimestamp
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimeRange
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimestamp
;
25 import org
.junit
.Test
;
28 * Test suite for the TmfTimeRange class.
30 @SuppressWarnings("javadoc")
31 public class TmfTimeRangeTest
{
33 // ------------------------------------------------------------------------
35 // ------------------------------------------------------------------------
38 public void testConstructor() {
39 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
40 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
41 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
43 assertEquals("startTime", ts1
, range
.getStartTime());
44 assertEquals("endTime", ts2
, range
.getEndTime());
48 public void testBadConstructor() {
50 new TmfTimeRange(TmfTimestamp
.BIG_BANG
, null);
51 fail("TmfTimeRange: bad end time");
52 } catch (final IllegalArgumentException e
) {
57 new TmfTimeRange(null, TmfTimestamp
.BIG_CRUNCH
);
58 fail("TmfTimeRange: bad start time");
59 } catch (final IllegalArgumentException e
) {
65 public void testOpenRange1() {
66 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
67 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, ts2
);
69 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
70 assertEquals("endTime", ts2
, range
.getEndTime());
74 public void testOpenRange2() {
75 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
76 final TmfTimeRange range
= new TmfTimeRange(ts1
, TmfTimestamp
.BIG_CRUNCH
);
78 assertEquals("startTime", ts1
, range
.getStartTime());
79 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
83 public void testOpenRange3() {
84 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
86 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range
.getStartTime());
87 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range
.getEndTime());
91 public void testCopyConstructor() {
92 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
93 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
94 final TmfTimeRange range0
= new TmfTimeRange(ts1
, ts2
);
95 final TmfTimeRange range1
= new TmfTimeRange(range0
);
97 assertEquals("startTime", ts1
, range1
.getStartTime());
98 assertEquals("endTime", ts2
, range1
.getEndTime());
100 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
101 final TmfTimeRange range3
= new TmfTimeRange(range2
);
103 assertEquals("startTime", TmfTimestamp
.BIG_BANG
, range3
.getStartTime());
104 assertEquals("endTime", TmfTimestamp
.BIG_CRUNCH
, range3
.getEndTime());
108 public void testCopyConstructor2() {
110 new TmfTimeRange(null);
111 fail("TmfTimeRange: null argument");
112 } catch (final IllegalArgumentException e
) {
117 // ------------------------------------------------------------------------
119 // ------------------------------------------------------------------------
122 public void testHashCode() {
123 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
124 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
125 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
126 final TmfTimeRange range1b
= new TmfTimeRange(range1
);
127 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
128 final TmfTimeRange range2b
= new TmfTimeRange(range2
);
130 assertTrue("hashCode", range1
.hashCode() == range1b
.hashCode());
131 assertTrue("hashCode", range2
.hashCode() == range2b
.hashCode());
133 assertTrue("hashCode", range1
.hashCode() != range2
.hashCode());
136 // ------------------------------------------------------------------------
138 // ------------------------------------------------------------------------
141 public void testEqualsReflexivity() {
142 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
143 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
144 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
145 final TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
147 assertTrue("equals", range1
.equals(range1
));
148 assertTrue("equals", range2
.equals(range2
));
150 assertTrue("equals", !range1
.equals(range2
));
151 assertTrue("equals", !range2
.equals(range1
));
155 public void testEqualsSymmetry() {
156 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
157 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
158 final TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
159 final TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
161 final TmfTimeRange range2a
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
162 final TmfTimeRange range2b
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
164 assertTrue("equals", range1a
.equals(range1b
));
165 assertTrue("equals", range1b
.equals(range1a
));
167 assertTrue("equals", range2a
.equals(range2b
));
168 assertTrue("equals", range2b
.equals(range2a
));
172 public void testEqualsTransivity() {
173 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
174 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
175 final TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
176 final TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
177 final TmfTimeRange range1c
= new TmfTimeRange(ts1
, ts2
);
179 assertTrue("equals", range1a
.equals(range1b
));
180 assertTrue("equals", range1b
.equals(range1c
));
181 assertTrue("equals", range1a
.equals(range1c
));
185 public void testEqualsNull() {
186 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
187 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
188 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
190 assertTrue("equals", !range1
.equals(null));
194 public void testEqualsBadType() {
195 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
196 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
197 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
199 assertTrue("equals", !range1
.equals(ts1
));
203 public void testEqualStartTime() {
204 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
205 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
206 final ITmfTimestamp ts3
= new TmfTimestamp(12355);
208 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts3
);
209 final TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
210 final TmfTimeRange range3
= new TmfTimeRange(ts1
, ts2
);
212 assertTrue("equals", !range1
.equals(range2
));
213 assertTrue("equals", !range1
.equals(range3
));
217 public void testEqualsEndTime() {
218 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
219 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
220 final ITmfTimestamp ts3
= new TmfTimestamp(12355);
222 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
223 final TmfTimeRange range2
= new TmfTimeRange(ts1
, ts3
);
224 final TmfTimeRange range3
= new TmfTimeRange(ts2
, ts3
);
226 assertTrue("equals", !range1
.equals(range2
));
227 assertTrue("equals", !range1
.equals(range3
));
230 // ------------------------------------------------------------------------
232 // ------------------------------------------------------------------------
235 public void testToString() {
236 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
237 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
238 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
240 final String expected
= "TmfTimeRange [fStartTime=" + ts1
+ ", fEndTime=" + ts2
+ "]";
241 assertEquals("toString", expected
, range
.toString());
244 // ------------------------------------------------------------------------
246 // ------------------------------------------------------------------------
249 public void testContainsTimestamp() {
250 final ITmfTimestamp ts1
= new TmfTimestamp(12345);
251 final ITmfTimestamp ts2
= new TmfTimestamp(12350);
252 final TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
254 assertTrue("contains (lower bound)", range
.contains(new TmfTimestamp(12345)));
255 assertTrue("contains (higher bound)", range
.contains(new TmfTimestamp(12350)));
256 assertTrue("contains (within bounds)", range
.contains(new TmfTimestamp(12346)));
258 assertFalse("contains (low value)", range
.contains(new TmfTimestamp(12340)));
259 assertFalse("contains (high value)", range
.contains(new TmfTimestamp(12351)));
263 public void testContainsRange() {
264 final ITmfTimestamp ts1
= new TmfTimestamp(10);
265 final ITmfTimestamp ts2
= new TmfTimestamp(20);
266 final ITmfTimestamp ts3
= new TmfTimestamp(30);
267 final ITmfTimestamp ts4
= new TmfTimestamp(40);
268 final ITmfTimestamp ts5
= new TmfTimestamp(50);
269 final ITmfTimestamp ts6
= new TmfTimestamp(60);
270 final ITmfTimestamp ts7
= new TmfTimestamp(70);
271 final ITmfTimestamp ts8
= new TmfTimestamp(80);
274 final TmfTimeRange range0
= new TmfTimeRange(ts3
, ts6
);
276 // Start time below range
277 final TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
278 final TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
279 final TmfTimeRange range3
= new TmfTimeRange(ts2
, ts4
);
280 final TmfTimeRange range4
= new TmfTimeRange(ts2
, ts6
);
281 final TmfTimeRange range5
= new TmfTimeRange(ts2
, ts7
);
283 assertFalse("contains", range0
.contains(range1
));
284 assertFalse("contains", range0
.contains(range2
));
285 assertFalse("contains", range0
.contains(range3
));
286 assertFalse("contains", range0
.contains(range4
));
287 assertFalse("contains", range0
.contains(range5
));
289 // End time above range
290 final TmfTimeRange range6
= new TmfTimeRange(ts3
, ts7
);
291 final TmfTimeRange range7
= new TmfTimeRange(ts4
, ts7
);
292 final TmfTimeRange range8
= new TmfTimeRange(ts6
, ts7
);
293 final TmfTimeRange range9
= new TmfTimeRange(ts7
, ts8
);
295 assertFalse("contains", range0
.contains(range6
));
296 assertFalse("contains", range0
.contains(range7
));
297 assertFalse("contains", range0
.contains(range8
));
298 assertFalse("contains", range0
.contains(range9
));
301 final TmfTimeRange range10
= new TmfTimeRange(ts3
, ts4
);
302 final TmfTimeRange range11
= new TmfTimeRange(ts3
, ts6
);
303 final TmfTimeRange range12
= new TmfTimeRange(ts4
, ts5
);
304 final TmfTimeRange range13
= new TmfTimeRange(ts4
, ts6
);
306 assertTrue("contains", range0
.contains(range10
));
307 assertTrue("contains", range0
.contains(range11
));
308 assertTrue("contains", range0
.contains(range12
));
309 assertTrue("contains", range0
.contains(range13
));
312 // ------------------------------------------------------------------------
314 // ------------------------------------------------------------------------
317 public void testGetIntersection() {
319 final ITmfTimestamp ts1a
= new TmfTimestamp(1000);
320 final ITmfTimestamp ts1b
= new TmfTimestamp(2000);
321 final TmfTimeRange range1
= new TmfTimeRange(ts1a
, ts1b
);
323 final ITmfTimestamp ts2a
= new TmfTimestamp(2000);
324 final ITmfTimestamp ts2b
= new TmfTimestamp(3000);
325 final TmfTimeRange range2
= new TmfTimeRange(ts2a
, ts2b
);
327 final ITmfTimestamp ts3a
= new TmfTimestamp(3000);
328 final ITmfTimestamp ts3b
= new TmfTimestamp(4000);
329 final TmfTimeRange range3
= new TmfTimeRange(ts3a
, ts3b
);
331 final ITmfTimestamp ts4a
= new TmfTimestamp(1500);
332 final ITmfTimestamp ts4b
= new TmfTimestamp(2500);
333 final TmfTimeRange range4
= new TmfTimeRange(ts4a
, ts4b
);
335 final ITmfTimestamp ts5a
= new TmfTimestamp(1500);
336 final ITmfTimestamp ts5b
= new TmfTimestamp(2000);
337 final TmfTimeRange range5
= new TmfTimeRange(ts5a
, ts5b
);
339 final ITmfTimestamp ts6a
= new TmfTimestamp(2000);
340 final ITmfTimestamp ts6b
= new TmfTimestamp(2500);
341 final TmfTimeRange range6
= new TmfTimeRange(ts6a
, ts6b
);
343 final ITmfTimestamp ts7a
= new TmfTimestamp(1500);
344 final ITmfTimestamp ts7b
= new TmfTimestamp(3500);
345 final TmfTimeRange range7
= new TmfTimeRange(ts7a
, ts7b
);
347 final ITmfTimestamp ts8a
= new TmfTimestamp(2250);
348 final ITmfTimestamp ts8b
= new TmfTimestamp(2750);
349 final TmfTimeRange range8
= new TmfTimeRange(ts8a
, ts8b
);
351 assertEquals("getIntersection (below - not contiguous)", null, range1
.getIntersection(range3
));
352 assertEquals("getIntersection (above - not contiguous)", null, range3
.getIntersection(range1
));
354 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b
, ts1b
), range1
.getIntersection(range2
));
355 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a
, ts3a
), range3
.getIntersection(range2
));
357 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a
, ts4b
), range2
.getIntersection(range4
));
358 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a
, ts4b
), range4
.getIntersection(range2
));
360 assertEquals("getIntersection (within - overlap1)", range6
, range2
.getIntersection(range6
));
361 assertEquals("getIntersection (within - overlap2)", range6
, range6
.getIntersection(range2
));
363 assertEquals("getIntersection (within - overlap3)", range5
, range1
.getIntersection(range5
));
364 assertEquals("getIntersection (within - overlap4)", range5
, range5
.getIntersection(range1
));
366 assertEquals("getIntersection (within - overlap5)", range8
, range2
.getIntersection(range8
));
367 assertEquals("getIntersection (within - overlap6)", range8
, range8
.getIntersection(range2
));
369 assertEquals("getIntersection (accross1)", range2
, range2
.getIntersection(range7
));
370 assertEquals("getIntersection (accross2)", range2
, range7
.getIntersection(range2
));