Merge branch 'master' into TmfTrace-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 * Test suite for the TmfTimeRange class.
24 */
25 @SuppressWarnings("nls")
26 public class TmfTimeRangeTest extends TestCase {
27
28 // ------------------------------------------------------------------------
29 // Housekeeping
30 // ------------------------------------------------------------------------
31
32 public TmfTimeRangeTest(final String name) {
33 super(name);
34 }
35
36 @Override
37 protected void setUp() throws Exception {
38 super.setUp();
39 }
40
41 @Override
42 protected void tearDown() throws Exception {
43 super.tearDown();
44 }
45
46 // ------------------------------------------------------------------------
47 // Constructors
48 // ------------------------------------------------------------------------
49
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);
54
55 assertEquals("startTime", ts1, range.getStartTime());
56 assertEquals("endTime", ts2, range.getEndTime());
57 }
58
59 public void testBadConstructor() throws Exception {
60 try {
61 new TmfTimeRange(TmfTimestamp.BIG_BANG, null);
62 fail("TmfTimeRange: bad end time");
63 } catch (final IllegalArgumentException e) {
64 // Success
65 }
66
67 try {
68 new TmfTimeRange(null, TmfTimestamp.BIG_CRUNCH);
69 fail("TmfTimeRange: bad start time");
70 } catch (final IllegalArgumentException e) {
71 // Success
72 }
73 }
74
75 public void testOpenRange1() throws Exception {
76 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
77 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, ts2);
78
79 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
80 assertEquals("endTime", ts2, range.getEndTime());
81 }
82
83 public void testOpenRange2() throws Exception {
84 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
85 final TmfTimeRange range = new TmfTimeRange(ts1, TmfTimestamp.BIG_CRUNCH);
86
87 assertEquals("startTime", ts1, range.getStartTime());
88 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
89 }
90
91 public void testOpenRange3() throws Exception {
92 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
93
94 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
95 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
96 }
97
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);
103
104 assertEquals("startTime", ts1, range1.getStartTime());
105 assertEquals("endTime", ts2, range1.getEndTime());
106
107 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
108 final TmfTimeRange range3 = new TmfTimeRange(range2);
109
110 assertEquals("startTime", TmfTimestamp.BIG_BANG, range3.getStartTime());
111 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range3.getEndTime());
112 }
113
114 public void testCopyConstructor2() throws Exception {
115 try {
116 new TmfTimeRange(null);
117 fail("TmfTimeRange: null argument");
118 } catch (final IllegalArgumentException e) {
119 // Success
120 }
121 }
122
123 // ------------------------------------------------------------------------
124 // clone
125 // ------------------------------------------------------------------------
126
127 public void testClone() throws Exception {
128 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
129 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
130
131 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
132 final TmfTimeRange clone = range.clone();
133
134 assertTrue("clone", range.clone().equals(range));
135 assertTrue("clone", clone.clone().equals(clone));
136
137 assertEquals("clone", range, clone);
138 assertEquals("clone", ts1, clone.getStartTime());
139 assertEquals("clone", ts2, clone.getEndTime());
140 }
141
142 // ------------------------------------------------------------------------
143 // hashCode
144 // ------------------------------------------------------------------------
145
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);
153
154 assertTrue("hashCode", range1.hashCode() == range1b.hashCode());
155 assertTrue("hashCode", range2.hashCode() == range2b.hashCode());
156
157 assertTrue("hashCode", range1.hashCode() != range2.hashCode());
158 }
159
160 // ------------------------------------------------------------------------
161 // equals
162 // ------------------------------------------------------------------------
163
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);
169
170 assertTrue("equals", range1.equals(range1));
171 assertTrue("equals", range2.equals(range2));
172
173 assertTrue("equals", !range1.equals(range2));
174 assertTrue("equals", !range2.equals(range1));
175 }
176
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);
182
183 final TmfTimeRange range2a = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
184 final TmfTimeRange range2b = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
185
186 assertTrue("equals", range1a.equals(range1b));
187 assertTrue("equals", range1b.equals(range1a));
188
189 assertTrue("equals", range2a.equals(range2b));
190 assertTrue("equals", range2b.equals(range2a));
191 }
192
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);
199
200 assertTrue("equals", range1a.equals(range1b));
201 assertTrue("equals", range1b.equals(range1c));
202 assertTrue("equals", range1a.equals(range1c));
203 }
204
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);
209
210 assertTrue("equals", !range1.equals(null));
211 }
212
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);
217
218 assertTrue("equals", !range1.equals(ts1));
219 }
220
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);
225
226 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts3);
227 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
228 final TmfTimeRange range3 = new TmfTimeRange(ts1, ts2);
229
230 assertTrue("equals", !range1.equals(range2));
231 assertTrue("equals", !range1.equals(range3));
232 }
233
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);
238
239 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
240 final TmfTimeRange range2 = new TmfTimeRange(ts1, ts3);
241 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts3);
242
243 assertTrue("equals", !range1.equals(range2));
244 assertTrue("equals", !range1.equals(range3));
245 }
246
247 // ------------------------------------------------------------------------
248 // toString
249 // ------------------------------------------------------------------------
250
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);
255
256 final String expected = "TmfTimeRange [fStartTime=" + ts1 + ", fEndTime=" + ts2 + "]";
257 assertEquals("toString", expected, range.toString());
258 }
259
260 // ------------------------------------------------------------------------
261 // contains
262 // ------------------------------------------------------------------------
263
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);
268
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)));
272
273 assertFalse("contains (low value)", range.contains(new TmfTimestamp(12340)));
274 assertFalse("contains (high value)", range.contains(new TmfTimestamp(12351)));
275
276 assertTrue("contains (zero)", range.contains(TmfTimestamp.ZERO));
277 }
278
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);
288
289 // Reference range
290 final TmfTimeRange range0 = new TmfTimeRange(ts3, ts6);
291
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);
298
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));
304
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);
310
311 assertFalse("contains", range0.contains(range6));
312 assertFalse("contains", range0.contains(range7));
313 assertFalse("contains", range0.contains(range8));
314 assertFalse("contains", range0.contains(range9));
315
316 // Within range
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);
321
322 assertTrue("contains", range0.contains(range10));
323 assertTrue("contains", range0.contains(range11));
324 assertTrue("contains", range0.contains(range12));
325 assertTrue("contains", range0.contains(range13));
326 }
327
328 // ------------------------------------------------------------------------
329 // getIntersection
330 // ------------------------------------------------------------------------
331
332 public void testGetIntersection() throws Exception {
333
334 final ITmfTimestamp ts1a = new TmfTimestamp(1000);
335 final ITmfTimestamp ts1b = new TmfTimestamp(2000);
336 final TmfTimeRange range1 = new TmfTimeRange(ts1a, ts1b);
337
338 final ITmfTimestamp ts2a = new TmfTimestamp(2000);
339 final ITmfTimestamp ts2b = new TmfTimestamp(3000);
340 final TmfTimeRange range2 = new TmfTimeRange(ts2a, ts2b);
341
342 final ITmfTimestamp ts3a = new TmfTimestamp(3000);
343 final ITmfTimestamp ts3b = new TmfTimestamp(4000);
344 final TmfTimeRange range3 = new TmfTimeRange(ts3a, ts3b);
345
346 final ITmfTimestamp ts4a = new TmfTimestamp(1500);
347 final ITmfTimestamp ts4b = new TmfTimestamp(2500);
348 final TmfTimeRange range4 = new TmfTimeRange(ts4a, ts4b);
349
350 final ITmfTimestamp ts5a = new TmfTimestamp(1500);
351 final ITmfTimestamp ts5b = new TmfTimestamp(2000);
352 final TmfTimeRange range5 = new TmfTimeRange(ts5a, ts5b);
353
354 final ITmfTimestamp ts6a = new TmfTimestamp(2000);
355 final ITmfTimestamp ts6b = new TmfTimestamp(2500);
356 final TmfTimeRange range6 = new TmfTimeRange(ts6a, ts6b);
357
358 final ITmfTimestamp ts7a = new TmfTimestamp(1500);
359 final ITmfTimestamp ts7b = new TmfTimestamp(3500);
360 final TmfTimeRange range7 = new TmfTimeRange(ts7a, ts7b);
361
362 final ITmfTimestamp ts8a = new TmfTimestamp(2250);
363 final ITmfTimestamp ts8b = new TmfTimestamp(2750);
364 final TmfTimeRange range8 = new TmfTimeRange(ts8a, ts8b);
365
366 assertEquals("getIntersection (below - not contiguous)", null, range1.getIntersection(range3));
367 assertEquals("getIntersection (above - not contiguous)", null, range3.getIntersection(range1));
368
369 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b, ts1b), range1.getIntersection(range2));
370 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a, ts3a), range3.getIntersection(range2));
371
372 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a, ts4b), range2.getIntersection(range4));
373 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a, ts4b), range4.getIntersection(range2));
374
375 assertEquals("getIntersection (within - overlap1)", range6, range2.getIntersection(range6));
376 assertEquals("getIntersection (within - overlap2)", range6, range6.getIntersection(range2));
377
378 assertEquals("getIntersection (within - overlap3)", range5, range1.getIntersection(range5));
379 assertEquals("getIntersection (within - overlap4)", range5, range5.getIntersection(range1));
380
381 assertEquals("getIntersection (within - overlap5)", range8, range2.getIntersection(range8));
382 assertEquals("getIntersection (within - overlap6)", range8, range8.getIntersection(range2));
383
384 assertEquals("getIntersection (accross1)", range2, range2.getIntersection(range7));
385 assertEquals("getIntersection (accross2)", range2, range7.getIntersection(range2));
386 }
387
388 }
This page took 0.046003 seconds and 5 git commands to generate.