Fix some null warnings
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui.tests / src / org / eclipse / tracecompass / tmf / ui / tests / statistics / TmfBaseStatisticsDataTest.java
1 /*******************************************************************************
2 * Copyright (c) 2011, 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 * Mathieu Denis <mathieu.denis@polymtl.ca> - Initial design and implementation
11 * Bernd Hufmann - Fixed warnings
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
14
15 package org.eclipse.tracecompass.tmf.ui.tests.statistics;
16
17 import static org.junit.Assert.assertEquals;
18 import static org.junit.Assert.assertNotNull;
19 import static org.junit.Assert.assertNull;
20 import static org.junit.Assert.assertTrue;
21 import static org.junit.Assert.fail;
22
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.Iterator;
26 import java.util.Vector;
27
28 import org.eclipse.jdt.annotation.NonNull;
29 import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.Messages;
30 import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTree;
31 import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeNode;
32 import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
33 import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
34 import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
35 import org.eclipse.tracecompass.tmf.core.event.TmfEventField;
36 import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
37 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
38 import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
39 import org.junit.Test;
40
41 /**
42 * TmfBaseStatistics Test Cases.
43 */
44 public class TmfBaseStatisticsDataTest {
45
46 // ------------------------------------------------------------------------
47 // Fields
48 // ------------------------------------------------------------------------
49
50 private static final String fTestName = "StatisticsDataTest";
51
52 private final @NonNull String fTypeId1 = "Some type1";
53 private final @NonNull String fTypeId2 = "Some type2";
54
55 private final String fLabel0 = "label1";
56 private final String fLabel1 = "label2";
57 private final String fLabel2 = "label3";
58 private final String[] fLabels = new String[] { fLabel0, fLabel1, fLabel2 };
59
60 private final TmfTimestamp fTimestamp1 = new TmfTimestamp(12345, (byte) 2);
61 private final TmfTimestamp fTimestamp2 = new TmfTimestamp(12350, (byte) 2);
62 private final TmfTimestamp fTimestamp3 = new TmfTimestamp(12355, (byte) 2);
63
64 private final TmfEventType fType1 = new TmfEventType(fTypeId1, TmfEventField.makeRoot(fLabels));
65 private final TmfEventType fType2 = new TmfEventType(fTypeId1, TmfEventField.makeRoot(fLabels));
66 private final TmfEventType fType3 = new TmfEventType(fTypeId2, TmfEventField.makeRoot(fLabels));
67
68 private final ITmfEvent fEvent1;
69 private final ITmfEvent fEvent2;
70 private final ITmfEvent fEvent3;
71
72 private final TmfEventField fContent1;
73 private final TmfEventField fContent2;
74 private final TmfEventField fContent3;
75
76 private final TmfStatisticsTree fStatsTree;
77
78 // ------------------------------------------------------------------------
79 // Housekeeping
80 // ------------------------------------------------------------------------
81
82 /**
83 * Constructor
84 */
85 public TmfBaseStatisticsDataTest() {
86 fContent1 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some content", null);
87 fEvent1 = new TmfEvent(null, ITmfContext.UNKNOWN_RANK, fTimestamp1, fType1, fContent1);
88
89 fContent2 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some other content", null);
90 fEvent2 = new TmfEvent(null, ITmfContext.UNKNOWN_RANK, fTimestamp2, fType2, fContent2);
91
92 fContent3 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some other different content", null);
93 fEvent3 = new TmfEvent(null, ITmfContext.UNKNOWN_RANK, fTimestamp3, fType3, fContent3);
94
95 fStatsTree = new TmfStatisticsTree();
96
97 fStatsTree.setTotal(fTestName, true, 3);
98 fStatsTree.setTypeCount(fTestName, fEvent1.getType().getName(), true, 1);
99 fStatsTree.setTypeCount(fTestName, fEvent2.getType().getName(), true, 1);
100 fStatsTree.setTypeCount(fTestName, fEvent3.getType().getName(), true, 1);
101 }
102
103 // ------------------------------------------------------------------------
104 // Test methods
105 // ------------------------------------------------------------------------
106
107 /**
108 * Test getting of children.
109 */
110 @Test
111 public void testGetChildren() {
112 // Getting children of the ROOT
113 Collection<TmfStatisticsTreeNode> childrenTreeNode = fStatsTree.getRootNode().getChildren();
114 assertEquals("getChildren", 1, childrenTreeNode.size());
115 TmfStatisticsTreeNode treeNode = childrenTreeNode.iterator().next();
116 assertEquals("getChildren", fTestName, treeNode.getName());
117
118 // Getting children of the trace
119 childrenTreeNode = fStatsTree.getNode(fTestName).getChildren();
120 assertEquals("getChildren", 1, childrenTreeNode.size());
121 treeNode = childrenTreeNode.iterator().next();
122 assertEquals("getChildren", Messages.TmfStatisticsData_EventTypes, treeNode.getName());
123
124 Vector<String> keyExpected = new Vector<>();
125 keyExpected.add(fEvent1.getName());
126 keyExpected.add(fEvent3.getName());
127 // Getting children of a category
128 childrenTreeNode = treeNode.getChildren();
129 assertEquals("getChildren", 2, childrenTreeNode.size());
130
131 Iterator<TmfStatisticsTreeNode> iterChild = childrenTreeNode.iterator();
132 TmfStatisticsTreeNode temp;
133 while (iterChild.hasNext()) {
134 temp = iterChild.next();
135 assertEquals(0, temp.getChildren().size());
136 if (keyExpected.contains(temp.getName())) {
137 keyExpected.removeElement(temp.getName());
138 } else {
139 fail();
140 }
141 }
142
143 // Get children of a specific event type
144 childrenTreeNode = childrenTreeNode.iterator().next().getChildren();
145 assertEquals("getChildren", 0, childrenTreeNode.size());
146 }
147
148 /**
149 * Test registering of events.
150 */
151 @Test
152 public void testRegisterEvent() {
153 TmfStatisticsTreeNode trace = fStatsTree.getNode(fTestName);
154 assertEquals("registerEvent", 3, trace.getValues().getTotal());
155
156 Collection<TmfStatisticsTreeNode> childrenTreeNode = fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getChildren();
157 for (TmfStatisticsTreeNode child : childrenTreeNode) {
158 if (child.getName().compareTo(fEvent1.getType().getName()) == 0) {
159 assertEquals("registerEvent", 1, child.getValues().getTotal());
160 } else if (child.getName().compareTo(fEvent3.getType().getName()) == 0) {
161 assertEquals("registerEvent", 1, child.getValues().getTotal());
162 }
163 }
164 }
165
166 /**
167 * Test getter.
168 */
169 @Test
170 public void testGet() {
171 TmfStatisticsTreeNode traceRoot = fStatsTree.getNode(fTestName);
172 assertNotNull("get", traceRoot);
173 assertEquals("get", 0, traceRoot.getPath()[0].compareTo(fTestName));
174 assertEquals("get", 3, traceRoot.getValues().getTotal());
175 assertEquals("get", 1, traceRoot.getNbChildren());
176 }
177
178 /**
179 * Test getting or creating of node entries.
180 */
181 @Test
182 public void testGetOrCreate() {
183 String[] newEventType = new String[] { fTestName, Messages.TmfStatisticsData_EventTypes, "Fancy Type" };
184 TmfStatisticsTreeNode newEventTypeNode;
185
186 // newEventType is not in the tree
187 newEventTypeNode = fStatsTree.getNode(newEventType);
188 assertNull(newEventTypeNode);
189
190 newEventTypeNode = fStatsTree.getOrCreateNode(newEventType);
191 assertNotNull(newEventTypeNode);
192 assertTrue(Arrays.equals(newEventType, newEventTypeNode.getPath()));
193
194 // newEventType is in the tree
195 newEventTypeNode.reset();
196 newEventTypeNode = fStatsTree.getNode(newEventType);
197 assertNotNull(newEventTypeNode);
198
199 newEventTypeNode = fStatsTree.getOrCreateNode(newEventType);
200 assertNotNull(newEventTypeNode);
201 assertTrue(Arrays.equals(newEventType, newEventTypeNode.getPath()));
202 }
203
204 /**
205 * Test getting of parent node.
206 */
207 @Test
208 public void testGetParent() {
209 TmfStatisticsTreeNode parentNode = fStatsTree.getRootNode().getParent();
210 assertNull(parentNode);
211
212 parentNode = fStatsTree.getNode(fTestName).getParent();
213 assertNotNull(parentNode);
214 assertEquals(parentNode.getPath().toString(), fStatsTree.getRootNode().getPath().toString());
215
216 parentNode = fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getParent();
217 assertNotNull(parentNode);
218 assertEquals(parentNode.getPath().toString(), fStatsTree.getNode(fTestName).getPath().toString());
219 }
220
221 /**
222 * Test reset method
223 */
224 @Test
225 public void testReset() {
226 fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).reset();
227
228 assertEquals(0, fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getChildren().size());
229 assertNull(fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes, fType1.getName()));
230 assertNull(fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes, fType3.getName()));
231
232 fStatsTree.getNode(fTestName).reset();
233 assertEquals(0, fStatsTree.getNode(fTestName).getChildren().size());
234 }
235 }
This page took 0.038315 seconds and 6 git commands to generate.