tmf: Move timestamps to their own package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / event / TmfTimeRangeTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
6e1886bc 2 * Copyright (c) 2009, 2010, 2012, 2013 Ericsson
54a7a54c 3 *
d18dd09b
ASL
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
54a7a54c 8 *
d18dd09b
ASL
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
9ee9135e 11 * Francois Chouinard - Adjusted for new Event Model
6e1886bc 12 * Alexandre Montplaisir - Port to JUnit4
d18dd09b
ASL
13 *******************************************************************************/
14
6c13869b 15package org.eclipse.linuxtools.tmf.core.tests.event;
d18dd09b 16
6e1886bc
AM
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertFalse;
19import static org.junit.Assert.assertTrue;
20import static org.junit.Assert.fail;
bbc1c411 21
3bd46eef
AM
22import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
23import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
24import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp;
6e1886bc 25import org.junit.Test;
d18dd09b 26
d18dd09b 27/**
cbd4ad82 28 * Test suite for the TmfTimeRange class.
d18dd09b 29 */
6e1886bc
AM
30@SuppressWarnings({"nls", "javadoc"})
31public class TmfTimeRangeTest {
d18dd09b 32
085d898f
FC
33 // ------------------------------------------------------------------------
34 // Constructors
35 // ------------------------------------------------------------------------
d18dd09b 36
6e1886bc 37 @Test
54a7a54c 38 public void testConstructor() {
085d898f
FC
39 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
40 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
41 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
34480e89
FC
42
43 assertEquals("startTime", ts1, range.getStartTime());
44 assertEquals("endTime", ts2, range.getEndTime());
45 }
46
6e1886bc 47 @Test
54a7a54c 48 public void testBadConstructor() {
34480e89 49 try {
a4115405 50 new TmfTimeRange(TmfTimestamp.BIG_BANG, null);
75d42a16 51 fail("TmfTimeRange: bad end time");
085d898f 52 } catch (final IllegalArgumentException e) {
34480e89
FC
53 // Success
54 }
55
56 try {
a4115405 57 new TmfTimeRange(null, TmfTimestamp.BIG_CRUNCH);
75d42a16 58 fail("TmfTimeRange: bad start time");
085d898f 59 } catch (final IllegalArgumentException e) {
34480e89
FC
60 // Success
61 }
62 }
63
6e1886bc 64 @Test
54a7a54c 65 public void testOpenRange1() {
085d898f
FC
66 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
67 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, ts2);
34480e89 68
a4115405 69 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
34480e89
FC
70 assertEquals("endTime", ts2, range.getEndTime());
71 }
72
6e1886bc 73 @Test
54a7a54c 74 public void testOpenRange2() {
085d898f
FC
75 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
76 final TmfTimeRange range = new TmfTimeRange(ts1, TmfTimestamp.BIG_CRUNCH);
34480e89
FC
77
78 assertEquals("startTime", ts1, range.getStartTime());
a4115405 79 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
34480e89
FC
80 }
81
6e1886bc 82 @Test
54a7a54c 83 public void testOpenRange3() {
085d898f 84 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
34480e89 85
a4115405
FC
86 assertEquals("startTime", TmfTimestamp.BIG_BANG, range.getStartTime());
87 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range.getEndTime());
34480e89
FC
88 }
89
6e1886bc 90 @Test
54a7a54c 91 public void testCopyConstructor() {
085d898f
FC
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);
34480e89
FC
96
97 assertEquals("startTime", ts1, range1.getStartTime());
98 assertEquals("endTime", ts2, range1.getEndTime());
99
085d898f
FC
100 final TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
101 final TmfTimeRange range3 = new TmfTimeRange(range2);
34480e89 102
a4115405
FC
103 assertEquals("startTime", TmfTimestamp.BIG_BANG, range3.getStartTime());
104 assertEquals("endTime", TmfTimestamp.BIG_CRUNCH, range3.getEndTime());
34480e89
FC
105 }
106
6e1886bc 107 @Test
54a7a54c 108 public void testCopyConstructor2() {
34480e89
FC
109 try {
110 new TmfTimeRange(null);
75d42a16 111 fail("TmfTimeRange: null argument");
085d898f 112 } catch (final IllegalArgumentException e) {
34480e89
FC
113 // Success
114 }
115 }
cbd4ad82 116
9ee9135e
FC
117 // ------------------------------------------------------------------------
118 // hashCode
119 // ------------------------------------------------------------------------
120
6e1886bc 121 @Test
54a7a54c 122 public void testHashCode() {
085d898f
FC
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);
9ee9135e
FC
129
130 assertTrue("hashCode", range1.hashCode() == range1b.hashCode());
131 assertTrue("hashCode", range2.hashCode() == range2b.hashCode());
132
133 assertTrue("hashCode", range1.hashCode() != range2.hashCode());
134 }
085d898f
FC
135
136 // ------------------------------------------------------------------------
137 // equals
138 // ------------------------------------------------------------------------
139
6e1886bc 140 @Test
54a7a54c 141 public void testEqualsReflexivity() {
085d898f
FC
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
6e1886bc 154 @Test
54a7a54c 155 public void testEqualsSymmetry() {
085d898f
FC
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
6e1886bc 171 @Test
54a7a54c 172 public void testEqualsTransivity() {
085d898f
FC
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
6e1886bc 184 @Test
54a7a54c 185 public void testEqualsNull() {
085d898f
FC
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
6e1886bc 193 @Test
54a7a54c 194 public void testEqualsBadType() {
085d898f
FC
195 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
196 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
197 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
34480e89
FC
198
199 assertTrue("equals", !range1.equals(ts1));
200 }
085d898f 201
6e1886bc 202 @Test
54a7a54c 203 public void testEqualStartTime() {
085d898f
FC
204 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
205 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
206 final ITmfTimestamp ts3 = new TmfTimestamp(12355);
34480e89 207
085d898f
FC
208 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts3);
209 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
210 final TmfTimeRange range3 = new TmfTimeRange(ts1, ts2);
34480e89
FC
211
212 assertTrue("equals", !range1.equals(range2));
213 assertTrue("equals", !range1.equals(range3));
214 }
085d898f 215
6e1886bc 216 @Test
54a7a54c 217 public void testEqualsEndTime() {
085d898f
FC
218 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
219 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
220 final ITmfTimestamp ts3 = new TmfTimestamp(12355);
34480e89 221
085d898f
FC
222 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
223 final TmfTimeRange range2 = new TmfTimeRange(ts1, ts3);
224 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts3);
34480e89
FC
225
226 assertTrue("equals", !range1.equals(range2));
227 assertTrue("equals", !range1.equals(range3));
228 }
085d898f 229
34480e89
FC
230 // ------------------------------------------------------------------------
231 // toString
232 // ------------------------------------------------------------------------
233
6e1886bc 234 @Test
54a7a54c 235 public void testToString() {
085d898f
FC
236 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
237 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
238 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
34480e89 239
085d898f 240 final String expected = "TmfTimeRange [fStartTime=" + ts1 + ", fEndTime=" + ts2 + "]";
34480e89
FC
241 assertEquals("toString", expected, range.toString());
242 }
cbd4ad82 243
085d898f
FC
244 // ------------------------------------------------------------------------
245 // contains
246 // ------------------------------------------------------------------------
247
6e1886bc 248 @Test
54a7a54c 249 public void testContainsTimestamp() {
085d898f
FC
250 final ITmfTimestamp ts1 = new TmfTimestamp(12345);
251 final ITmfTimestamp ts2 = new TmfTimestamp(12350);
252 final TmfTimeRange range = new TmfTimeRange(ts1, ts2);
cbd4ad82 253
085d898f
FC
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)));
cbd4ad82 257
085d898f
FC
258 assertFalse("contains (low value)", range.contains(new TmfTimestamp(12340)));
259 assertFalse("contains (high value)", range.contains(new TmfTimestamp(12351)));
34480e89 260
a4115405 261 assertTrue("contains (zero)", range.contains(TmfTimestamp.ZERO));
085d898f 262 }
cbd4ad82 263
6e1886bc 264 @Test
54a7a54c 265 public void testContainsRange() {
085d898f
FC
266 final ITmfTimestamp ts1 = new TmfTimestamp(10);
267 final ITmfTimestamp ts2 = new TmfTimestamp(20);
268 final ITmfTimestamp ts3 = new TmfTimestamp(30);
269 final ITmfTimestamp ts4 = new TmfTimestamp(40);
270 final ITmfTimestamp ts5 = new TmfTimestamp(50);
271 final ITmfTimestamp ts6 = new TmfTimestamp(60);
272 final ITmfTimestamp ts7 = new TmfTimestamp(70);
273 final ITmfTimestamp ts8 = new TmfTimestamp(80);
34480e89
FC
274
275 // Reference range
085d898f 276 final TmfTimeRange range0 = new TmfTimeRange(ts3, ts6);
34480e89
FC
277
278 // Start time below range
085d898f
FC
279 final TmfTimeRange range1 = new TmfTimeRange(ts1, ts2);
280 final TmfTimeRange range2 = new TmfTimeRange(ts2, ts3);
281 final TmfTimeRange range3 = new TmfTimeRange(ts2, ts4);
282 final TmfTimeRange range4 = new TmfTimeRange(ts2, ts6);
283 final TmfTimeRange range5 = new TmfTimeRange(ts2, ts7);
34480e89
FC
284
285 assertFalse("contains", range0.contains(range1));
286 assertFalse("contains", range0.contains(range2));
287 assertFalse("contains", range0.contains(range3));
288 assertFalse("contains", range0.contains(range4));
289 assertFalse("contains", range0.contains(range5));
290
291 // End time above range
085d898f
FC
292 final TmfTimeRange range6 = new TmfTimeRange(ts3, ts7);
293 final TmfTimeRange range7 = new TmfTimeRange(ts4, ts7);
294 final TmfTimeRange range8 = new TmfTimeRange(ts6, ts7);
295 final TmfTimeRange range9 = new TmfTimeRange(ts7, ts8);
34480e89
FC
296
297 assertFalse("contains", range0.contains(range6));
298 assertFalse("contains", range0.contains(range7));
299 assertFalse("contains", range0.contains(range8));
300 assertFalse("contains", range0.contains(range9));
301
302 // Within range
085d898f
FC
303 final TmfTimeRange range10 = new TmfTimeRange(ts3, ts4);
304 final TmfTimeRange range11 = new TmfTimeRange(ts3, ts6);
305 final TmfTimeRange range12 = new TmfTimeRange(ts4, ts5);
306 final TmfTimeRange range13 = new TmfTimeRange(ts4, ts6);
34480e89
FC
307
308 assertTrue("contains", range0.contains(range10));
309 assertTrue("contains", range0.contains(range11));
310 assertTrue("contains", range0.contains(range12));
311 assertTrue("contains", range0.contains(range13));
312 }
313
085d898f
FC
314 // ------------------------------------------------------------------------
315 // getIntersection
316 // ------------------------------------------------------------------------
317
6e1886bc 318 @Test
54a7a54c 319 public void testGetIntersection() {
085d898f
FC
320
321 final ITmfTimestamp ts1a = new TmfTimestamp(1000);
322 final ITmfTimestamp ts1b = new TmfTimestamp(2000);
323 final TmfTimeRange range1 = new TmfTimeRange(ts1a, ts1b);
324
325 final ITmfTimestamp ts2a = new TmfTimestamp(2000);
326 final ITmfTimestamp ts2b = new TmfTimestamp(3000);
327 final TmfTimeRange range2 = new TmfTimeRange(ts2a, ts2b);
328
329 final ITmfTimestamp ts3a = new TmfTimestamp(3000);
330 final ITmfTimestamp ts3b = new TmfTimestamp(4000);
331 final TmfTimeRange range3 = new TmfTimeRange(ts3a, ts3b);
332
333 final ITmfTimestamp ts4a = new TmfTimestamp(1500);
334 final ITmfTimestamp ts4b = new TmfTimestamp(2500);
335 final TmfTimeRange range4 = new TmfTimeRange(ts4a, ts4b);
336
337 final ITmfTimestamp ts5a = new TmfTimestamp(1500);
338 final ITmfTimestamp ts5b = new TmfTimestamp(2000);
339 final TmfTimeRange range5 = new TmfTimeRange(ts5a, ts5b);
340
341 final ITmfTimestamp ts6a = new TmfTimestamp(2000);
342 final ITmfTimestamp ts6b = new TmfTimestamp(2500);
343 final TmfTimeRange range6 = new TmfTimeRange(ts6a, ts6b);
344
345 final ITmfTimestamp ts7a = new TmfTimestamp(1500);
346 final ITmfTimestamp ts7b = new TmfTimestamp(3500);
347 final TmfTimeRange range7 = new TmfTimeRange(ts7a, ts7b);
348
349 final ITmfTimestamp ts8a = new TmfTimestamp(2250);
350 final ITmfTimestamp ts8b = new TmfTimestamp(2750);
351 final TmfTimeRange range8 = new TmfTimeRange(ts8a, ts8b);
352
353 assertEquals("getIntersection (below - not contiguous)", null, range1.getIntersection(range3));
354 assertEquals("getIntersection (above - not contiguous)", null, range3.getIntersection(range1));
355
356 assertEquals("getIntersection (below - contiguous)", new TmfTimeRange(ts1b, ts1b), range1.getIntersection(range2));
357 assertEquals("getIntersection (above - contiguous)", new TmfTimeRange(ts3a, ts3a), range3.getIntersection(range2));
358
359 assertEquals("getIntersection (below - overlap)", new TmfTimeRange(ts2a, ts4b), range2.getIntersection(range4));
360 assertEquals("getIntersection (above - overlap)", new TmfTimeRange(ts2a, ts4b), range4.getIntersection(range2));
361
362 assertEquals("getIntersection (within - overlap1)", range6, range2.getIntersection(range6));
363 assertEquals("getIntersection (within - overlap2)", range6, range6.getIntersection(range2));
364
365 assertEquals("getIntersection (within - overlap3)", range5, range1.getIntersection(range5));
366 assertEquals("getIntersection (within - overlap4)", range5, range5.getIntersection(range1));
367
368 assertEquals("getIntersection (within - overlap5)", range8, range2.getIntersection(range8));
369 assertEquals("getIntersection (within - overlap6)", range8, range8.getIntersection(range2));
370
371 assertEquals("getIntersection (accross1)", range2, range2.getIntersection(range7));
372 assertEquals("getIntersection (accross2)", range2, range7.getIntersection(range2));
373 }
023761c4 374
d18dd09b 375}
This page took 0.056436 seconds and 5 git commands to generate.