1 /*******************************************************************************
2 * Copyright (c) 2009, 2012 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 *******************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.event
;
17 import java
.io
.IOException
;
18 import java
.net
.URISyntaxException
;
21 import junit
.framework
.TestCase
;
23 import org
.eclipse
.core
.runtime
.FileLocator
;
24 import org
.eclipse
.core
.runtime
.Path
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEventField
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventField
;
29 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventType
;
30 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimestamp
;
31 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.TmfCoreTestPlugin
;
32 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
33 import org
.eclipse
.linuxtools
.tmf
.stubs
.trace
.TmfTraceStub
;
36 * <b><u>TmfEventTest</u></b>
38 * Test suite for the TmfEvent class.
40 @SuppressWarnings("nls")
41 public class TmfEventTest
extends TestCase
{
43 // ------------------------------------------------------------------------
45 // ------------------------------------------------------------------------
47 private final String fSource
= "Source";
49 private final String fContext
= TmfEventType
.DEFAULT_CONTEXT_ID
;
50 private final String fTypeId
= "TestType";
51 private final String fLabel1
= "AString";
52 private final String fLabel2
= "AnInteger";
53 private final String
[] fLabels
= new String
[] { fLabel1
, fLabel2
};
54 private final TmfEventType fType
= new TmfEventType(fContext
, fTypeId
, TmfEventField
.makeRoot(fLabels
));
56 private final Object fValue1a
= "Some string";
57 private final Object fValue1b
= Integer
.valueOf(10);
58 private final ITmfEventField fField1a
= new TmfEventField(fLabel1
, fValue1a
);
59 private final ITmfEventField fField1b
= new TmfEventField(fLabel2
, fValue1b
);
60 private final ITmfEventField
[] fFields1
= new ITmfEventField
[] { fField1a
, fField1b
};
61 private final String fRawContent1
= fField1a
.toString() + fField1b
.toString();
62 private final ITmfEventField fContent1
= new TmfEventField(fRawContent1
, fFields1
);
63 private final TmfTimestamp fTimestamp1
= new TmfTimestamp(12345, 2, 5);
64 private final String fReference1
= "Some reference";
65 private final TmfEvent fEvent1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
67 private final Object fValue2a
= "Another string";
68 private final Object fValue2b
= Integer
.valueOf(-4);
69 private final ITmfEventField fField2a
= new TmfEventField(fLabel1
, fValue2a
);
70 private final ITmfEventField fField2b
= new TmfEventField(fLabel2
, fValue2b
);
71 private final ITmfEventField
[] fFields2
= new ITmfEventField
[] { fField2a
, fField2b
};
72 private final String fRawContent2
= fField2a
.toString() + fField2b
.toString();
73 private final ITmfEventField fContent2
= new TmfEventField(fRawContent2
, fFields2
);
74 private final TmfTimestamp fTimestamp2
= new TmfTimestamp(12350, 2, 5);
75 private final String fReference2
= "Some other reference";
76 private final TmfEvent fEvent2
= new TmfEvent(null, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
78 // ------------------------------------------------------------------------
80 // ------------------------------------------------------------------------
83 * @param name the test name
85 public TmfEventTest(String name
) {
90 protected void setUp() throws Exception
{
95 protected void tearDown() throws Exception
{
99 // ------------------------------------------------------------------------
101 // ------------------------------------------------------------------------
103 private TmfTraceStub
openTrace() {
104 String DIRECTORY
= "testfiles";
105 String TEST_STREAM
= "A-Test-10K";
106 String path
= DIRECTORY
+ File
.separator
+ TEST_STREAM
;
108 TmfTraceStub trace
= null;
110 URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
111 File test
= new File(FileLocator
.toFileURL(location
).toURI());
112 trace
= new TmfTraceStub(test
.toURI().getPath(), 500, false);
113 } catch (URISyntaxException e
) {
115 } catch (IOException e
) {
121 // ------------------------------------------------------------------------
123 // ------------------------------------------------------------------------
125 public void testDefaultConstructor() {
126 ITmfEvent event
= new TmfEvent();
127 assertNull("getTrace", event
.getTrace());
128 assertEquals("getRank", -1, event
.getRank());
129 assertNull("getTimestamp", event
.getTimestamp());
130 assertNull("getSource", event
.getSource());
131 assertNull("getType", event
.getType());
132 assertNull("getContent", event
.getContent());
133 assertNull("getReference", event
.getReference());
136 public void testFullConstructor() {
137 assertNull("getTrace", fEvent1
.getTrace());
138 assertEquals("getRank", 0, fEvent1
.getRank());
139 assertEquals("getTimestamp", fTimestamp1
, fEvent1
.getTimestamp());
140 assertEquals("getSource", fSource
, fEvent1
.getSource());
141 assertEquals("getType", fType
, fEvent1
.getType());
142 assertEquals("getContent", fContent1
, fEvent1
.getContent());
143 assertEquals("getReference", fReference1
, fEvent1
.getReference());
145 assertNull("getTrace", fEvent2
.getTrace());
146 assertEquals("getRank", 1, fEvent2
.getRank());
147 assertEquals("getTimestamp", fTimestamp2
, fEvent2
.getTimestamp());
148 assertEquals("getSource", fSource
, fEvent2
.getSource());
149 assertEquals("getType", fType
, fEvent2
.getType());
150 assertEquals("getContent", fContent2
, fEvent2
.getContent());
151 assertEquals("getReference", fReference2
, fEvent2
.getReference());
154 public void testNoRankConstructor() {
155 TmfEvent event
= new TmfEvent(null, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
156 assertNull("getTrace", event
.getTrace());
157 assertEquals("getRank", -1, event
.getRank());
158 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
159 assertEquals("getSource", fSource
, event
.getSource());
160 assertEquals("getType", fType
, event
.getType());
161 assertEquals("getContent", fContent1
, event
.getContent());
162 assertEquals("getReference", fReference1
, event
.getReference());
165 public void testNoRankContentConstructor() {
166 TmfEvent event
= new TmfEvent(null, fTimestamp1
, fSource
, fType
, fReference1
);
167 assertNull("getTrace", event
.getTrace());
168 assertEquals("getRank", -1, event
.getRank());
169 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
170 assertEquals("getSource", fSource
, event
.getSource());
171 assertEquals("getType", fType
, event
.getType());
172 assertNull("getContent", event
.getContent());
173 assertEquals("getReference", fReference1
, event
.getReference());
176 public void testNoTraceRankContentConstructor() {
177 TmfEvent event
= new TmfEvent(fTimestamp1
, fSource
, fType
, fReference1
);
178 assertNull("getTrace", event
.getTrace());
179 assertEquals("getRank", -1, event
.getRank());
180 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
181 assertEquals("getSource", fSource
, event
.getSource());
182 assertEquals("getType", fType
, event
.getType());
183 assertNull("getContent", event
.getContent());
184 assertEquals("getReference", fReference1
, event
.getReference());
187 public void testConstructorWithTrace() {
188 ITmfTrace
<TmfEvent
> trace
= openTrace();
189 TmfEvent event
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
190 assertNotNull("getTrace", event
.getTrace());
191 assertEquals("getRank", 0, event
.getRank());
192 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
193 assertEquals("getSource", fSource
, event
.getSource());
194 assertEquals("getType", fType
, event
.getType());
195 assertEquals("getContent", fContent1
, event
.getContent());
196 assertEquals("getReference", fReference1
, event
.getReference());
200 public void testTmfEventCopy() {
201 TmfEvent event
= new TmfEvent(fEvent1
);
202 assertNull("getTrace", event
.getTrace());
203 assertEquals("getRank", 0, event
.getRank());
204 assertEquals("getTimestamp", fTimestamp1
, event
.getTimestamp());
205 assertEquals("getSource", fSource
, event
.getSource());
206 assertEquals("getType", fType
, event
.getType());
207 assertEquals("getContent", fContent1
, event
.getContent());
208 assertEquals("getReference", fReference1
, event
.getReference());
211 public void testEventCopy2() throws Exception
{
215 } catch (IllegalArgumentException e
) {
220 // ------------------------------------------------------------------------
222 // ------------------------------------------------------------------------
224 public void testSetSource() {
225 TmfEvent event
= new TmfEvent(fEvent1
);
226 assertEquals("setSource", fSource
, event
.getSource());
228 String source2
= "another source";
229 event
.setSource(source2
);
230 assertEquals("setContent", source2
, event
.getSource());
232 event
.setSource(null);
233 assertNull("setContent", event
.getSource());
235 event
.setSource(fSource
);
236 assertEquals("setContent", fSource
, event
.getSource());
239 public void testSetTimestamp() {
240 TmfEvent event
= new TmfEvent(fEvent1
);
241 assertEquals("setTimestamp", fTimestamp1
, event
.getTimestamp());
243 event
.setTimestamp(fTimestamp2
);
244 assertEquals("setTimestamp", fTimestamp2
, event
.getTimestamp());
246 event
.setTimestamp(null);
247 assertNull("setTimestamp", event
.getTimestamp());
249 event
.setTimestamp(fTimestamp1
);
250 assertEquals("setTimestamp", fTimestamp1
, event
.getTimestamp());
253 public void testSetType() {
254 TmfEvent event
= new TmfEvent(fEvent1
);
255 assertEquals("setType", fType
, event
.getType());
257 String typeId
= "OtherTestType";
258 String
[] labels
= new String
[] { fLabel2
, fLabel1
};
259 TmfEventType newType
= new TmfEventType(fContext
, typeId
, TmfEventField
.makeRoot(labels
));
261 event
.setType(newType
);
262 assertEquals("setType", newType
, event
.getType());
265 assertNull("setType", event
.getType());
267 event
.setType(fType
);
268 assertEquals("setType", fType
, event
.getType());
271 public void testSetContent() {
272 TmfEvent event
= new TmfEvent(fEvent1
);
273 assertEquals("setContent", fContent1
, event
.getContent());
275 event
.setContent(fContent2
);
276 assertEquals("setContent", fContent2
, event
.getContent());
278 event
.setContent(null);
279 assertNull("setContent", event
.getContent());
281 event
.setContent(fContent1
);
282 assertEquals("setContent", fContent1
, event
.getContent());
285 public void testSetReference() {
286 TmfEvent event
= new TmfEvent(fEvent1
);
287 assertEquals("setReference", fReference1
, event
.getReference());
289 event
.setReference(fReference2
);
290 assertEquals("setReference", fReference2
, event
.getReference());
292 event
.setReference(null);
293 assertNull("setReference", event
.getReference());
295 event
.setReference(fReference1
);
296 assertEquals("setReference", fReference1
, event
.getReference());
299 // ------------------------------------------------------------------------
301 // ------------------------------------------------------------------------
303 public class MyEvent
extends TmfEvent
{
305 public boolean equals(Object other
) {
306 return super.equals(other
);
309 public MyEvent
clone() {
310 return (MyEvent
) super.clone();
314 public void testClone() throws Exception
{
315 ITmfEvent clone
= fEvent1
.clone();
316 assertEquals("clone", fEvent1
, clone
);
319 public void testClone2() throws Exception
{
320 ITmfEvent event
= new MyEvent();
321 ITmfEvent clone
= event
.clone();
322 assertEquals("clone", clone
, event
);
325 // ------------------------------------------------------------------------
327 // ------------------------------------------------------------------------
329 public void testHashCode() throws Exception
{
330 TmfEvent event1
= new TmfEvent();
331 TmfEvent event2
= new TmfEvent();
333 assertTrue("hashCode", event1
.hashCode() == event2
.hashCode());
335 ITmfTrace
<TmfEvent
> trace
= openTrace();
336 event1
= new TmfEvent(trace
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
337 event2
= new TmfEvent(trace
, 1, fTimestamp2
, fSource
, fType
, fContent2
, fReference2
);
338 TmfEvent event1b
= new TmfEvent(event1
);
339 TmfEvent event2b
= new TmfEvent(event2
);
341 assertTrue("hashCode", event1
.hashCode() == event1b
.hashCode());
342 assertTrue("hashCode", event2
.hashCode() == event2b
.hashCode());
344 assertTrue("hashCode", event1
.hashCode() != event2
.hashCode());
345 assertTrue("hashCode", event2
.hashCode() != event1
.hashCode());
350 // ------------------------------------------------------------------------
352 // ------------------------------------------------------------------------
354 public void testEqualsReflexivity() throws Exception
{
355 assertTrue("equals", fEvent1
.equals(fEvent1
));
356 assertTrue("equals", fEvent2
.equals(fEvent2
));
358 assertFalse("equals", fEvent1
.equals(fEvent2
));
359 assertFalse("equals", fEvent2
.equals(fEvent1
));
362 public void testEqualsSymmetry() throws Exception
{
363 TmfEvent event1
= new TmfEvent(fEvent1
);
364 TmfEvent event2
= new TmfEvent(fEvent2
);
366 assertTrue("equals", event1
.equals(fEvent1
));
367 assertTrue("equals", fEvent1
.equals(event1
));
369 assertTrue("equals", event2
.equals(fEvent2
));
370 assertTrue("equals", fEvent2
.equals(event2
));
373 public void testEqualsTransivity() throws Exception
{
374 TmfEvent event1
= new TmfEvent(fEvent1
);
375 TmfEvent event2
= new TmfEvent(fEvent1
);
376 TmfEvent event3
= new TmfEvent(fEvent1
);
378 assertTrue("equals", event1
.equals(event2
));
379 assertTrue("equals", event2
.equals(event3
));
380 assertTrue("equals", event1
.equals(event3
));
383 public void testEqualsNull() throws Exception
{
384 assertFalse("equals", fEvent1
.equals(null));
385 assertFalse("equals", fEvent2
.equals(null));
388 public void testNonEqualClasses() throws Exception
{
389 assertFalse("equals", fEvent1
.equals(fEvent1
.getType()));
390 assertFalse("equals", fEvent1
.equals(null));
393 public void testNonEqualTraces() throws Exception
{
394 ITmfTrace
<TmfEvent
> trace1
= openTrace();
395 ITmfTrace
<TmfEvent
> trace2
= openTrace();
397 TmfEvent event1
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
398 TmfEvent event2
= new TmfEvent(trace1
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
399 assertTrue("equals", event1
.equals(event2
));
400 assertTrue("equals", event2
.equals(event1
));
402 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
403 assertFalse("equals", event1
.equals(event2
));
404 assertFalse("equals", event2
.equals(event1
));
406 event2
= new TmfEvent(trace2
, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
407 assertFalse("equals", event1
.equals(event2
));
408 assertFalse("equals", event2
.equals(event1
));
414 public void testNonEqualRanks() throws Exception
{
415 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
416 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
417 assertTrue("equals", event1
.equals(event2
));
418 assertTrue("equals", event2
.equals(event1
));
420 event2
= new TmfEvent(null, 1, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
421 assertFalse("equals", event1
.equals(event2
));
422 assertFalse("equals", event2
.equals(event1
));
425 public void testNonEqualTimestamps() throws Exception
{
426 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
427 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
428 assertTrue("equals", event1
.equals(event2
));
429 assertTrue("equals", event2
.equals(event1
));
431 event2
= new TmfEvent(null, 0, fTimestamp2
, fSource
, fType
, fContent1
, fReference1
);
432 assertFalse("equals", event1
.equals(event2
));
433 assertFalse("equals", event2
.equals(event1
));
435 event2
= new TmfEvent(null, 0, null, fSource
, fType
, fContent1
, fReference1
);
436 assertFalse("equals", event1
.equals(event2
));
437 assertFalse("equals", event2
.equals(event1
));
440 public void testNonEqualSources() throws Exception
{
441 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
442 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
443 assertTrue("equals", event1
.equals(event2
));
444 assertTrue("equals", event2
.equals(event1
));
446 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
+ "x", fType
, fContent1
, fReference1
);
447 assertFalse("equals", event1
.equals(event2
));
448 assertFalse("equals", event2
.equals(event1
));
450 event2
= new TmfEvent(null, 0, fTimestamp1
, null, fType
, fContent1
, fReference1
);
451 assertFalse("equals", event1
.equals(event2
));
452 assertFalse("equals", event2
.equals(event1
));
455 public void testNonEqualTypes() throws Exception
{
456 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
457 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
458 assertTrue("equals", event1
.equals(event2
));
459 assertTrue("equals", event2
.equals(event1
));
461 String typeId
= "OtherTestType";
462 String
[] labels
= new String
[] { fLabel2
, fLabel1
};
463 TmfEventType newType
= new TmfEventType(fContext
, typeId
, TmfEventField
.makeRoot(labels
));
465 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, newType
, fContent1
, fReference1
);
466 assertFalse("equals", event1
.equals(event2
));
467 assertFalse("equals", event2
.equals(event1
));
469 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, null, fContent1
, fReference1
);
470 assertFalse("equals", event1
.equals(event2
));
471 assertFalse("equals", event2
.equals(event1
));
474 public void testNonEqualContents() throws Exception
{
475 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
476 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
477 assertTrue("equals", event1
.equals(event2
));
478 assertTrue("equals", event2
.equals(event1
));
480 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent2
, fReference1
);
481 assertFalse("equals", event1
.equals(event2
));
482 assertFalse("equals", event2
.equals(event1
));
484 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, null, fReference1
);
485 assertFalse("equals", event1
.equals(event2
));
486 assertFalse("equals", event2
.equals(event1
));
489 public void testNonEqualReferences() throws Exception
{
490 TmfEvent event1
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
491 TmfEvent event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference1
);
492 assertTrue("equals", event1
.equals(event2
));
493 assertTrue("equals", event2
.equals(event1
));
495 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, fReference2
);
496 assertFalse("equals", event1
.equals(event2
));
497 assertFalse("equals", event2
.equals(event1
));
499 event2
= new TmfEvent(null, 0, fTimestamp1
, fSource
, fType
, fContent1
, null);
500 assertFalse("equals", event1
.equals(event2
));
501 assertFalse("equals", event2
.equals(event1
));
504 // ------------------------------------------------------------------------
506 // ------------------------------------------------------------------------
508 public void testToString() {
509 String expected1
= "TmfEvent [fTimestamp=" + fTimestamp1
+ ", fTrace=null, fRank=0, fSource=" + fSource
510 + ", fType=" + fType
+ ", fContent=" + fContent1
+ ", fReference=" + fReference1
+ "]";
511 assertEquals("toString", expected1
, fEvent1
.toString());
513 String expected2
= "TmfEvent [fTimestamp=" + fTimestamp2
+ ", fTrace=null, fRank=1, fSource=" + fSource
514 + ", fType=" + fType
+ ", fContent=" + fContent2
+ ", fReference=" + fReference2
+ "]";
515 assertEquals("toString", expected2
, fEvent2
.toString());