a1245df779b03a38a6033e866b0ee05d0ff07878
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / tracecompass / tmf / core / tests / event / TmfEventTest.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2014 Ericsson
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
11 * Francois Chouinard - Adjusted for new Event Model
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
14
15 package org.eclipse.tracecompass.tmf.core.tests.event;
16
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
23 import org.eclipse.jdt.annotation.NonNull;
24 import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
25 import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
26 import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
27 import org.eclipse.tracecompass.tmf.core.event.TmfEventField;
28 import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
29 import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace;
30 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
31 import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
32 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
33 import org.junit.After;
34 import org.junit.Test;
35
36 /**
37 * Test suite for the TmfEvent class.
38 */
39 @SuppressWarnings("javadoc")
40 public class TmfEventTest {
41
42 /** A trace to associate events with */
43 private static final TmfTestTrace STUB_TRACE = TmfTestTrace.A_TEST_10K;
44
45 // ------------------------------------------------------------------------
46 // Variables
47 // ------------------------------------------------------------------------
48
49 private final @NonNull ITmfTrace fTrace = STUB_TRACE.getTrace();
50
51 private final String fTypeId = "TestType";
52 private final @NonNull String fLabel1 = "AString";
53 private final @NonNull String fLabel2 = "AnInteger";
54 private final String[] fLabels = new String[] { fLabel1, fLabel2 };
55 private final TmfEventType fType = new TmfEventType(fTypeId, TmfEventField.makeRoot(fLabels));
56
57 private final Object fValue1a = "Some string";
58 private final Object fValue1b = Integer.valueOf(10);
59 private final ITmfEventField fField1a = new TmfEventField(fLabel1, fValue1a, null);
60 private final ITmfEventField fField1b = new TmfEventField(fLabel2, fValue1b, null);
61 private final ITmfEventField[] fFields1 = new ITmfEventField[] { fField1a, fField1b };
62 private final @NonNull String fRawContent1 = fField1a.toString() + fField1b.toString();
63 private final ITmfEventField fContent1 = new TmfEventField(fRawContent1, null, fFields1);
64 private final TmfTimestamp fTimestamp1 = new TmfTimestamp(12345, 2);
65 private final @NonNull ITmfEvent fEvent1 = new TmfEvent(fTrace, 0, fTimestamp1, fType, fContent1);
66
67 private final Object fValue2a = "Another string";
68 private final Object fValue2b = Integer.valueOf(-4);
69 private final ITmfEventField fField2a = new TmfEventField(fLabel1, fValue2a, null);
70 private final ITmfEventField fField2b = new TmfEventField(fLabel2, fValue2b, null);
71 private final ITmfEventField[] fFields2 = new ITmfEventField[] { fField2a, fField2b };
72 private final @NonNull String fRawContent2 = fField2a.toString() + fField2b.toString();
73 private final ITmfEventField fContent2 = new TmfEventField(fRawContent2, null, fFields2);
74 private final TmfTimestamp fTimestamp2 = new TmfTimestamp(12350, 2);
75 private final @NonNull ITmfEvent fEvent2 = new TmfEvent(fTrace, 1, fTimestamp2, fType, fContent2);
76
77 // ------------------------------------------------------------------------
78 // Helper functions
79 // ------------------------------------------------------------------------
80
81 @After
82 public void disposeTrace() {
83 fTrace.dispose();
84 }
85
86 // ------------------------------------------------------------------------
87 // Constructors
88 // ------------------------------------------------------------------------
89
90 @Test
91 public void testDefaultConstructor() {
92 final ITmfEvent event = new TmfEvent(fTrace, ITmfContext.UNKNOWN_RANK, null, null, null);
93 assertNotNull("getTrace", event.getTrace());
94 assertEquals("getRank", ITmfContext.UNKNOWN_RANK, event.getRank());
95 assertEquals("getTimestamp", TmfTimestamp.ZERO, event.getTimestamp());
96 assertNull("getType", event.getType());
97 assertNull("getContent", event.getContent());
98 }
99
100 @Test
101 public void testFullConstructor() {
102 assertNotNull("getTrace", fEvent1.getTrace());
103 assertEquals("getRank", 0, fEvent1.getRank());
104 assertEquals("getTimestamp", fTimestamp1, fEvent1.getTimestamp());
105 assertEquals("getType", fType, fEvent1.getType());
106 assertEquals("getContent", fContent1, fEvent1.getContent());
107
108 assertNotNull("getTrace", fEvent2.getTrace());
109 assertEquals("getRank", 1, fEvent2.getRank());
110 assertEquals("getTimestamp", fTimestamp2, fEvent2.getTimestamp());
111 assertEquals("getType", fType, fEvent2.getType());
112 assertEquals("getContent", fContent2, fEvent2.getContent());
113 }
114
115 @Test
116 public void testNoRankConstructor() {
117 final ITmfEvent event = new TmfEvent(fTrace, ITmfContext.UNKNOWN_RANK, fTimestamp1, fType, fContent1);
118 assertNotNull("getTrace", event.getTrace());
119 assertEquals("getRank", ITmfContext.UNKNOWN_RANK, event.getRank());
120 assertEquals("getTimestamp", fTimestamp1, event.getTimestamp());
121 assertEquals("getType", fType, event.getType());
122 assertEquals("getContent", fContent1, event.getContent());
123 }
124
125 @Test
126 public void testConstructorWithTrace() {
127 final ITmfTrace trace = fTrace;
128 final ITmfEvent event = new TmfEvent(trace, 0, fTimestamp1, fType, fContent1);
129 assertNotNull("getTrace", event.getTrace());
130 assertEquals("getRank", 0, event.getRank());
131 assertEquals("getTimestamp", fTimestamp1, event.getTimestamp());
132 assertEquals("getType", fType, event.getType());
133 assertEquals("getContent", fContent1, event.getContent());
134 trace.dispose();
135 }
136
137 @Test
138 public void testTmfEventCopy() {
139 final ITmfEvent event = new TmfEvent(fEvent1);
140 assertNotNull("getTrace", event.getTrace());
141 assertEquals("getRank", 0, event.getRank());
142 assertEquals("getTimestamp", fTimestamp1, event.getTimestamp());
143 assertEquals("getType", fType, event.getType());
144 assertEquals("getContent", fContent1, event.getContent());
145 }
146
147 // ------------------------------------------------------------------------
148 // hashCode
149 // ------------------------------------------------------------------------
150
151 @Test
152 public void testHashCode() {
153 ITmfEvent event1 = new TmfEvent(fTrace, ITmfContext.UNKNOWN_RANK, null, null, null);
154 ITmfEvent event2 = new TmfEvent(fTrace, ITmfContext.UNKNOWN_RANK, null, null, null);
155
156 assertTrue("hashCode", event1.hashCode() == event2.hashCode());
157
158 final ITmfTrace trace = fTrace;
159 event1 = new TmfEvent(trace, 0, fTimestamp1, fType, fContent1);
160 event2 = new TmfEvent(trace, 1, fTimestamp2, fType, fContent2);
161 final ITmfEvent event1b = new TmfEvent(event1);
162 final ITmfEvent event2b = new TmfEvent(event2);
163
164 assertTrue("hashCode", event1.hashCode() == event1b.hashCode());
165 assertTrue("hashCode", event2.hashCode() == event2b.hashCode());
166
167 assertTrue("hashCode", event1.hashCode() != event2.hashCode());
168 assertTrue("hashCode", event2.hashCode() != event1.hashCode());
169
170 trace.dispose();
171 }
172
173 // ------------------------------------------------------------------------
174 // equals
175 // ------------------------------------------------------------------------
176
177 @Test
178 public void testEqualsReflexivity() {
179 assertTrue("equals", fEvent1.equals(fEvent1));
180 assertTrue("equals", fEvent2.equals(fEvent2));
181
182 assertFalse("equals", fEvent1.equals(fEvent2));
183 assertFalse("equals", fEvent2.equals(fEvent1));
184 }
185
186 @Test
187 public void testEqualsSymmetry() {
188 final ITmfEvent event1 = new TmfEvent(fEvent1);
189 final ITmfEvent event2 = new TmfEvent(fEvent2);
190
191 assertTrue("equals", event1.equals(fEvent1));
192 assertTrue("equals", fEvent1.equals(event1));
193
194 assertTrue("equals", event2.equals(fEvent2));
195 assertTrue("equals", fEvent2.equals(event2));
196 }
197
198 @Test
199 public void testEqualsTransivity() {
200 final ITmfEvent event1 = new TmfEvent(fEvent1);
201 final ITmfEvent event2 = new TmfEvent(fEvent1);
202 final ITmfEvent event3 = new TmfEvent(fEvent1);
203
204 assertTrue("equals", event1.equals(event2));
205 assertTrue("equals", event2.equals(event3));
206 assertTrue("equals", event1.equals(event3));
207 }
208
209 @Test
210 public void testEqualsNull() {
211 assertFalse("equals", fEvent1.equals(null));
212 assertFalse("equals", fEvent2.equals(null));
213 }
214
215 @Test
216 public void testNonEqualClasses() {
217 assertFalse("equals", fEvent1.equals(fEvent1.getType()));
218 assertFalse("equals", fEvent1.equals(null));
219 }
220
221 @Test
222 public void testNonEqualTraces() {
223 final ITmfTrace trace1 = fTrace;
224 final ITmfTrace trace2 = STUB_TRACE.getTrace();
225
226 final ITmfEvent event1 = new TmfEvent(trace1, 0, fTimestamp1, fType, fContent1);
227 ITmfEvent event2 = new TmfEvent(trace1, 0, fTimestamp1, fType, fContent1);
228 assertTrue("equals", event1.equals(event2));
229 assertTrue("equals", event2.equals(event1));
230
231 event2 = new TmfEvent(trace2, 0, fTimestamp1, fType, fContent1);
232 assertFalse("equals", event1.equals(event2));
233 assertFalse("equals", event2.equals(event1));
234
235 trace2.dispose();
236 }
237
238 @Test
239 public void testNonEqualRanks() {
240 final ITmfEvent event1 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
241 ITmfEvent event2 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
242 assertTrue("equals", event1.equals(event2));
243 assertTrue("equals", event2.equals(event1));
244
245 event2 = new TmfEvent(null, 1, fTimestamp1, fType, fContent1);
246 assertFalse("equals", event1.equals(event2));
247 assertFalse("equals", event2.equals(event1));
248 }
249
250 @Test
251 public void testNonEqualTimestamps() {
252 final ITmfEvent event1 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
253 ITmfEvent event2 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
254 assertTrue("equals", event1.equals(event2));
255 assertTrue("equals", event2.equals(event1));
256
257 event2 = new TmfEvent(null, 0, fTimestamp2, fType, fContent1);
258 assertFalse("equals", event1.equals(event2));
259 assertFalse("equals", event2.equals(event1));
260
261 event2 = new TmfEvent(null, 0, null, fType, fContent1);
262 assertFalse("equals", event1.equals(event2));
263 assertFalse("equals", event2.equals(event1));
264 }
265
266 @Test
267 public void testNonEqualTypes() {
268 final ITmfEvent event1 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
269 ITmfEvent event2 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
270 assertTrue("equals", event1.equals(event2));
271 assertTrue("equals", event2.equals(event1));
272
273 final String typeId = "OtherTestType";
274 final String[] labels = new String[] { fLabel2, fLabel1 };
275 final TmfEventType newType = new TmfEventType(typeId, TmfEventField.makeRoot(labels));
276
277 event2 = new TmfEvent(null, 0, fTimestamp1, newType, fContent1);
278 assertFalse("equals", event1.equals(event2));
279 assertFalse("equals", event2.equals(event1));
280
281 event2 = new TmfEvent(null, 0, fTimestamp1, null, fContent1);
282 assertFalse("equals", event1.equals(event2));
283 assertFalse("equals", event2.equals(event1));
284 }
285
286 @Test
287 public void testNonEqualContents() {
288 final ITmfEvent event1 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
289 ITmfEvent event2 = new TmfEvent(null, 0, fTimestamp1, fType, fContent1);
290 assertTrue("equals", event1.equals(event2));
291 assertTrue("equals", event2.equals(event1));
292
293 event2 = new TmfEvent(null, 0, fTimestamp1, fType, fContent2);
294 assertFalse("equals", event1.equals(event2));
295 assertFalse("equals", event2.equals(event1));
296
297 event2 = new TmfEvent(null, 0, fTimestamp1, fType, null);
298 assertFalse("equals", event1.equals(event2));
299 assertFalse("equals", event2.equals(event1));
300 }
301
302 // ------------------------------------------------------------------------
303 // toString
304 // ------------------------------------------------------------------------
305
306 @Test
307 public void testToString() {
308 final String expected1 = "TmfEvent [fTimestamp=" + fTimestamp1 + ", fTrace=" + fTrace +
309 ", fRank=0, fType=" + fType + ", fContent=" + fContent1 + "]";
310 assertEquals("toString", expected1, fEvent1.toString());
311
312 final String expected2 = "TmfEvent [fTimestamp=" + fTimestamp2 + ", fTrace=" + fTrace +
313 ", fRank=1, fType=" + fType + ", fContent=" + fContent2 + "]";
314 assertEquals("toString", expected2, fEvent2.toString());
315 }
316
317 /**
318 * Test the .toString() with extended classes.
319 * It should print the correct class name.
320 */
321 @Test
322 public void testToStringExtended() {
323 class ExtendedEvent extends TmfEvent {
324 ExtendedEvent(@NonNull ITmfEvent event) {
325 super(event);
326 }
327 }
328 ExtendedEvent event = new ExtendedEvent(fEvent1);
329 String expected = "ExtendedEvent [fTimestamp=" + fTimestamp1
330 + ", fTrace=" + fTrace + ", fRank=0"
331 + ", fType=" + fType + ", fContent=" + fContent1 + "]";
332
333 assertEquals(expected, event.toString());
334 }
335
336 }
This page took 0.04165 seconds and 4 git commands to generate.