tmf: Move plugins to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / event / TmfTimeRangeTest.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 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 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
14
15 package org.eclipse.linuxtools.tmf.core.tests.event;
16
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;
21
22 import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
23 import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
24 import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp;
25 import org.junit.Test;
26
27 /**
28 * Test suite for the TmfTimeRange class.
29 */
30 @SuppressWarnings("javadoc")
31 public class TmfTimeRangeTest {
32
33 // ------------------------------------------------------------------------
34 // Constructors
35 // ------------------------------------------------------------------------
36
37 @Test
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);
42
43 assertEquals("startTime", ts1, range.getStartTime());
44 assertEquals("endTime", ts2, range.getEndTime());
45 }
46
47 @Test
48 public void testBadConstructor() {
49 try {
50 new TmfTimeRange(TmfTimestamp.BIG_BANG, null);
51 fail("TmfTimeRange: bad end time");
52 } catch (final IllegalArgumentException e) {
53 // Success
54 }
55
56 try {
57 new TmfTimeRange(null, TmfTimestamp.BIG_CRUNCH);
58 fail("TmfTimeRange: bad start time");
59 } catch (final IllegalArgumentException e) {
60 // Success
61 }
62 }
63
64 @Test
65 public void testOpenRange1() {
66 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
67 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, ts2);
68
69 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
70 assertEquals("endTime", ts2, range.getEndTime());
71 }
72
73 @Test
74 public void testOpenRange2() {
75 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
76 final TmfTimeRange range = new TmfTimeRange(ts1, TmfTimestamp.BIG_CRUNCH);
77
78 assertEquals("startTime", ts1, range.getStartTime());
79 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
80 }
81
82 @Test
83 public void testOpenRange3() {
84 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
85
86 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
87 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
88 }
89
90 @Test
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);
96
97 assertEquals("startTime", ts1, range1.getStartTime());
98 assertEquals("endTime", ts2, range1.getEndTime());
99
100 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
101 final TmfTimeRange range3 = new TmfTimeRange(range2);
102
103 assertEquals("startTime", TmfTimestamp.BIG_BANG, range3.getStartTime());
104 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range3.getEndTime());
105 }
106
107 @Test
108 public void testCopyConstructor2() {
109 try {
110 new TmfTimeRange(null);
111 fail("TmfTimeRange: null argument");
112 } catch (final IllegalArgumentException e) {
113 // Success
114 }
115 }
116
117 // ------------------------------------------------------------------------
118 // hashCode
119 // ------------------------------------------------------------------------
120
121 @Test
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);
129
130 assertTrue("hashCode", range1.hashCode() == range1b.hashCode());
131 assertTrue("hashCode", range2.hashCode() == range2b.hashCode());
132
133 assertTrue("hashCode", range1.hashCode() != range2.hashCode());
134 }
135
136 // ------------------------------------------------------------------------
137 // equals
138 // ------------------------------------------------------------------------
139
140 @Test
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);
146
147 assertTrue("equals", range1.equals(range1));
148 assertTrue("equals", range2.equals(range2));
149
150 assertTrue("equals", !range1.equals(range2));
151 assertTrue("equals", !range2.equals(range1));
152 }
153
154 @Test
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);
160
161 final TmfTimeRange range2a = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
162 final TmfTimeRange range2b = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
163
164 assertTrue("equals", range1a.equals(range1b));
165 assertTrue("equals", range1b.equals(range1a));
166
167 assertTrue("equals", range2a.equals(range2b));
168 assertTrue("equals", range2b.equals(range2a));
169 }
170
171 @Test
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);
178
179 assertTrue("equals", range1a.equals(range1b));
180 assertTrue("equals", range1b.equals(range1c));
181 assertTrue("equals", range1a.equals(range1c));
182 }
183
184 @Test
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);
189
190 assertTrue("equals", !range1.equals(null));
191 }
192
193 @Test
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);
198
199 assertTrue("equals", !range1.equals(ts1));
200 }
201
202 @Test
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);
207
208 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts3);
209 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
210 final TmfTimeRange range3 = new TmfTimeRange(ts1, ts2);
211
212 assertTrue("equals", !range1.equals(range2));
213 assertTrue("equals", !range1.equals(range3));
214 }
215
216 @Test
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);
221
222 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
223 final TmfTimeRange range2 = new TmfTimeRange(ts1, ts3);
224 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts3);
225
226 assertTrue("equals", !range1.equals(range2));
227 assertTrue("equals", !range1.equals(range3));
228 }
229
230 // ------------------------------------------------------------------------
231 // toString
232 // ------------------------------------------------------------------------
233
234 @Test
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);
239
240 final String expected = "TmfTimeRange [fStartTime=" + ts1 + ", fEndTime=" + ts2 + "]";
241 assertEquals("toString", expected, range.toString());
242 }
243
244 // ------------------------------------------------------------------------
245 // contains
246 // ------------------------------------------------------------------------
247
248 @Test
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);
253
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)));
257
258 assertFalse("contains (low value)", range.contains(new TmfTimestamp(12340)));
259 assertFalse("contains (high value)", range.contains(new TmfTimestamp(12351)));
260 }
261
262 @Test
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);
272
273 // Reference range
274 final TmfTimeRange range0 = new TmfTimeRange(ts3, ts6);
275
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);
282
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));
288
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);
294
295 assertFalse("contains", range0.contains(range6));
296 assertFalse("contains", range0.contains(range7));
297 assertFalse("contains", range0.contains(range8));
298 assertFalse("contains", range0.contains(range9));
299
300 // Within range
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);
305
306 assertTrue("contains", range0.contains(range10));
307 assertTrue("contains", range0.contains(range11));
308 assertTrue("contains", range0.contains(range12));
309 assertTrue("contains", range0.contains(range13));
310 }
311
312 // ------------------------------------------------------------------------
313 // getIntersection
314 // ------------------------------------------------------------------------
315
316 @Test
317 public void testGetIntersection() {
318
319 final ITmfTimestamp ts1a = new TmfTimestamp(1000);
320 final ITmfTimestamp ts1b = new TmfTimestamp(2000);
321 final TmfTimeRange range1 = new TmfTimeRange(ts1a, ts1b);
322
323 final ITmfTimestamp ts2a = new TmfTimestamp(2000);
324 final ITmfTimestamp ts2b = new TmfTimestamp(3000);
325 final TmfTimeRange range2 = new TmfTimeRange(ts2a, ts2b);
326
327 final ITmfTimestamp ts3a = new TmfTimestamp(3000);
328 final ITmfTimestamp ts3b = new TmfTimestamp(4000);
329 final TmfTimeRange range3 = new TmfTimeRange(ts3a, ts3b);
330
331 final ITmfTimestamp ts4a = new TmfTimestamp(1500);
332 final ITmfTimestamp ts4b = new TmfTimestamp(2500);
333 final TmfTimeRange range4 = new TmfTimeRange(ts4a, ts4b);
334
335 final ITmfTimestamp ts5a = new TmfTimestamp(1500);
336 final ITmfTimestamp ts5b = new TmfTimestamp(2000);
337 final TmfTimeRange range5 = new TmfTimeRange(ts5a, ts5b);
338
339 final ITmfTimestamp ts6a = new TmfTimestamp(2000);
340 final ITmfTimestamp ts6b = new TmfTimestamp(2500);
341 final TmfTimeRange range6 = new TmfTimeRange(ts6a, ts6b);
342
343 final ITmfTimestamp ts7a = new TmfTimestamp(1500);
344 final ITmfTimestamp ts7b = new TmfTimestamp(3500);
345 final TmfTimeRange range7 = new TmfTimeRange(ts7a, ts7b);
346
347 final ITmfTimestamp ts8a = new TmfTimestamp(2250);
348 final ITmfTimestamp ts8b = new TmfTimestamp(2750);
349 final TmfTimeRange range8 = new TmfTimeRange(ts8a, ts8b);
350
351 assertEquals("getIntersection (below - not contiguous)", null, range1.getIntersection(range3));
352 assertEquals("getIntersection (above - not contiguous)", null, range3.getIntersection(range1));
353
354 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b, ts1b), range1.getIntersection(range2));
355 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a, ts3a), range3.getIntersection(range2));
356
357 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a, ts4b), range2.getIntersection(range4));
358 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a, ts4b), range4.getIntersection(range2));
359
360 assertEquals("getIntersection (within - overlap1)", range6, range2.getIntersection(range6));
361 assertEquals("getIntersection (within - overlap2)", range6, range6.getIntersection(range2));
362
363 assertEquals("getIntersection (within - overlap3)", range5, range1.getIntersection(range5));
364 assertEquals("getIntersection (within - overlap4)", range5, range5.getIntersection(range1));
365
366 assertEquals("getIntersection (within - overlap5)", range8, range2.getIntersection(range8));
367 assertEquals("getIntersection (within - overlap6)", range8, range8.getIntersection(range2));
368
369 assertEquals("getIntersection (accross1)", range2, range2.getIntersection(range7));
370 assertEquals("getIntersection (accross2)", range2, range7.getIntersection(range2));
371 }
372
373 }
This page took 0.105728 seconds and 5 git commands to generate.