Commit | Line | Data |
---|---|---|
d18dd09b | 1 | /******************************************************************************* |
61759503 | 2 | * Copyright (c) 2009, 2013 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 | |
75d42a16 | 11 | * Francois Chouinard - Adjusted for new Event Model |
6e1886bc | 12 | * Alexandre Montplaisir - Port to JUnit4 |
d18dd09b ASL |
13 | *******************************************************************************/ |
14 | ||
6c13869b | 15 | package org.eclipse.linuxtools.tmf.core.tests.event; |
d18dd09b | 16 | |
b742c196 | 17 | import static org.junit.Assert.assertArrayEquals; |
6e1886bc AM |
18 | import static org.junit.Assert.assertEquals; |
19 | import static org.junit.Assert.assertFalse; | |
20 | import static org.junit.Assert.assertNull; | |
21 | import static org.junit.Assert.assertSame; | |
22 | import static org.junit.Assert.assertTrue; | |
23 | import static org.junit.Assert.fail; | |
cbd4ad82 | 24 | |
b742c196 AM |
25 | import java.util.Collection; |
26 | ||
4c564a2d | 27 | import org.eclipse.linuxtools.tmf.core.event.ITmfEventField; |
6c13869b | 28 | import org.eclipse.linuxtools.tmf.core.event.TmfEventField; |
6e1886bc | 29 | import org.junit.Test; |
d18dd09b ASL |
30 | |
31 | /** | |
cbd4ad82 | 32 | * Test suite for the TmfEventField class. |
d18dd09b | 33 | */ |
cad06250 | 34 | @SuppressWarnings("javadoc") |
6e1886bc | 35 | public class TmfEventFieldTest { |
d18dd09b | 36 | |
75d42a16 FC |
37 | // ------------------------------------------------------------------------ |
38 | // Variables | |
39 | // ------------------------------------------------------------------------ | |
40 | ||
41 | private final String fFieldName1 = "Field-1"; | |
42 | private final String fFieldName2 = "Field-2"; | |
43 | ||
ea2b103b | 44 | private final Object fValue1 = "Value"; |
45 | private final Object fValue2 = Integer.valueOf(10); | |
75d42a16 | 46 | |
214cc822 | 47 | private final TmfEventField fField1 = new TmfEventField(fFieldName1, fValue1, null); |
085d898f FC |
48 | private final TmfEventField fField2 = new TmfEventField(fFieldName2, fValue2, null); |
49 | private final TmfEventField fField3 = new TmfEventField(fFieldName1, fValue2, null); | |
75d42a16 FC |
50 | |
51 | private final String fStructRootFieldName = "Root-S"; | |
52 | private final String[] fStructFieldNames = new String[] { fFieldName1, fFieldName2 }; | |
214cc822 AM |
53 | private final TmfEventField fStructTerminalField1 = new TmfEventField(fFieldName1, null, null); |
54 | private final TmfEventField fStructTerminalField2 = new TmfEventField(fFieldName2, null, null); | |
55 | private final TmfEventField fStructTerminalField3 = new TmfEventField(fFieldName1, null, null); | |
56 | private final TmfEventField fStructRootField = new TmfEventField(fStructRootFieldName, null, | |
75d42a16 FC |
57 | new ITmfEventField[] { fStructTerminalField1, fStructTerminalField2 }); |
58 | ||
59 | private final String fRootFieldName = "Root"; | |
60 | private final String[] fFieldNames = new String[] { fFieldName1, fFieldName2 }; | |
214cc822 | 61 | private final TmfEventField fRootField = new TmfEventField(fRootFieldName, null, |
75d42a16 FC |
62 | new ITmfEventField[] { fField1, fField2 }); |
63 | ||
75d42a16 FC |
64 | // ------------------------------------------------------------------------ |
65 | // Constructors | |
66 | // ------------------------------------------------------------------------ | |
67 | ||
6e1886bc | 68 | @Test |
75d42a16 FC |
69 | public void testTerminalStructConstructor() { |
70 | assertSame("getName", fFieldName1, fStructTerminalField1.getName()); | |
71 | assertNull("getValue", fStructTerminalField1.getValue()); | |
b742c196 | 72 | assertEquals("getFields", 0, fStructTerminalField1.getFields().size()); |
75d42a16 | 73 | assertNull("getField(name)", fStructTerminalField1.getField(fFieldName1)); |
b742c196 | 74 | assertEquals("getFieldNames", 0, fStructTerminalField1.getFieldNames().size()); |
75d42a16 FC |
75 | } |
76 | ||
6e1886bc | 77 | @Test |
75d42a16 FC |
78 | public void testNonTerminalStructConstructor() { |
79 | assertSame("getName", fStructRootFieldName, fStructRootField.getName()); | |
80 | assertNull("getValue", fStructRootField.getValue()); | |
b742c196 | 81 | assertEquals("getFields", 2, fStructRootField.getFields().size()); |
75d42a16 FC |
82 | assertSame("getField(name)", fStructTerminalField1, fStructRootField.getField(fFieldName1)); |
83 | assertSame("getField(name)", fStructTerminalField2, fStructRootField.getField(fFieldName2)); | |
b742c196 AM |
84 | |
85 | final Collection<String> names = fStructRootField.getFieldNames(); | |
86 | assertEquals("getFieldNames length", 2, names.size()); | |
87 | assertArrayEquals(fStructFieldNames, names.toArray(new String[names.size()])); | |
75d42a16 FC |
88 | } |
89 | ||
6e1886bc | 90 | @Test |
75d42a16 FC |
91 | public void testTerminalConstructor() { |
92 | assertSame("getName", fFieldName1, fField1.getName()); | |
93 | assertSame("getValue", fValue1, fField1.getValue()); | |
b742c196 | 94 | assertEquals("getFields", 0, fField1.getFields().size()); |
75d42a16 | 95 | assertNull("getField(name)", fField1.getField(fFieldName1)); |
b742c196 | 96 | assertEquals("getFieldNames", 0, fField1.getFieldNames().size()); |
75d42a16 FC |
97 | |
98 | assertSame("getName", fFieldName2, fField2.getName()); | |
99 | assertSame("getValue", fValue2, fField2.getValue()); | |
b742c196 | 100 | assertEquals("getFields", 0, fField2.getFields().size()); |
75d42a16 | 101 | assertNull("getField(name)", fField2.getField(fFieldName2)); |
75d42a16 FC |
102 | } |
103 | ||
6e1886bc | 104 | @Test |
75d42a16 FC |
105 | public void testNonTerminalConstructor() { |
106 | assertSame("getName", fRootFieldName, fRootField.getName()); | |
107 | assertNull("getValue", fRootField.getValue()); | |
b742c196 | 108 | assertEquals("getFields", 2, fRootField.getFields().size()); |
75d42a16 FC |
109 | assertSame("getField(name)", fField1, fRootField.getField(fFieldName1)); |
110 | assertSame("getField(name)", fField2, fRootField.getField(fFieldName2)); | |
b742c196 AM |
111 | |
112 | final Collection<String> names = fRootField.getFieldNames(); | |
113 | assertEquals("getFieldNames length", 2, names.size()); | |
114 | assertArrayEquals(fFieldNames, names.toArray(new String[names.size()])); | |
75d42a16 FC |
115 | } |
116 | ||
6e1886bc | 117 | @Test |
75d42a16 FC |
118 | public void testConstructorBadArg() { |
119 | try { | |
120 | new TmfEventField(null, fValue1, null); | |
121 | fail("Invalid (null) field name"); | |
085d898f | 122 | } catch (final IllegalArgumentException e) { |
75d42a16 FC |
123 | } |
124 | } | |
125 | ||
6e1886bc | 126 | @Test |
75d42a16 | 127 | public void testTerminalCopyConstructor() { |
085d898f | 128 | final TmfEventField copy = new TmfEventField(fField1); |
75d42a16 FC |
129 | assertSame("getName", fFieldName1, copy.getName()); |
130 | assertSame("getValue", fValue1, copy.getValue()); | |
b742c196 | 131 | assertEquals("getFields", 0, copy.getFields().size()); |
75d42a16 | 132 | assertNull("getField(name)", copy.getField(fFieldName1)); |
b742c196 | 133 | assertEquals("getFieldNames", 0, copy.getFieldNames().size()); |
75d42a16 FC |
134 | } |
135 | ||
6e1886bc | 136 | @Test |
75d42a16 FC |
137 | public void testNonTerminalCopyConstructor() { |
138 | assertSame("getName", fRootFieldName, fRootField.getName()); | |
139 | assertNull("getValue", fRootField.getValue()); | |
b742c196 | 140 | assertEquals("getFields", 2, fRootField.getFields().size()); |
75d42a16 FC |
141 | assertSame("getField(name)", fField1, fRootField.getField(fFieldName1)); |
142 | assertSame("getField(name)", fField2, fRootField.getField(fFieldName2)); | |
b742c196 AM |
143 | |
144 | final Collection<String> names = fRootField.getFieldNames(); | |
145 | assertEquals("getFieldNames length", 2, names.size()); | |
146 | assertArrayEquals(fFieldNames, names.toArray(new String[names.size()])); | |
75d42a16 FC |
147 | } |
148 | ||
6e1886bc | 149 | @Test |
75d42a16 FC |
150 | public void testCopyConstructorBadArg() { |
151 | try { | |
152 | new TmfEventField(null); | |
153 | fail("TmfEventField: null arguemnt"); | |
085d898f | 154 | } catch (final IllegalArgumentException e) { |
75d42a16 FC |
155 | } |
156 | } | |
157 | ||
b742c196 AM |
158 | /** |
159 | * Test that we correctly fail to create a field with subfields having the | |
160 | * same name. | |
161 | */ | |
162 | @Test | |
163 | public void testDuplicateFieldNames() { | |
164 | ITmfEventField[] fields = { | |
165 | new TmfEventField("samename", null, null), | |
166 | new TmfEventField("samename", null, null) | |
167 | }; | |
168 | ||
169 | try { | |
170 | new TmfEventField("field", null, fields); | |
171 | fail("TmfEventField: Duplicate field names"); | |
172 | } catch (IllegalArgumentException e) { | |
173 | /* Expected exception */ | |
174 | } | |
175 | } | |
176 | ||
75d42a16 | 177 | // ------------------------------------------------------------------------ |
75d42a16 FC |
178 | // hashCode |
179 | // ------------------------------------------------------------------------ | |
180 | ||
6e1886bc | 181 | @Test |
54a7a54c | 182 | public void testHashCode() { |
75d42a16 FC |
183 | TmfEventField copy = new TmfEventField(fField1); |
184 | assertTrue("hashCode", fField1.hashCode() == copy.hashCode()); | |
185 | assertTrue("hashCode", fField1.hashCode() != fField2.hashCode()); | |
186 | ||
187 | copy = new TmfEventField(fStructTerminalField1); | |
188 | assertTrue("hashCode", fStructTerminalField1.hashCode() == copy.hashCode()); | |
189 | assertTrue("hashCode", fStructTerminalField1.hashCode() != fStructTerminalField2.hashCode()); | |
190 | } | |
191 | ||
192 | // ------------------------------------------------------------------------ | |
193 | // equals | |
194 | // ------------------------------------------------------------------------ | |
195 | ||
6e1886bc | 196 | @Test |
54a7a54c | 197 | public void testEqualsReflexivity() { |
75d42a16 FC |
198 | assertTrue("equals", fField1.equals(fField1)); |
199 | assertTrue("equals", fField2.equals(fField2)); | |
200 | ||
201 | assertFalse("equals", fField1.equals(fField2)); | |
202 | assertFalse("equals", fField2.equals(fField1)); | |
203 | ||
204 | assertTrue("equals", fStructTerminalField1.equals(fStructTerminalField1)); | |
205 | assertTrue("equals", fStructTerminalField2.equals(fStructTerminalField2)); | |
206 | ||
207 | assertFalse("equals", fStructTerminalField1.equals(fStructTerminalField2)); | |
208 | assertFalse("equals", fStructTerminalField2.equals(fStructTerminalField1)); | |
209 | } | |
210 | ||
6e1886bc | 211 | @Test |
54a7a54c | 212 | public void testEqualsSymmetry() { |
085d898f | 213 | final TmfEventField copy0 = new TmfEventField(fField1); |
75d42a16 FC |
214 | assertTrue("equals", fField1.equals(copy0)); |
215 | assertTrue("equals", copy0.equals(fField1)); | |
085d898f FC |
216 | |
217 | final TmfEventField copy3 = new TmfEventField(fField2); | |
75d42a16 FC |
218 | assertTrue("equals", fField2.equals(copy3)); |
219 | assertTrue("equals", copy3.equals(fField2)); | |
220 | } | |
221 | ||
6e1886bc | 222 | @Test |
54a7a54c | 223 | public void testEqualsTransivity() { |
75d42a16 FC |
224 | TmfEventField copy1 = new TmfEventField(fField1); |
225 | TmfEventField copy2 = new TmfEventField(copy1); | |
226 | assertTrue("equals", fField1.equals(copy1)); | |
227 | assertTrue("equals", copy1.equals(copy2)); | |
228 | assertTrue("equals", fField1.equals(copy2)); | |
229 | ||
230 | copy1 = new TmfEventField(fField2); | |
231 | copy2 = new TmfEventField(copy1); | |
232 | assertTrue("equals", fField2.equals(copy1)); | |
233 | assertTrue("equals", copy1.equals(copy2)); | |
234 | assertTrue("equals", fField2.equals(copy2)); | |
235 | } | |
236 | ||
6e1886bc | 237 | @Test |
54a7a54c | 238 | public void testEquals() { |
75d42a16 FC |
239 | assertTrue("equals", fStructTerminalField1.equals(fStructTerminalField3)); |
240 | assertTrue("equals", fStructTerminalField3.equals(fStructTerminalField1)); | |
241 | ||
242 | assertFalse("equals", fStructTerminalField1.equals(fField3)); | |
243 | assertFalse("equals", fField3.equals(fStructTerminalField1)); | |
244 | } | |
245 | ||
6e1886bc | 246 | @Test |
54a7a54c | 247 | public void testEqualsNull() { |
39f9eadb FC |
248 | assertFalse("equals", fField1.equals(null)); |
249 | assertFalse("equals", fField2.equals(null)); | |
250 | } | |
251 | ||
6e1886bc | 252 | @Test |
54a7a54c | 253 | public void testNonEqualClasses() { |
39f9eadb FC |
254 | assertFalse("equals", fField1.equals(fStructTerminalField1)); |
255 | assertFalse("equals", fField1.equals(fValue1)); | |
256 | } | |
257 | ||
6e1886bc | 258 | @Test |
54a7a54c | 259 | public void testNonEqualValues() { |
214cc822 AM |
260 | final TmfEventField copy1 = new TmfEventField(fFieldName1, fValue1, null); |
261 | TmfEventField copy2 = new TmfEventField(fFieldName1, fValue1, null); | |
39f9eadb FC |
262 | assertTrue("equals", copy1.equals(copy2)); |
263 | assertTrue("equals", copy2.equals(copy1)); | |
264 | ||
214cc822 | 265 | copy2 = new TmfEventField(fFieldName1, fValue2, null); |
39f9eadb FC |
266 | assertFalse("equals", copy1.equals(copy2)); |
267 | assertFalse("equals", copy2.equals(copy1)); | |
268 | ||
214cc822 | 269 | copy2 = new TmfEventField(fFieldName1, null, null); |
39f9eadb FC |
270 | assertFalse("equals", copy1.equals(copy2)); |
271 | assertFalse("equals", copy2.equals(copy1)); | |
272 | } | |
273 | ||
6e1886bc | 274 | @Test |
54a7a54c | 275 | public void testNonEquals() { |
75d42a16 FC |
276 | assertFalse("equals", fField1.equals(fField2)); |
277 | assertFalse("equals", fField2.equals(fField1)); | |
278 | ||
279 | assertFalse("equals", fField1.equals(fStructTerminalField1)); | |
280 | } | |
281 | ||
75d42a16 FC |
282 | // ------------------------------------------------------------------------ |
283 | // toString | |
284 | // ------------------------------------------------------------------------ | |
285 | ||
6e1886bc | 286 | @Test |
75d42a16 | 287 | public void testToString() { |
306dc902 | 288 | final String expected1 = fFieldName1 + "=" + fValue1.toString(); |
75d42a16 FC |
289 | TmfEventField field = new TmfEventField(fFieldName1, fValue1, null); |
290 | assertEquals("toString", expected1, field.toString()); | |
291 | ||
306dc902 | 292 | final String expected2 = fFieldName1 + "=" + fValue2.toString(); |
75d42a16 FC |
293 | field = new TmfEventField(fFieldName1, fValue2, null); |
294 | assertEquals("toString", expected2, field.toString()); | |
295 | } | |
296 | ||
297 | // ------------------------------------------------------------------------ | |
298 | // makeRoot | |
299 | // ------------------------------------------------------------------------ | |
300 | ||
6e1886bc | 301 | @Test |
75d42a16 FC |
302 | public void testMakeRoot() { |
303 | ITmfEventField root = TmfEventField.makeRoot(fStructFieldNames); | |
b742c196 AM |
304 | Collection<String> names = root.getFieldNames(); |
305 | assertEquals("getFieldNames length", 2, names.size()); | |
306 | assertArrayEquals(fStructFieldNames, names.toArray(new String[names.size()])); | |
75d42a16 FC |
307 | |
308 | root = TmfEventField.makeRoot(fFieldNames); | |
309 | names = root.getFieldNames(); | |
b742c196 AM |
310 | assertEquals("getFieldNames length", 2, names.size()); |
311 | assertArrayEquals(fFieldNames, names.toArray(new String[names.size()])); | |
75d42a16 | 312 | } |
d18dd09b | 313 | } |