Commit | Line | Data |
---|---|---|
d18dd09b | 1 | /******************************************************************************* |
9ee9135e | 2 | * Copyright (c) 2009, 2010, 2012 Ericsson |
d18dd09b ASL |
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 | |
9ee9135e | 11 | * Francois Chouinard - Adjusted for new Event Model |
d18dd09b ASL |
12 | *******************************************************************************/ |
13 | ||
6c13869b | 14 | package org.eclipse.linuxtools.tmf.core.tests.event; |
d18dd09b | 15 | |
bbc1c411 | 16 | import junit.framework.TestCase; |
17 | ||
18 | import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp; | |
6c13869b FC |
19 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; |
20 | import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp; | |
d18dd09b | 21 | |
d18dd09b ASL |
22 | /** |
23 | * <b><u>TmfTimeRangeTest</u></b> | |
24 | * <p> | |
cbd4ad82 | 25 | * Test suite for the TmfTimeRange class. |
d18dd09b | 26 | */ |
3b38ea61 | 27 | @SuppressWarnings("nls") |
d18dd09b ASL |
28 | public class TmfTimeRangeTest extends TestCase { |
29 | ||
cbd4ad82 | 30 | // ------------------------------------------------------------------------ |
d18dd09b | 31 | // Housekeeping |
cbd4ad82 | 32 | // ------------------------------------------------------------------------ |
d18dd09b ASL |
33 | |
34 | public TmfTimeRangeTest(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 | ||
cbd4ad82 | 48 | // ------------------------------------------------------------------------ |
d18dd09b | 49 | // Constructors |
cbd4ad82 | 50 | // ------------------------------------------------------------------------ |
d18dd09b | 51 | |
34480e89 FC |
52 | public void testConstructor() throws Exception { |
53 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
54 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
55 | 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.BigBang, null); | |
75d42a16 | 64 | fail("TmfTimeRange: bad end time"); |
34480e89 FC |
65 | } catch (IllegalArgumentException e) { |
66 | // Success | |
67 | } | |
68 | ||
69 | try { | |
70 | new TmfTimeRange(null, TmfTimestamp.BigCrunch); | |
75d42a16 | 71 | fail("TmfTimeRange: bad start time"); |
34480e89 FC |
72 | } catch (IllegalArgumentException e) { |
73 | // Success | |
74 | } | |
75 | } | |
76 | ||
77 | public void testOpenRange1() throws Exception { | |
78 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
79 | TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, ts2); | |
80 | ||
81 | assertEquals("startTime", TmfTimestamp.BigBang, range.getStartTime()); | |
82 | assertEquals("endTime", ts2, range.getEndTime()); | |
83 | } | |
84 | ||
85 | public void testOpenRange2() throws Exception { | |
86 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
87 | TmfTimeRange range = new TmfTimeRange(ts1, TmfTimestamp.BigCrunch); | |
88 | ||
89 | assertEquals("startTime", ts1, range.getStartTime()); | |
90 | assertEquals("endTime", TmfTimestamp.BigCrunch, range.getEndTime()); | |
91 | } | |
92 | ||
93 | public void testOpenRange3() throws Exception { | |
94 | TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
95 | ||
96 | assertEquals("startTime", TmfTimestamp.BigBang, range.getStartTime()); | |
97 | assertEquals("endTime", TmfTimestamp.BigCrunch, range.getEndTime()); | |
98 | } | |
99 | ||
100 | public void testCopyConstructor() throws Exception { | |
101 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
102 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
103 | TmfTimeRange range0 = new TmfTimeRange(ts1, ts2); | |
104 | TmfTimeRange range1 = new TmfTimeRange(range0); | |
105 | ||
106 | assertEquals("startTime", ts1, range1.getStartTime()); | |
107 | assertEquals("endTime", ts2, range1.getEndTime()); | |
108 | ||
109 | TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
110 | TmfTimeRange range3 = new TmfTimeRange(range2); | |
111 | ||
112 | assertEquals("startTime", TmfTimestamp.BigBang, range3.getStartTime()); | |
113 | assertEquals("endTime", TmfTimestamp.BigCrunch, range3.getEndTime()); | |
114 | } | |
115 | ||
116 | public void testCopyConstructor2() throws Exception { | |
117 | try { | |
118 | new TmfTimeRange(null); | |
75d42a16 | 119 | fail("TmfTimeRange: null argument"); |
34480e89 FC |
120 | } catch (IllegalArgumentException e) { |
121 | // Success | |
122 | } | |
123 | } | |
cbd4ad82 | 124 | |
9ee9135e FC |
125 | // ------------------------------------------------------------------------ |
126 | // clone | |
127 | // ------------------------------------------------------------------------ | |
128 | ||
129 | public void testClone() throws Exception { | |
130 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
131 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
132 | ||
133 | TmfTimeRange range = new TmfTimeRange(ts1, ts2); | |
134 | TmfTimeRange clone = range.clone(); | |
135 | ||
de126dbb FC |
136 | assertTrue("clone", range.clone().equals(range)); |
137 | assertTrue("clone", clone.clone().equals(clone)); | |
138 | ||
9ee9135e FC |
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 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
150 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
151 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); | |
152 | TmfTimeRange range1b = new TmfTimeRange(range1); | |
153 | TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
154 | 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 | ||
cbd4ad82 FC |
162 | // ------------------------------------------------------------------------ |
163 | // equals | |
164 | // ------------------------------------------------------------------------ | |
165 | ||
166 | public void testEqualsReflexivity() throws Exception { | |
bbc1c411 | 167 | ITmfTimestamp ts1 = new TmfTimestamp(12345); |
168 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
cbd4ad82 FC |
169 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); |
170 | TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
d18dd09b | 171 | |
cbd4ad82 FC |
172 | assertTrue("equals", range1.equals(range1)); |
173 | assertTrue("equals", range2.equals(range2)); | |
d18dd09b | 174 | |
cbd4ad82 FC |
175 | assertTrue("equals", !range1.equals(range2)); |
176 | assertTrue("equals", !range2.equals(range1)); | |
177 | } | |
178 | ||
179 | public void testEqualsSymmetry() throws Exception { | |
bbc1c411 | 180 | ITmfTimestamp ts1 = new TmfTimestamp(12345); |
181 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
cbd4ad82 FC |
182 | TmfTimeRange range1a = new TmfTimeRange(ts1, ts2); |
183 | TmfTimeRange range1b = new TmfTimeRange(ts1, ts2); | |
184 | ||
185 | TmfTimeRange range2a = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
186 | TmfTimeRange range2b = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
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 { | |
bbc1c411 | 196 | ITmfTimestamp ts1 = new TmfTimestamp(12345); |
197 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
cbd4ad82 FC |
198 | TmfTimeRange range1a = new TmfTimeRange(ts1, ts2); |
199 | TmfTimeRange range1b = new TmfTimeRange(ts1, ts2); | |
200 | 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)); | |
d18dd09b | 205 | } |
cbd4ad82 | 206 | |
cbd4ad82 | 207 | public void testEqualsNull() throws Exception { |
bbc1c411 | 208 | ITmfTimestamp ts1 = new TmfTimestamp(12345); |
209 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
cbd4ad82 FC |
210 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); |
211 | ||
212 | assertTrue("equals", !range1.equals(null)); | |
213 | } | |
214 | ||
34480e89 FC |
215 | public void testEqualsBadType() throws Exception { |
216 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
217 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
218 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); | |
219 | ||
220 | assertTrue("equals", !range1.equals(ts1)); | |
221 | } | |
222 | ||
223 | public void testEqualStartTime() throws Exception { | |
224 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
225 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
226 | ITmfTimestamp ts3 = new TmfTimestamp(12355); | |
227 | ||
228 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts3); | |
229 | TmfTimeRange range2 = new TmfTimeRange(ts2, ts3); | |
230 | 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 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
238 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
239 | ITmfTimestamp ts3 = new TmfTimestamp(12355); | |
240 | ||
241 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); | |
242 | TmfTimeRange range2 = new TmfTimeRange(ts1, ts3); | |
243 | TmfTimeRange range3 = new TmfTimeRange(ts2, ts3); | |
244 | ||
245 | assertTrue("equals", !range1.equals(range2)); | |
246 | assertTrue("equals", !range1.equals(range3)); | |
247 | } | |
248 | ||
34480e89 FC |
249 | // ------------------------------------------------------------------------ |
250 | // toString | |
251 | // ------------------------------------------------------------------------ | |
252 | ||
253 | public void testToString() throws Exception { | |
254 | ITmfTimestamp ts1 = new TmfTimestamp(12345); | |
255 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
256 | TmfTimeRange range = new TmfTimeRange(ts1, ts2); | |
257 | ||
258 | String expected = "TmfTimeRange [fStartTime=" + ts1 + ", fEndTime=" + ts2 + "]"; | |
259 | assertEquals("toString", expected, range.toString()); | |
260 | } | |
261 | ||
cbd4ad82 FC |
262 | // ------------------------------------------------------------------------ |
263 | // contains | |
264 | // ------------------------------------------------------------------------ | |
265 | ||
34480e89 | 266 | public void testContainsTimestamp() throws Exception { |
bbc1c411 | 267 | ITmfTimestamp ts1 = new TmfTimestamp(12345); |
268 | ITmfTimestamp ts2 = new TmfTimestamp(12350); | |
cbd4ad82 FC |
269 | 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))); | |
34480e89 FC |
277 | |
278 | assertTrue("contains (zero)", range.contains(TmfTimestamp.Zero)); | |
cbd4ad82 FC |
279 | } |
280 | ||
34480e89 FC |
281 | public void testContainsRange() throws Exception { |
282 | ITmfTimestamp ts1 = new TmfTimestamp(10); | |
283 | ITmfTimestamp ts2 = new TmfTimestamp(20); | |
284 | ITmfTimestamp ts3 = new TmfTimestamp(30); | |
285 | ITmfTimestamp ts4 = new TmfTimestamp(40); | |
286 | ITmfTimestamp ts5 = new TmfTimestamp(50); | |
287 | ITmfTimestamp ts6 = new TmfTimestamp(60); | |
288 | ITmfTimestamp ts7 = new TmfTimestamp(70); | |
289 | ITmfTimestamp ts8 = new TmfTimestamp(80); | |
290 | ||
291 | // Reference range | |
292 | TmfTimeRange range0 = new TmfTimeRange(ts3, ts6); | |
293 | ||
294 | // Start time below range | |
295 | TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); | |
296 | TmfTimeRange range2 = new TmfTimeRange(ts2, ts3); | |
297 | TmfTimeRange range3 = new TmfTimeRange(ts2, ts4); | |
298 | TmfTimeRange range4 = new TmfTimeRange(ts2, ts6); | |
299 | 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 | TmfTimeRange range6 = new TmfTimeRange(ts3, ts7); | |
309 | TmfTimeRange range7 = new TmfTimeRange(ts4, ts7); | |
310 | TmfTimeRange range8 = new TmfTimeRange(ts6, ts7); | |
311 | 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 | TmfTimeRange range10 = new TmfTimeRange(ts3, ts4); | |
320 | TmfTimeRange range11 = new TmfTimeRange(ts3, ts6); | |
321 | TmfTimeRange range12 = new TmfTimeRange(ts4, ts5); | |
322 | 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 | ||
023761c4 FC |
330 | // ------------------------------------------------------------------------ |
331 | // getIntersection | |
332 | // ------------------------------------------------------------------------ | |
333 | ||
334 | public void testGetIntersection() throws Exception { | |
335 | ||
bbc1c411 | 336 | ITmfTimestamp ts1a = new TmfTimestamp(1000); |
337 | ITmfTimestamp ts1b = new TmfTimestamp(2000); | |
023761c4 FC |
338 | TmfTimeRange range1 = new TmfTimeRange(ts1a, ts1b); |
339 | ||
bbc1c411 | 340 | ITmfTimestamp ts2a = new TmfTimestamp(2000); |
341 | ITmfTimestamp ts2b = new TmfTimestamp(3000); | |
023761c4 FC |
342 | TmfTimeRange range2 = new TmfTimeRange(ts2a, ts2b); |
343 | ||
bbc1c411 | 344 | ITmfTimestamp ts3a = new TmfTimestamp(3000); |
345 | ITmfTimestamp ts3b = new TmfTimestamp(4000); | |
023761c4 FC |
346 | TmfTimeRange range3 = new TmfTimeRange(ts3a, ts3b); |
347 | ||
bbc1c411 | 348 | ITmfTimestamp ts4a = new TmfTimestamp(1500); |
349 | ITmfTimestamp ts4b = new TmfTimestamp(2500); | |
023761c4 FC |
350 | TmfTimeRange range4 = new TmfTimeRange(ts4a, ts4b); |
351 | ||
bbc1c411 | 352 | ITmfTimestamp ts5a = new TmfTimestamp(1500); |
353 | ITmfTimestamp ts5b = new TmfTimestamp(2000); | |
023761c4 FC |
354 | TmfTimeRange range5 = new TmfTimeRange(ts5a, ts5b); |
355 | ||
bbc1c411 | 356 | ITmfTimestamp ts6a = new TmfTimestamp(2000); |
357 | ITmfTimestamp ts6b = new TmfTimestamp(2500); | |
023761c4 FC |
358 | TmfTimeRange range6 = new TmfTimeRange(ts6a, ts6b); |
359 | ||
bbc1c411 | 360 | ITmfTimestamp ts7a = new TmfTimestamp(1500); |
361 | ITmfTimestamp ts7b = new TmfTimestamp(3500); | |
023761c4 FC |
362 | TmfTimeRange range7 = new TmfTimeRange(ts7a, ts7b); |
363 | ||
bbc1c411 | 364 | ITmfTimestamp ts8a = new TmfTimestamp(2250); |
365 | ITmfTimestamp ts8b = new TmfTimestamp(2750); | |
023761c4 FC |
366 | 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 | ||
d18dd09b | 390 | } |