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