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
.tests
.shared
.TmfTestTrace
;
40 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimestamp
;
41 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
42 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
43 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
44 import org
.junit
.Test
;
47 * Test suite for the TmfEvent class.
49 @SuppressWarnings("javadoc")
50 public class TmfEventTest
{
52 // ------------------------------------------------------------------------
54 // ------------------------------------------------------------------------
56 private final String fSource
= "Source";
58 private final String fContext
= ITmfEventType
.DEFAULT_CONTEXT_ID
;
59 private final String fTypeId
= "TestType";
60 private final String fLabel1
= "AString";
61 private final String fLabel2
= "AnInteger";
62 private final String
[] fLabels
= new String
[] { fLabel1
, fLabel2
};
63 private final TmfEventType fType
= new TmfEventType(fContext
, fTypeId
, TmfEventField
.makeRoot(fLabels
));
65 private final Object fValue1a
= "Some string";
66 private final Object fValue1b
= Integer
.valueOf(10);
67 private final ITmfEventField fField1a
= new TmfEventField(fLabel1
, fValue1a
, null);
68 private final ITmfEventField fField1b
= new TmfEventField(fLabel2
, fValue1b
, null);
69 private final ITmfEventField
[] fFields1
= new ITmfEventField
[] { fField1a
, fField1b
};
70 private final String fRawContent1
= fField1a
.toString() + fField1b
.toString();
71 private final ITmfEventField fContent1
= new TmfEventField(fRawContent1
, null, fFields1
);
72 private final TmfTimestamp fTimestamp1
= new TmfTimestamp(12345, 2, 5);
73 private final String fReference1
= "Some reference";
74 private final ITmfEvent fEvent1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
76 private final Object fValue2a
= "Another string";
77 private final Object fValue2b
= Integer
.valueOf(-4);
78 private final ITmfEventField fField2a
= new TmfEventField(fLabel1
, fValue2a
, null);
79 private final ITmfEventField fField2b
= new TmfEventField(fLabel2
, fValue2b
, null);
80 private final ITmfEventField
[] fFields2
= new ITmfEventField
[] { fField2a
, fField2b
};
81 private final String fRawContent2
= fField2a
.toString() + fField2b
.toString();
82 private final ITmfEventField fContent2
= new TmfEventField(fRawContent2
, null, fFields2
);
83 private final TmfTimestamp fTimestamp2
= new TmfTimestamp(12350, 2, 5);
84 private final String fReference2
= "Some other reference";
85 private final ITmfEvent fEvent2
= new TmfEvent(null, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
87 // ------------------------------------------------------------------------
89 // ------------------------------------------------------------------------
91 private static TmfTraceStub
openTrace() {
92 TmfTraceStub trace
= null;
94 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TmfTestTrace
.A_TEST_10K
.getFullPath()), null);
95 final File test
= new File(FileLocator
.toFileURL(location
).toURI());
96 trace
= new TmfTraceStub(test
.toURI().getPath(), 500, false, null);
97 } catch (final TmfTraceException e
) {
99 } catch (final URISyntaxException e
) {
101 } catch (final IOException e
) {
107 // ------------------------------------------------------------------------
109 // ------------------------------------------------------------------------
112 public void testDefaultConstructor() {
113 final ITmfEvent event
= new TmfEvent();
114 assertNull("getTrace", event
.getTrace());
115 assertEquals("getRank", ITmfContext
.UNKNOWN_RANK
, event
.getRank());
116 assertNull("getTimestamp", event
.getTimestamp());
117 assertNull("getSource", event
.getSource());
118 assertNull("getType", event
.getType());
119 assertNull("getContent", event
.getContent());
120 assertNull("getReference", event
.getReference());
124 public void testFullConstructor() {
125 assertNull("getTrace", fEvent1
.getTrace());
126 assertEquals("getRank", 0, fEvent1
.getRank());
127 assertEquals("getTimestamp", fTimestamp1
, fEvent1
.getTimestamp());
128 assertEquals("getSource", fSource
, fEvent1
.getSource());
129 assertEquals("getType", fType
, fEvent1
.getType());
130 assertEquals("getContent", fContent1
, fEvent1
.getContent());
131 assertEquals("getReference", fReference1
, fEvent1
.getReference());
133 assertNull("getTrace", fEvent2
.getTrace());
134 assertEquals("getRank", 1, fEvent2
.getRank());
135 assertEquals("getTimestamp", fTimestamp2
, fEvent2
.getTimestamp());
136 assertEquals("getSource", fSource
, fEvent2
.getSource());
137 assertEquals("getType", fType
, fEvent2
.getType());
138 assertEquals("getContent", fContent2
, fEvent2
.getContent());
139 assertEquals("getReference", fReference2
, fEvent2
.getReference());
143 public void testNoRankConstructor() {
144 final ITmfEvent event
= new TmfEvent(null, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
145 assertNull("getTrace", event
.getTrace());
146 assertEquals("getRank", ITmfContext
.UNKNOWN_RANK
, event
.getRank());
147 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
148 assertEquals("getSource", fSource
, event
.getSource());
149 assertEquals("getType", fType
, event
.getType());
150 assertEquals("getContent", fContent1
, event
.getContent());
151 assertEquals("getReference", fReference1
, event
.getReference());
155 public void testConstructorWithTrace() {
156 final ITmfTrace trace
= openTrace();
157 final ITmfEvent event
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
158 assertNotNull("getTrace", event
.getTrace());
159 assertEquals("getRank", 0, event
.getRank());
160 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
161 assertEquals("getSource", fSource
, event
.getSource());
162 assertEquals("getType", fType
, event
.getType());
163 assertEquals("getContent", fContent1
, event
.getContent());
164 assertEquals("getReference", fReference1
, event
.getReference());
169 public void testTmfEventCopy() {
170 final ITmfEvent event
= new TmfEvent(fEvent1
);
171 assertNull("getTrace", event
.getTrace());
172 assertEquals("getRank", 0, event
.getRank());
173 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
174 assertEquals("getSource", fSource
, event
.getSource());
175 assertEquals("getType", fType
, event
.getType());
176 assertEquals("getContent", fContent1
, event
.getContent());
177 assertEquals("getReference", fReference1
, event
.getReference());
181 public void testEventCopy2() {
185 } catch (final IllegalArgumentException e
) {
190 // ------------------------------------------------------------------------
192 // ------------------------------------------------------------------------
195 public void testHashCode() {
196 ITmfEvent event1
= new TmfEvent();
197 ITmfEvent event2
= new TmfEvent();
199 assertTrue("hashCode", event1
.hashCode() == event2
.hashCode());
201 final ITmfTrace trace
= openTrace();
202 event1
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
203 event2
= new TmfEvent(trace
, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
204 final ITmfEvent event1b
= new TmfEvent(event1
);
205 final ITmfEvent event2b
= new TmfEvent(event2
);
207 assertTrue("hashCode", event1
.hashCode() == event1b
.hashCode());
208 assertTrue("hashCode", event2
.hashCode() == event2b
.hashCode());
210 assertTrue("hashCode", event1
.hashCode() != event2
.hashCode());
211 assertTrue("hashCode", event2
.hashCode() != event1
.hashCode());
216 // ------------------------------------------------------------------------
218 // ------------------------------------------------------------------------
221 public void testEqualsReflexivity() {
222 assertTrue("equals", fEvent1
.equals(fEvent1
));
223 assertTrue("equals", fEvent2
.equals(fEvent2
));
225 assertFalse("equals", fEvent1
.equals(fEvent2
));
226 assertFalse("equals", fEvent2
.equals(fEvent1
));
230 public void testEqualsSymmetry() {
231 final ITmfEvent event1
= new TmfEvent(fEvent1
);
232 final ITmfEvent event2
= new TmfEvent(fEvent2
);
234 assertTrue("equals", event1
.equals(fEvent1
));
235 assertTrue("equals", fEvent1
.equals(event1
));
237 assertTrue("equals", event2
.equals(fEvent2
));
238 assertTrue("equals", fEvent2
.equals(event2
));
242 public void testEqualsTransivity() {
243 final ITmfEvent event1
= new TmfEvent(fEvent1
);
244 final ITmfEvent event2
= new TmfEvent(fEvent1
);
245 final ITmfEvent event3
= new TmfEvent(fEvent1
);
247 assertTrue("equals", event1
.equals(event2
));
248 assertTrue("equals", event2
.equals(event3
));
249 assertTrue("equals", event1
.equals(event3
));
253 public void testEqualsNull() {
254 assertFalse("equals", fEvent1
.equals(null));
255 assertFalse("equals", fEvent2
.equals(null));
259 public void testNonEqualClasses() {
260 assertFalse("equals", fEvent1
.equals(fEvent1
.getType()));
261 assertFalse("equals", fEvent1
.equals(null));
265 public void testNonEqualTraces() {
266 final ITmfTrace trace1
= openTrace();
267 final ITmfTrace trace2
= openTrace();
269 final ITmfEvent event1
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
270 ITmfEvent event2
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
271 assertTrue("equals", event1
.equals(event2
));
272 assertTrue("equals", event2
.equals(event1
));
274 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
275 assertFalse("equals", event1
.equals(event2
));
276 assertFalse("equals", event2
.equals(event1
));
278 event2
= new TmfEvent(trace2
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
279 assertFalse("equals", event1
.equals(event2
));
280 assertFalse("equals", event2
.equals(event1
));
287 public void testNonEqualRanks() {
288 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
289 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
290 assertTrue("equals", event1
.equals(event2
));
291 assertTrue("equals", event2
.equals(event1
));
293 event2
= new TmfEvent(null, 1, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
294 assertFalse("equals", event1
.equals(event2
));
295 assertFalse("equals", event2
.equals(event1
));
299 public void testNonEqualTimestamps() {
300 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
301 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
302 assertTrue("equals", event1
.equals(event2
));
303 assertTrue("equals", event2
.equals(event1
));
305 event2
= new TmfEvent(null, 0, fTimestamp2
, fSource
, fType
, fContent1
, fReference1
);
306 assertFalse("equals", event1
.equals(event2
));
307 assertFalse("equals", event2
.equals(event1
));
309 event2
= new TmfEvent(null, 0, null, fSource
, fType
, fContent1
, fReference1
);
310 assertFalse("equals", event1
.equals(event2
));
311 assertFalse("equals", event2
.equals(event1
));
315 public void testNonEqualSources() {
316 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
317 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
318 assertTrue("equals", event1
.equals(event2
));
319 assertTrue("equals", event2
.equals(event1
));
321 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
+ "x", fType
, fContent1
, fReference1
);
322 assertFalse("equals", event1
.equals(event2
));
323 assertFalse("equals", event2
.equals(event1
));
325 event2
= new TmfEvent(null, 0, fTimestamp1
, null, fType
, fContent1
, fReference1
);
326 assertFalse("equals", event1
.equals(event2
));
327 assertFalse("equals", event2
.equals(event1
));
331 public void testNonEqualTypes() {
332 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
333 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
334 assertTrue("equals", event1
.equals(event2
));
335 assertTrue("equals", event2
.equals(event1
));
337 final String typeId
= "OtherTestType";
338 final String
[] labels
= new String
[] { fLabel2
, fLabel1
};
339 final TmfEventType newType
= new TmfEventType(fContext
, typeId
, TmfEventField
.makeRoot(labels
));
341 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, newType
, fContent1
, fReference1
);
342 assertFalse("equals", event1
.equals(event2
));
343 assertFalse("equals", event2
.equals(event1
));
345 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, null, fContent1
, fReference1
);
346 assertFalse("equals", event1
.equals(event2
));
347 assertFalse("equals", event2
.equals(event1
));
351 public void testNonEqualContents() {
352 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
353 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
354 assertTrue("equals", event1
.equals(event2
));
355 assertTrue("equals", event2
.equals(event1
));
357 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent2
, fReference1
);
358 assertFalse("equals", event1
.equals(event2
));
359 assertFalse("equals", event2
.equals(event1
));
361 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, null, fReference1
);
362 assertFalse("equals", event1
.equals(event2
));
363 assertFalse("equals", event2
.equals(event1
));
367 public void testNonEqualReferences() {
368 final ITmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
369 ITmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
370 assertTrue("equals", event1
.equals(event2
));
371 assertTrue("equals", event2
.equals(event1
));
373 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference2
);
374 assertFalse("equals", event1
.equals(event2
));
375 assertFalse("equals", event2
.equals(event1
));
377 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, null);
378 assertFalse("equals", event1
.equals(event2
));
379 assertFalse("equals", event2
.equals(event1
));
382 // ------------------------------------------------------------------------
384 // ------------------------------------------------------------------------
387 public void testToString() {
388 final String expected1
= "TmfEvent [fTimestamp=" + fTimestamp1
+ ", fTrace=null, fRank=0, fSource=" + fSource
389 + ", fType=" + fType
+ ", fContent=" + fContent1
+ ", fReference=" + fReference1
+ "]";
390 assertEquals("toString", expected1
, fEvent1
.toString());
392 final String expected2
= "TmfEvent [fTimestamp=" + fTimestamp2
+ ", fTrace=null, fRank=1, fSource=" + fSource
393 + ", fType=" + fType
+ ", fContent=" + fContent2
+ ", fReference=" + fReference2
+ "]";
394 assertEquals("toString", expected2
, fEvent2
.toString());
398 * Test the .toString() with extended classes.
399 * It should print the correct class name.
402 public void testToStringExtended() {
403 class ExtendedEvent
extends TmfEvent
{
404 ExtendedEvent(ITmfEvent event
) {
408 ExtendedEvent event
= new ExtendedEvent(fEvent1
);
409 String expected
= "ExtendedEvent [fTimestamp=" + fTimestamp1
410 + ", fTrace=null, fRank=0, fSource=" + fSource
411 + ", fType=" + fType
+ ", fContent=" + fContent1
412 + ", fReference=" + fReference1
+ "]";
414 assertEquals(expected
, event
.toString());