Commit | Line | Data |
---|---|---|
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 | 15 | package org.eclipse.linuxtools.tmf.core.tests.event; |
d18dd09b | 16 | |
6e1886bc AM |
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; | |
bbc1c411 | 21 | |
3bd46eef AM |
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; | |
6e1886bc | 25 | import org.junit.Test; |
d18dd09b | 26 | |
d18dd09b | 27 | /** |
cbd4ad82 | 28 | * Test suite for the TmfTimeRange class. |
d18dd09b | 29 | */ |
6e1886bc AM |
30 | @SuppressWarnings({"nls", "javadoc"}) |
31 | public 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 | } |