1 /*******************************************************************************
2 * Copyright (c) 2011, 2014 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 * Mathieu Denis <mathieu.denis@polymtl.ca> - Initial API and Implementation
11 * Bernd Hufmann - Fixed header and warnings
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
15 package org
.eclipse
.tracecompass
.tmf
.ui
.tests
.statistics
;
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
;
22 import java
.util
.List
;
24 import org
.eclipse
.jdt
.annotation
.NonNull
;
25 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
26 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
27 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.viewers
.statistics
.model
.Messages
;
28 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.viewers
.statistics
.model
.TmfBaseColumnData
;
29 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.viewers
.statistics
.model
.TmfBaseColumnDataProvider
;
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
.internal
.tmf
.ui
.viewers
.statistics
.model
.TmfBaseColumnData
.ITmfColumnPercentageProvider
;
33 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
34 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEventField
;
35 import org
.eclipse
.tracecompass
.tmf
.core
.event
.TmfEvent
;
36 import org
.eclipse
.tracecompass
.tmf
.core
.event
.TmfEventField
;
37 import org
.eclipse
.tracecompass
.tmf
.core
.event
.TmfEventType
;
38 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimestamp
;
39 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfContext
;
40 import org
.junit
.Test
;
43 * TmfBaseColumnDataProvider test cases.
46 public class TmfBaseColumnDataProviderTest
{
48 // ------------------------------------------------------------------------
50 // ------------------------------------------------------------------------
52 private static final double DELTA
= 1e-15;
54 private final static String LEVEL_COLUMN
= Messages
.TmfStatisticsView_LevelColumn
;
55 private final static String EVENTS_COUNT_COLUMN
= Messages
.TmfStatisticsView_NbEventsColumn
;
57 private TmfBaseColumnDataProvider provider
;
59 private static final String fTestName
= "ColumnDataProviderTest";
61 private final @NonNull String fTypeId1
= "Some type1";
62 private final @NonNull String fTypeId2
= "Some type2";
64 private final String fLabel0
= "label1";
65 private final String fLabel1
= "label2";
66 private final String fLabel2
= "label3";
67 private final String
[] fLabels
= new String
[] { fLabel0
, fLabel1
, fLabel2
};
69 private final TmfTimestamp fTimestamp1
= new TmfTimestamp(12345, (byte) 2);
70 private final TmfTimestamp fTimestamp2
= new TmfTimestamp(12350, (byte) 2);
71 private final TmfTimestamp fTimestamp3
= new TmfTimestamp(12355, (byte) 2);
73 private final TmfEventType fType1
= new TmfEventType(fTypeId1
, TmfEventField
.makeRoot(fLabels
));
74 private final TmfEventType fType2
= new TmfEventType(fTypeId1
, TmfEventField
.makeRoot(fLabels
));
75 private final TmfEventType fType3
= new TmfEventType(fTypeId2
, TmfEventField
.makeRoot(fLabels
));
77 private final ITmfEvent fEvent1
;
78 private final ITmfEvent fEvent2
;
79 private final ITmfEvent fEvent3
;
81 private final TmfEventField fContent1
;
82 private final TmfEventField fContent2
;
83 private final TmfEventField fContent3
;
85 private final TmfStatisticsTree fStatsData
;
87 // ------------------------------------------------------------------------
89 // ------------------------------------------------------------------------
94 public TmfBaseColumnDataProviderTest() {
95 fContent1
= new TmfEventField(ITmfEventField
.ROOT_FIELD_ID
, "Some content", null);
96 fEvent1
= new TmfEvent(null, ITmfContext
.UNKNOWN_RANK
, fTimestamp1
, fType1
, fContent1
);
98 fContent2
= new TmfEventField(ITmfEventField
.ROOT_FIELD_ID
, "Some other content", null);
99 fEvent2
= new TmfEvent(null, ITmfContext
.UNKNOWN_RANK
, fTimestamp2
, fType2
, fContent2
);
101 fContent3
= new TmfEventField(ITmfEventField
.ROOT_FIELD_ID
, "Some other different content", null);
102 fEvent3
= new TmfEvent(null, ITmfContext
.UNKNOWN_RANK
, fTimestamp3
, fType3
, fContent3
);
104 fStatsData
= new TmfStatisticsTree();
106 fStatsData
.getOrCreateNode(fTestName
, Messages
.TmfStatisticsData_EventTypes
);
108 fStatsData
.setTotal(fTestName
, true, 3);
109 fStatsData
.setTypeCount(fTestName
, fEvent1
.getName(), true, 1);
110 fStatsData
.setTypeCount(fTestName
, fEvent2
.getName(), true, 1);
111 fStatsData
.setTypeCount(fTestName
, fEvent3
.getName(), true, 1);
113 provider
= new TmfBaseColumnDataProvider();
116 // ------------------------------------------------------------------------
118 // ------------------------------------------------------------------------
121 * Method with test cases.
124 public void testGetColumnData() {
125 List
<TmfBaseColumnData
> columnsData
= provider
.getColumnData();
126 assertNotNull("getColumnData", columnsData
);
127 assertEquals("getColumnData", 4, columnsData
.size());
129 TmfStatisticsTreeNode parentNode
= fStatsData
.getNode(fTestName
);
130 TmfStatisticsTreeNode treeNode1
= fStatsData
.getNode(fTestName
, Messages
.TmfStatisticsData_EventTypes
, fEvent1
.getName());
131 TmfStatisticsTreeNode treeNode2
= fStatsData
.getNode(fTestName
, Messages
.TmfStatisticsData_EventTypes
, fEvent3
.getName());
132 ViewerComparator vComp
= null;
133 for (TmfBaseColumnData columnData
: columnsData
) {
134 assertNotNull("getColumnData", columnData
);
135 assertNotNull("getColumnData", columnData
.getHeader());
136 assertNotNull("getColumnData", columnData
.getTooltip());
138 // Testing labelProvider
139 ColumnLabelProvider labelProvider
= columnData
.getLabelProvider();
140 if (columnData
.getHeader().compareTo(LEVEL_COLUMN
) == 0) {
141 assertEquals("getColumnData", 0, labelProvider
.getText(treeNode1
).compareTo(treeNode1
.getName()));
142 } else if (columnData
.getHeader().compareTo(EVENTS_COUNT_COLUMN
) == 0) {
143 // might not work because of machine local number format
144 assertEquals("getColumnData", "1", labelProvider
.getText(treeNode1
));
147 // Testing comparator
148 vComp
= columnData
.getComparator();
149 if (columnData
.getHeader().compareTo(LEVEL_COLUMN
) == 0) {
150 assertTrue("getColumnData", vComp
.compare(null, treeNode1
, treeNode2
) < 0);
151 assertTrue("getColumnData", vComp
.compare(null, treeNode2
, treeNode1
) > 0);
152 assertTrue("getColumnData", vComp
.compare(null, treeNode1
, treeNode1
) == 0);
153 } else if (columnData
.getHeader().compareTo(EVENTS_COUNT_COLUMN
) == 0) {
154 assertTrue("getColumnData", vComp
.compare(null, treeNode1
, treeNode2
) == 0);
155 assertTrue("getColumnData", vComp
.compare(null, treeNode2
, treeNode1
) == 0);
156 assertTrue("getColumnData", vComp
.compare(null, treeNode1
, treeNode1
) == 0);
159 // Testing percentage provider
160 ITmfColumnPercentageProvider percentProvider
= columnData
.getPercentageProvider();
161 if (columnData
.getHeader().compareTo(LEVEL_COLUMN
) == 0) {
162 assertNull("getColumnData", percentProvider
);
163 } else if (columnData
.getHeader().compareTo(EVENTS_COUNT_COLUMN
) == 0) {
164 double percentage
= (double) treeNode1
.getValues().getTotal() / parentNode
.getValues().getTotal();
165 assertEquals("getColumnData", percentage
, percentProvider
.getPercentage(treeNode1
), DELTA
);