1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 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 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.event
;
15 import junit
.framework
.TestCase
;
17 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfTimestamp
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimeRange
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimestamp
;
22 * <b><u>TmfTimeRangeTest</u></b>
24 * Test suite for the TmfTimeRange class.
26 @SuppressWarnings("nls")
27 public class TmfTimeRangeTest
extends TestCase
{
29 // ------------------------------------------------------------------------
31 // ------------------------------------------------------------------------
33 public TmfTimeRangeTest(String name
) {
38 protected void setUp() throws Exception
{
43 protected void tearDown() throws Exception
{
47 // ------------------------------------------------------------------------
49 // ------------------------------------------------------------------------
51 public void testConstructor() throws Exception
{
52 ITmfTimestamp ts1
= new TmfTimestamp(12345);
53 ITmfTimestamp ts2
= new TmfTimestamp(12350);
54 TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
56 assertEquals("startTime", ts1
, range
.getStartTime());
57 assertEquals("endTime", ts2
, range
.getEndTime());
60 public void testBadConstructor() throws Exception
{
62 new TmfTimeRange(TmfTimestamp
.BigBang
, null);
64 } catch (IllegalArgumentException e
) {
69 new TmfTimeRange(null, TmfTimestamp
.BigCrunch
);
71 } catch (IllegalArgumentException e
) {
76 public void testOpenRange1() throws Exception
{
77 ITmfTimestamp ts2
= new TmfTimestamp(12350);
78 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, ts2
);
80 assertEquals("startTime", TmfTimestamp
.BigBang
, range
.getStartTime());
81 assertEquals("endTime", ts2
, range
.getEndTime());
84 public void testOpenRange2() throws Exception
{
85 ITmfTimestamp ts1
= new TmfTimestamp(12345);
86 TmfTimeRange range
= new TmfTimeRange(ts1
, TmfTimestamp
.BigCrunch
);
88 assertEquals("startTime", ts1
, range
.getStartTime());
89 assertEquals("endTime", TmfTimestamp
.BigCrunch
, range
.getEndTime());
92 public void testOpenRange3() throws Exception
{
93 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
95 assertEquals("startTime", TmfTimestamp
.BigBang
, range
.getStartTime());
96 assertEquals("endTime", TmfTimestamp
.BigCrunch
, range
.getEndTime());
99 public void testCopyConstructor() throws Exception
{
100 ITmfTimestamp ts1
= new TmfTimestamp(12345);
101 ITmfTimestamp ts2
= new TmfTimestamp(12350);
102 TmfTimeRange range0
= new TmfTimeRange(ts1
, ts2
);
103 TmfTimeRange range1
= new TmfTimeRange(range0
);
105 assertEquals("startTime", ts1
, range1
.getStartTime());
106 assertEquals("endTime", ts2
, range1
.getEndTime());
108 TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
109 TmfTimeRange range3
= new TmfTimeRange(range2
);
111 assertEquals("startTime", TmfTimestamp
.BigBang
, range3
.getStartTime());
112 assertEquals("endTime", TmfTimestamp
.BigCrunch
, range3
.getEndTime());
115 public void testCopyConstructor2() throws Exception
{
117 new TmfTimeRange(null);
119 } catch (IllegalArgumentException e
) {
124 // ------------------------------------------------------------------------
126 // ------------------------------------------------------------------------
128 public void testEqualsReflexivity() throws Exception
{
129 ITmfTimestamp ts1
= new TmfTimestamp(12345);
130 ITmfTimestamp ts2
= new TmfTimestamp(12350);
131 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
132 TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
134 assertTrue("equals", range1
.equals(range1
));
135 assertTrue("equals", range2
.equals(range2
));
137 assertTrue("equals", !range1
.equals(range2
));
138 assertTrue("equals", !range2
.equals(range1
));
141 public void testEqualsSymmetry() throws Exception
{
142 ITmfTimestamp ts1
= new TmfTimestamp(12345);
143 ITmfTimestamp ts2
= new TmfTimestamp(12350);
144 TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
145 TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
147 TmfTimeRange range2a
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
148 TmfTimeRange range2b
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
150 assertTrue("equals", range1a
.equals(range1b
));
151 assertTrue("equals", range1b
.equals(range1a
));
153 assertTrue("equals", range2a
.equals(range2b
));
154 assertTrue("equals", range2b
.equals(range2a
));
157 public void testEqualsTransivity() throws Exception
{
158 ITmfTimestamp ts1
= new TmfTimestamp(12345);
159 ITmfTimestamp ts2
= new TmfTimestamp(12350);
160 TmfTimeRange range1a
= new TmfTimeRange(ts1
, ts2
);
161 TmfTimeRange range1b
= new TmfTimeRange(ts1
, ts2
);
162 TmfTimeRange range1c
= new TmfTimeRange(ts1
, ts2
);
164 assertTrue("equals", range1a
.equals(range1b
));
165 assertTrue("equals", range1b
.equals(range1c
));
166 assertTrue("equals", range1a
.equals(range1c
));
169 public void testEqualsNull() throws Exception
{
170 ITmfTimestamp ts1
= new TmfTimestamp(12345);
171 ITmfTimestamp ts2
= new TmfTimestamp(12350);
172 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
174 assertTrue("equals", !range1
.equals(null));
177 public void testEqualsBadType() throws Exception
{
178 ITmfTimestamp ts1
= new TmfTimestamp(12345);
179 ITmfTimestamp ts2
= new TmfTimestamp(12350);
180 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
182 assertTrue("equals", !range1
.equals(ts1
));
185 public void testEqualStartTime() throws Exception
{
186 ITmfTimestamp ts1
= new TmfTimestamp(12345);
187 ITmfTimestamp ts2
= new TmfTimestamp(12350);
188 ITmfTimestamp ts3
= new TmfTimestamp(12355);
190 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts3
);
191 TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
192 TmfTimeRange range3
= new TmfTimeRange(ts1
, ts2
);
194 assertTrue("equals", !range1
.equals(range2
));
195 assertTrue("equals", !range1
.equals(range3
));
198 public void testEqualsEndTime() throws Exception
{
199 ITmfTimestamp ts1
= new TmfTimestamp(12345);
200 ITmfTimestamp ts2
= new TmfTimestamp(12350);
201 ITmfTimestamp ts3
= new TmfTimestamp(12355);
203 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
204 TmfTimeRange range2
= new TmfTimeRange(ts1
, ts3
);
205 TmfTimeRange range3
= new TmfTimeRange(ts2
, ts3
);
207 assertTrue("equals", !range1
.equals(range2
));
208 assertTrue("equals", !range1
.equals(range3
));
211 // ------------------------------------------------------------------------
213 // ------------------------------------------------------------------------
215 public void testHashCode() throws Exception
{
216 ITmfTimestamp ts1
= new TmfTimestamp(12345);
217 ITmfTimestamp ts2
= new TmfTimestamp(12350);
218 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
219 TmfTimeRange range1b
= new TmfTimeRange(range1
);
220 TmfTimeRange range2
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
221 TmfTimeRange range2b
= new TmfTimeRange(range2
);
223 assertTrue("hashCode", range1
.hashCode() == range1b
.hashCode());
224 assertTrue("hashCode", range2
.hashCode() == range2b
.hashCode());
226 assertTrue("hashCode", range1
.hashCode() != range2
.hashCode());
229 // ------------------------------------------------------------------------
231 // ------------------------------------------------------------------------
233 public void testClone() throws Exception
{
234 ITmfTimestamp ts1
= new TmfTimestamp(12345);
235 ITmfTimestamp ts2
= new TmfTimestamp(12350);
237 TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
238 TmfTimeRange clone
= range
.clone();
240 assertEquals("clone", range
, clone
);
241 assertEquals("clone", ts1
, clone
.getStartTime());
242 assertEquals("clone", ts2
, clone
.getEndTime());
245 // ------------------------------------------------------------------------
247 // ------------------------------------------------------------------------
249 public void testToString() throws Exception
{
250 ITmfTimestamp ts1
= new TmfTimestamp(12345);
251 ITmfTimestamp ts2
= new TmfTimestamp(12350);
252 TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
254 String expected
= "TmfTimeRange [fStartTime=" + ts1
+ ", fEndTime=" + ts2
+ "]";
255 assertEquals("toString", expected
, range
.toString());
258 // ------------------------------------------------------------------------
260 // ------------------------------------------------------------------------
262 public void testContainsTimestamp() throws Exception
{
263 ITmfTimestamp ts1
= new TmfTimestamp(12345);
264 ITmfTimestamp ts2
= new TmfTimestamp(12350);
265 TmfTimeRange range
= new TmfTimeRange(ts1
, ts2
);
267 assertTrue("contains (lower bound)", range
.contains(new TmfTimestamp(12345)));
268 assertTrue("contains (higher bound)", range
.contains(new TmfTimestamp(12350)));
269 assertTrue("contains (within bounds)", range
.contains(new TmfTimestamp(12346)));
271 assertFalse("contains (low value)", range
.contains(new TmfTimestamp(12340)));
272 assertFalse("contains (high value)", range
.contains(new TmfTimestamp(12351)));
274 assertTrue("contains (zero)", range
.contains(TmfTimestamp
.Zero
));
277 public void testContainsRange() throws Exception
{
278 ITmfTimestamp ts1
= new TmfTimestamp(10);
279 ITmfTimestamp ts2
= new TmfTimestamp(20);
280 ITmfTimestamp ts3
= new TmfTimestamp(30);
281 ITmfTimestamp ts4
= new TmfTimestamp(40);
282 ITmfTimestamp ts5
= new TmfTimestamp(50);
283 ITmfTimestamp ts6
= new TmfTimestamp(60);
284 ITmfTimestamp ts7
= new TmfTimestamp(70);
285 ITmfTimestamp ts8
= new TmfTimestamp(80);
288 TmfTimeRange range0
= new TmfTimeRange(ts3
, ts6
);
290 // Start time below range
291 TmfTimeRange range1
= new TmfTimeRange(ts1
, ts2
);
292 TmfTimeRange range2
= new TmfTimeRange(ts2
, ts3
);
293 TmfTimeRange range3
= new TmfTimeRange(ts2
, ts4
);
294 TmfTimeRange range4
= new TmfTimeRange(ts2
, ts6
);
295 TmfTimeRange range5
= new TmfTimeRange(ts2
, ts7
);
297 assertFalse("contains", range0
.contains(range1
));
298 assertFalse("contains", range0
.contains(range2
));
299 assertFalse("contains", range0
.contains(range3
));
300 assertFalse("contains", range0
.contains(range4
));
301 assertFalse("contains", range0
.contains(range5
));
303 // End time above range
304 TmfTimeRange range6
= new TmfTimeRange(ts3
, ts7
);
305 TmfTimeRange range7
= new TmfTimeRange(ts4
, ts7
);
306 TmfTimeRange range8
= new TmfTimeRange(ts6
, ts7
);
307 TmfTimeRange range9
= new TmfTimeRange(ts7
, ts8
);
309 assertFalse("contains", range0
.contains(range6
));
310 assertFalse("contains", range0
.contains(range7
));
311 assertFalse("contains", range0
.contains(range8
));
312 assertFalse("contains", range0
.contains(range9
));
315 TmfTimeRange range10
= new TmfTimeRange(ts3
, ts4
);
316 TmfTimeRange range11
= new TmfTimeRange(ts3
, ts6
);
317 TmfTimeRange range12
= new TmfTimeRange(ts4
, ts5
);
318 TmfTimeRange range13
= new TmfTimeRange(ts4
, ts6
);
320 assertTrue("contains", range0
.contains(range10
));
321 assertTrue("contains", range0
.contains(range11
));
322 assertTrue("contains", range0
.contains(range12
));
323 assertTrue("contains", range0
.contains(range13
));
326 // ------------------------------------------------------------------------
328 // ------------------------------------------------------------------------
330 public void testGetIntersection() throws Exception
{
332 ITmfTimestamp ts1a
= new TmfTimestamp(1000);
333 ITmfTimestamp ts1b
= new TmfTimestamp(2000);
334 TmfTimeRange range1
= new TmfTimeRange(ts1a
, ts1b
);
336 ITmfTimestamp ts2a
= new TmfTimestamp(2000);
337 ITmfTimestamp ts2b
= new TmfTimestamp(3000);
338 TmfTimeRange range2
= new TmfTimeRange(ts2a
, ts2b
);
340 ITmfTimestamp ts3a
= new TmfTimestamp(3000);
341 ITmfTimestamp ts3b
= new TmfTimestamp(4000);
342 TmfTimeRange range3
= new TmfTimeRange(ts3a
, ts3b
);
344 ITmfTimestamp ts4a
= new TmfTimestamp(1500);
345 ITmfTimestamp ts4b
= new TmfTimestamp(2500);
346 TmfTimeRange range4
= new TmfTimeRange(ts4a
, ts4b
);
348 ITmfTimestamp ts5a
= new TmfTimestamp(1500);
349 ITmfTimestamp ts5b
= new TmfTimestamp(2000);
350 TmfTimeRange range5
= new TmfTimeRange(ts5a
, ts5b
);
352 ITmfTimestamp ts6a
= new TmfTimestamp(2000);
353 ITmfTimestamp ts6b
= new TmfTimestamp(2500);
354 TmfTimeRange range6
= new TmfTimeRange(ts6a
, ts6b
);
356 ITmfTimestamp ts7a
= new TmfTimestamp(1500);
357 ITmfTimestamp ts7b
= new TmfTimestamp(3500);
358 TmfTimeRange range7
= new TmfTimeRange(ts7a
, ts7b
);
360 ITmfTimestamp ts8a
= new TmfTimestamp(2250);
361 ITmfTimestamp ts8b
= new TmfTimestamp(2750);
362 TmfTimeRange range8
= new TmfTimeRange(ts8a
, ts8b
);
364 assertEquals("getIntersection (below - not contiguous)", null, range1
.getIntersection(range3
));
365 assertEquals("getIntersection (above - not contiguous)", null, range3
.getIntersection(range1
));
367 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b
, ts1b
), range1
.getIntersection(range2
));
368 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a
, ts3a
), range3
.getIntersection(range2
));
370 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a
, ts4b
), range2
.getIntersection(range4
));
371 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a
, ts4b
), range4
.getIntersection(range2
));
373 assertEquals("getIntersection (within - overlap1)", range6
, range2
.getIntersection(range6
));
374 assertEquals("getIntersection (within - overlap2)", range6
, range6
.getIntersection(range2
));
376 assertEquals("getIntersection (within - overlap3)", range5
, range1
.getIntersection(range5
));
377 assertEquals("getIntersection (within - overlap4)", range5
, range5
.getIntersection(range1
));
379 assertEquals("getIntersection (within - overlap5)", range8
, range2
.getIntersection(range8
));
380 assertEquals("getIntersection (within - overlap6)", range8
, range8
.getIntersection(range2
));
382 assertEquals("getIntersection (accross1)", range2
, range2
.getIntersection(range7
));
383 assertEquals("getIntersection (accross2)", range2
, range7
.getIntersection(range2
));