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