1 /*******************************************************************************
2 * Copyright (c) 2014 École Polytechnique de Montréal
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 * Guilliano Molaire - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.core
.tests
.analysis
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertFalse
;
17 import static org
.junit
.Assert
.assertTrue
;
19 import java
.util
.Collection
;
20 import java
.util
.HashSet
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.IAnalysisRequirementProvider
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.TmfAnalysisRequirementHelper
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.TmfAnalysisRequirement
.ValuePriorityLevel
;
26 import org
.eclipse
.tracecompass
.tmf
.tests
.stubs
.analysis
.AnalysisModuleTestHelper
;
27 import org
.eclipse
.tracecompass
.tmf
.tests
.stubs
.analysis
.AnalysisRequirementFactory
;
28 import org
.eclipse
.tracecompass
.tmf
.tests
.stubs
.analysis
.AnalysisModuleTestHelper
.moduleStubEnum
;
29 import org
.junit
.Before
;
30 import org
.junit
.Test
;
32 import com
.google
.common
.collect
.Multimap
;
35 * Test suite for the {@link TmfAnalysisRequirementHelper} class
37 public class AnalysisRequirementHelperTest
{
39 private AnalysisModuleTestHelper fTestModuleHelper
;
40 private AnalysisModuleTestHelper fTestModuleHelper2
;
43 * Set up analysis modules
46 public void setUpTest() {
47 fTestModuleHelper
= new AnalysisModuleTestHelper(moduleStubEnum
.TEST
);
48 fTestModuleHelper2
= new AnalysisModuleTestHelper(moduleStubEnum
.TEST2
);
53 * {@link TmfAnalysisRequirementHelper#getRequirementValues(IAnalysisRequirementProvider, String)}
57 public void testGetRequirementValues() {
58 /* Test with a supported type */
59 String type
= AnalysisRequirementFactory
.REQUIREMENT_TYPE_1
;
60 Set
<String
> values
= TmfAnalysisRequirementHelper
.getRequirementValues(fTestModuleHelper
, type
);
61 assertEquals(AnalysisRequirementFactory
.REQUIREMENT_VALUES_1
.size(), values
.size());
63 /* Test with a type not supported */
64 type
= AnalysisRequirementFactory
.REQUIREMENT_TYPE_2
;
65 values
= TmfAnalysisRequirementHelper
.getRequirementValues(fTestModuleHelper
, type
);
66 assertTrue(values
.isEmpty());
71 * {@link TmfAnalysisRequirementHelper#getRequirementValues(IAnalysisRequirementProvider, String, ValuePriorityLevel)}
75 public void testGetRequirementValuesWithLevel() {
76 /* Test with a supported type */
77 String type
= AnalysisRequirementFactory
.REQUIREMENT_TYPE_2
;
78 Set
<String
> values
= TmfAnalysisRequirementHelper
.getRequirementValues(fTestModuleHelper2
, type
, ValuePriorityLevel
.MANDATORY
);
79 assertEquals(3, values
.size());
81 /* Test with another value level */
82 values
= TmfAnalysisRequirementHelper
.getRequirementValues(fTestModuleHelper2
, type
, ValuePriorityLevel
.OPTIONAL
);
83 assertEquals(2, values
.size());
85 /* Test with a type not supported */
86 type
= AnalysisRequirementFactory
.REQUIREMENT_TYPE_1
;
87 values
= TmfAnalysisRequirementHelper
.getRequirementValues(fTestModuleHelper2
, type
, ValuePriorityLevel
.MANDATORY
);
88 assertTrue(values
.isEmpty());
93 * {@link TmfAnalysisRequirementHelper#getRequirementValuesMap(Iterable)}
97 public void testGetRequirementValuesMap() {
98 Set
<IAnalysisRequirementProvider
> providers
= new HashSet
<>();
99 providers
.add(fTestModuleHelper2
);
100 providers
.add(fTestModuleHelper
);
102 Multimap
<String
, String
> valuesByType
= TmfAnalysisRequirementHelper
.getRequirementValuesMap(providers
);
103 assertFalse(valuesByType
.isEmpty());
105 /* There should be 3 types */
106 assertEquals(3, valuesByType
.keySet().size());
108 Collection
<String
> values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_1
);
109 assertEquals(4, values
.size());
110 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_1
));
111 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_2
));
112 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
113 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));
115 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_2
);
116 assertEquals(5, values
.size());
117 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_1
));
118 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_2
));
119 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
120 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_4
));
121 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));
123 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_3
);
124 assertEquals(3, values
.size());
125 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
126 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_4
));
127 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));
132 * {@link TmfAnalysisRequirementHelper#getRequirementValuesMap(Iterable, ValuePriorityLevel)}
136 public void testGetRequirementValuesMapWithLevel() {
137 Set
<IAnalysisRequirementProvider
> providers
= new HashSet
<>();
138 providers
.add(fTestModuleHelper2
);
139 providers
.add(fTestModuleHelper
);
141 /* There should be 3 optional requirements types */
142 Multimap
<String
, String
> valuesByType
= TmfAnalysisRequirementHelper
.getRequirementValuesMap(providers
, ValuePriorityLevel
.OPTIONAL
);
143 assertTrue(!valuesByType
.isEmpty());
144 assertEquals(1, valuesByType
.keySet().size());
146 Collection
<String
> values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_1
);
147 assertTrue(values
.isEmpty());
149 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_2
);
150 assertEquals(2, values
.size());
151 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_2
));
152 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_4
));
154 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_3
);
155 assertTrue(values
.isEmpty());
157 /* And 3 types with mandatory requirements */
158 valuesByType
= TmfAnalysisRequirementHelper
.getRequirementValuesMap(providers
, ValuePriorityLevel
.MANDATORY
);
159 assertTrue(!valuesByType
.isEmpty());
160 assertEquals(3, valuesByType
.keySet().size());
162 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_1
);
163 assertEquals(4, values
.size());
164 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_1
));
165 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_2
));
166 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
167 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));
169 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_2
);
170 assertEquals(3, values
.size());
171 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_1
));
172 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
173 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));
175 values
= valuesByType
.get(AnalysisRequirementFactory
.REQUIREMENT_TYPE_3
);
176 assertEquals(3, values
.size());
177 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_3
));
178 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_4
));
179 assertTrue(values
.contains(AnalysisRequirementFactory
.REQUIREMENT_VALUE_5
));