1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Adjusted for new Event Model
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
15 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.event
;
17 import static org
.junit
.Assert
.assertEquals
;
18 import static org
.junit
.Assert
.assertFalse
;
19 import static org
.junit
.Assert
.assertNotNull
;
20 import static org
.junit
.Assert
.assertNull
;
21 import static org
.junit
.Assert
.assertTrue
;
22 import static org
.junit
.Assert
.fail
;
25 import java
.io
.IOException
;
26 import java
.net
.URISyntaxException
;
29 import org
.eclipse
.core
.runtime
.FileLocator
;
30 import org
.eclipse
.core
.runtime
.Path
;
31 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
32 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEventField
;
33 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEventType
;
34 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
35 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventField
;
36 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventType
;
37 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
38 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.TmfCoreTestPlugin
;
39 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimestamp
;
40 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
41 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
42 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
43 import org
.junit
.Test
;
46 * Test suite for the TmfEvent class.
48 @SuppressWarnings("javadoc")
49 public class TmfEventTest
{
51 // ------------------------------------------------------------------------
53 // ------------------------------------------------------------------------
55 private final String fSource
= "Source";
57 private final String fContext
= ITmfEventType
.DEFAULT_CONTEXT_ID
;
58 private final String fTypeId
= "TestType";
59 private final String fLabel1
= "AString";
60 private final String fLabel2
= "AnInteger";
61 private final String
[] fLabels
= new String
[] { fLabel1
, fLabel2
};
62 private final TmfEventType fType
= new TmfEventType(fContext
, fTypeId
, TmfEventField
.makeRoot(fLabels
));
64 private final Object fValue1a
= "Some string";
65 private final Object fValue1b
= Integer
.valueOf(10);
66 private final ITmfEventField fField1a
= new TmfEventField(fLabel1
, fValue1a
);
67 private final ITmfEventField fField1b
= new TmfEventField(fLabel2
, fValue1b
);
68 private final ITmfEventField
[] fFields1
= new ITmfEventField
[] { fField1a
, fField1b
};
69 private final String fRawContent1
= fField1a
.toString() + fField1b
.toString();
70 private final ITmfEventField fContent1
= new TmfEventField(fRawContent1
, fFields1
);
71 private final TmfTimestamp fTimestamp1
= new TmfTimestamp(12345, 2, 5);
72 private final String fReference1
= "Some reference";
73 private final ITmfEvent fEvent1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
75 private final Object fValue2a
= "Another string";
76 private final Object fValue2b
= Integer
.valueOf(-4);
77 private final ITmfEventField fField2a
= new TmfEventField(fLabel1
, fValue2a
);
78 private final ITmfEventField fField2b
= new TmfEventField(fLabel2
, fValue2b
);
79 private final ITmfEventField
[] fFields2
= new ITmfEventField
[] { fField2a
, fField2b
};
80 private final String fRawContent2
= fField2a
.toString() + fField2b
.toString();
81 private final ITmfEventField fContent2
= new TmfEventField(fRawContent2
, fFields2
);
82 private final TmfTimestamp fTimestamp2
= new TmfTimestamp(12350, 2, 5);
83 private final String fReference2
= "Some other reference";
84 private final ITmfEvent fEvent2
= new TmfEvent(null, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
86 // ------------------------------------------------------------------------
88 // ------------------------------------------------------------------------
90 private static TmfTraceStub
openTrace() {
91 final String DIRECTORY
= "testfiles";
92 final String TEST_STREAM
= "A-Test-10K";
93 final String path
= DIRECTORY
+ File
.separator
+ TEST_STREAM
;
95 TmfTraceStub trace
= null;
97 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
98 final File test
= new File(FileLocator
.toFileURL(location
).toURI());
99 trace
= new TmfTraceStub(test
.toURI().getPath(), 500, false);
100 } catch (final TmfTraceException e
) {
102 } catch (final URISyntaxException e
) {
104 } catch (final IOException e
) {
110 // ------------------------------------------------------------------------
112 // ------------------------------------------------------------------------
115 public void testDefaultConstructor() {
116 final ITmfEvent event
= new TmfEvent();
117 assertNull("getTrace", event
.getTrace());
118 assertEquals("getRank", ITmfContext
.UNKNOWN_RANK
, event
.getRank());
119 assertNull("getTimestamp", event
.getTimestamp());
120 assertNull("getSource", event
.getSource());
121 assertNull("getType", event
.getType());
122 assertNull("getContent", event
.getContent());
123 assertNull("getReference", event
.getReference());
127 public void testFullConstructor() {
128 assertNull("getTrace", fEvent1
.getTrace());
129 assertEquals("getRank", 0, fEvent1
.getRank());
130 assertEquals("getTimestamp", fTimestamp1
, fEvent1
.getTimestamp());
131 assertEquals("getSource", fSource
, fEvent1
.getSource());
132 assertEquals("getType", fType
, fEvent1
.getType());
133 assertEquals("getContent", fContent1
, fEvent1
.getContent());
134 assertEquals("getReference", fReference1
, fEvent1
.getReference());
136 assertNull("getTrace", fEvent2
.getTrace());
137 assertEquals("getRank", 1, fEvent2
.getRank());
138 assertEquals("getTimestamp", fTimestamp2
, fEvent2
.getTimestamp());
139 assertEquals("getSource", fSource
, fEvent2
.getSource());
140 assertEquals("getType", fType
, fEvent2
.getType());
141 assertEquals("getContent", fContent2
, fEvent2
.getContent());
142 assertEquals("getReference", fReference2
, fEvent2
.getReference());
146 public void testNoRankConstructor() {
147 final ITmfEvent event
= new TmfEvent(null, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
148 assertNull("getTrace", event
.getTrace());
149 assertEquals("getRank", ITmfContext
.UNKNOWN_RANK
, event
.getRank());
150 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
151 assertEquals("getSource", fSource
, event
.getSource());
152 assertEquals("getType", fType
, event
.getType());
153 assertEquals("getContent", fContent1
, event
.getContent());
154 assertEquals("getReference", fReference1
, event
.getReference());
158 public void testConstructorWithTrace() {
159 final ITmfTrace trace
= openTrace();
160 final ITmfEvent event
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
161 assertNotNull("getTrace", event
.getTrace());
162 assertEquals("getRank", 0, event
.getRank());
163 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
164 assertEquals("getSource", fSource
, event
.getSource());
165 assertEquals("getType", fType
, event
.getType());
166 assertEquals("getContent", fContent1
, event
.getContent());
167 assertEquals("getReference", fReference1
, event
.getReference());
172 public void testTmfEventCopy() {
173 final ITmfEvent event
= new TmfEvent(fEvent1
);
174 assertNull("getTrace", event
.getTrace());
175 assertEquals("getRank", 0, event
.getRank());
176 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
177 assertEquals("getSource", fSource
, event
.getSource());
178 assertEquals("getType", fType
, event
.getType());
179 assertEquals("getContent", fContent1
, event
.getContent());
180 assertEquals("getReference", fReference1
, event
.getReference());
184 public void testEventCopy2() {
188 } catch (final IllegalArgumentException e
) {
193 // ------------------------------------------------------------------------
195 // ------------------------------------------------------------------------
198 public void testHashCode() {
199 ITmfEvent event1
= new TmfEvent();
200 ITmfEvent event2
= new TmfEvent();
202 assertTrue("hashCode", event1
.hashCode() == event2
.hashCode());
204 final ITmfTrace trace
= openTrace();
205 event1
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
206 event2
= new TmfEvent(trace
, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
207 final ITmfEvent event1b
= new TmfEvent(event1
);
208 final ITmfEvent event2b
= new TmfEvent(event2
);
210 assertTrue("hashCode", event1
.hashCode() == event1b
.hashCode());
211 assertTrue("hashCode", event2
.hashCode() == event2b
.hashCode());
213 assertTrue("hashCode", event1
.hashCode() != event2
.hashCode());
214 assertTrue("hashCode", event2
.hashCode() != event1
.hashCode());
219 // ------------------------------------------------------------------------
221 // ------------------------------------------------------------------------
224 public void testEqualsReflexivity() {
225 assertTrue("equals", fEvent1
.equals(fEvent1
));
226 assertTrue("equals", fEvent2
.equals(fEvent2
));
228 assertFalse("equals", fEvent1
.equals(fEvent2
));
229 assertFalse("equals", fEvent2
.equals(fEvent1
));
233 public void testEqualsSymmetry() {
234 final ITmfEvent event1
= new TmfEvent(fEvent1
);
235 final ITmfEvent event2
= new TmfEvent(fEvent2
);
237 assertTrue("equals", event1
.equals(fEvent1
));
238 assertTrue("equals", fEvent1
.equals(event1
));
240 assertTrue("equals", event2
.equals(fEvent2
));
241 assertTrue("equals", fEvent2
.equals(event2
));
245 public void testEqualsTransivity() {
246 final ITmfEvent event1
= new TmfEvent(fEvent1
);
247 final ITmfEvent event2
= new TmfEvent(fEvent1
);
248 final ITmfEvent event3
= new TmfEvent(fEvent1
);
250 assertTrue("equals", event1
.equals(event2
));
251 assertTrue("equals", event2
.equals(event3
));
252 assertTrue("equals", event1
.equals(event3
));
256 public void testEqualsNull() {
257 assertFalse("equals", fEvent1
.equals(null));
258 assertFalse("equals", fEvent2
.equals(null));
262 public void testNonEqualClasses() {
263 assertFalse("equals", fEvent1
.equals(fEvent1
.getType()));
264 assertFalse("equals", fEvent1
.equals(null));
268 public void testNonEqualTraces() {
269 final ITmfTrace trace1
= openTrace();
270 final ITmfTrace trace2
= openTrace();
272 final ITmfEvent event1
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
273 ITmfEvent event2
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
274 assertTrue("equals", event1
.equals(event2
));
275 assertTrue("equals", event2
.equals(event1
));
277 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
278 assertFalse("equals", event1
.equals(event2
));
279 assertFalse("equals", event2
.equals(event1
));
281 event2
= new TmfEvent(trace2
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
282 assertFalse("equals", event1
.equals(event2
));
283 assertFalse("equals", event2
.equals(event1
));
290 public void testNonEqualRanks() {
291 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
292 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
293 assertTrue("equals", event1
.equals(event2
));
294 assertTrue("equals", event2
.equals(event1
));
296 event2
= new TmfEvent(null, 1, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
297 assertFalse("equals", event1
.equals(event2
));
298 assertFalse("equals", event2
.equals(event1
));
302 public void testNonEqualTimestamps() {
303 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
304 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
305 assertTrue("equals", event1
.equals(event2
));
306 assertTrue("equals", event2
.equals(event1
));
308 event2
= new TmfEvent(null, 0, fTimestamp2
, fSource
, fType
, fContent1
, fReference1
);
309 assertFalse("equals", event1
.equals(event2
));
310 assertFalse("equals", event2
.equals(event1
));
312 event2
= new TmfEvent(null, 0, null, fSource
, fType
, fContent1
, fReference1
);
313 assertFalse("equals", event1
.equals(event2
));
314 assertFalse("equals", event2
.equals(event1
));
318 public void testNonEqualSources() {
319 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
320 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
321 assertTrue("equals", event1
.equals(event2
));
322 assertTrue("equals", event2
.equals(event1
));
324 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
+ "x", fType
, fContent1
, fReference1
);
325 assertFalse("equals", event1
.equals(event2
));
326 assertFalse("equals", event2
.equals(event1
));
328 event2
= new TmfEvent(null, 0, fTimestamp1
, null, fType
, fContent1
, fReference1
);
329 assertFalse("equals", event1
.equals(event2
));
330 assertFalse("equals", event2
.equals(event1
));
334 public void testNonEqualTypes() {
335 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
336 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
337 assertTrue("equals", event1
.equals(event2
));
338 assertTrue("equals", event2
.equals(event1
));
340 final String typeId
= "OtherTestType";
341 final String
[] labels
= new String
[] { fLabel2
, fLabel1
};
342 final TmfEventType newType
= new TmfEventType(fContext
, typeId
, TmfEventField
.makeRoot(labels
));
344 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, newType
, fContent1
, fReference1
);
345 assertFalse("equals", event1
.equals(event2
));
346 assertFalse("equals", event2
.equals(event1
));
348 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, null, fContent1
, fReference1
);
349 assertFalse("equals", event1
.equals(event2
));
350 assertFalse("equals", event2
.equals(event1
));
354 public void testNonEqualContents() {
355 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
356 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
357 assertTrue("equals", event1
.equals(event2
));
358 assertTrue("equals", event2
.equals(event1
));
360 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent2
, fReference1
);
361 assertFalse("equals", event1
.equals(event2
));
362 assertFalse("equals", event2
.equals(event1
));
364 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, null, fReference1
);
365 assertFalse("equals", event1
.equals(event2
));
366 assertFalse("equals", event2
.equals(event1
));
370 public void testNonEqualReferences() {
371 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
372 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
373 assertTrue("equals", event1
.equals(event2
));
374 assertTrue("equals", event2
.equals(event1
));
376 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference2
);
377 assertFalse("equals", event1
.equals(event2
));
378 assertFalse("equals", event2
.equals(event1
));
380 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, null);
381 assertFalse("equals", event1
.equals(event2
));
382 assertFalse("equals", event2
.equals(event1
));
385 // ------------------------------------------------------------------------
387 // ------------------------------------------------------------------------
390 public void testToString() {
391 final String expected1
= "TmfEvent [fTimestamp=" + fTimestamp1
+ ", fTrace=null, fRank=0, fSource=" + fSource
392 + ", fType=" + fType
+ ", fContent=" + fContent1
+ ", fReference=" + fReference1
+ "]";
393 assertEquals("toString", expected1
, fEvent1
.toString());
395 final String expected2
= "TmfEvent [fTimestamp=" + fTimestamp2
+ ", fTrace=null, fRank=1, fSource=" + fSource
396 + ", fType=" + fType
+ ", fContent=" + fContent2
+ ", fReference=" + fReference2
+ "]";
397 assertEquals("toString", expected2
, fEvent2
.toString());
401 * Test the .toString() with extended classes.
402 * It should print the correct class name.
405 public void testToStringExtended() {
406 class ExtendedEvent
extends TmfEvent
{
407 ExtendedEvent(ITmfEvent event
) {
411 ExtendedEvent event
= new ExtendedEvent(fEvent1
);
412 String expected
= "ExtendedEvent [fTimestamp=" + fTimestamp1
413 + ", fTrace=null, fRank=0, fSource=" + fSource
414 + ", fType=" + fType
+ ", fContent=" + fContent1
415 + ", fReference=" + fReference1
+ "]";
417 assertEquals(expected
, event
.toString());