blob: 4a14eff57fbc1ce4bd309b33e2fc457795c3b893 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Guilliano Molaire - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.tests.analysis;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisRequirementProvider;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirementHelper;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement.ValuePriorityLevel;
import org.eclipse.tracecompass.tmf.tests.stubs.analysis.AnalysisModuleTestHelper;
import org.eclipse.tracecompass.tmf.tests.stubs.analysis.AnalysisRequirementFactory;
import org.eclipse.tracecompass.tmf.tests.stubs.analysis.AnalysisModuleTestHelper.moduleStubEnum;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Multimap;
/**
* Test suite for the {@link TmfAnalysisRequirementHelper} class
*/
public class AnalysisRequirementHelperTest {
private AnalysisModuleTestHelper fTestModuleHelper;
private AnalysisModuleTestHelper fTestModuleHelper2;
/**
* Set up analysis modules
*/
@Before
public void setUpTest() {
fTestModuleHelper = new AnalysisModuleTestHelper(moduleStubEnum.TEST);
fTestModuleHelper2 = new AnalysisModuleTestHelper(moduleStubEnum.TEST2);
}
/**
* Test suite for the
* {@link TmfAnalysisRequirementHelper#getRequirementValues(IAnalysisRequirementProvider, String)}
* method
*/
@Test
public void testGetRequirementValues() {
/* Test with a supported type */
String type = AnalysisRequirementFactory.REQUIREMENT_TYPE_1;
Set<String> values = TmfAnalysisRequirementHelper.getRequirementValues(fTestModuleHelper, type);
assertEquals(AnalysisRequirementFactory.REQUIREMENT_VALUES_1.size(), values.size());
/* Test with a type not supported */
type = AnalysisRequirementFactory.REQUIREMENT_TYPE_2;
values = TmfAnalysisRequirementHelper.getRequirementValues(fTestModuleHelper, type);
assertTrue(values.isEmpty());
}
/**
* Test suite for the
* {@link TmfAnalysisRequirementHelper#getRequirementValues(IAnalysisRequirementProvider, String, ValuePriorityLevel)}
* method
*/
@Test
public void testGetRequirementValuesWithLevel() {
/* Test with a supported type */
String type = AnalysisRequirementFactory.REQUIREMENT_TYPE_2;
Set<String> values = TmfAnalysisRequirementHelper.getRequirementValues(fTestModuleHelper2, type, ValuePriorityLevel.MANDATORY);
assertEquals(3, values.size());
/* Test with another value level */
values = TmfAnalysisRequirementHelper.getRequirementValues(fTestModuleHelper2, type, ValuePriorityLevel.OPTIONAL);
assertEquals(2, values.size());
/* Test with a type not supported */
type = AnalysisRequirementFactory.REQUIREMENT_TYPE_1;
values = TmfAnalysisRequirementHelper.getRequirementValues(fTestModuleHelper2, type, ValuePriorityLevel.MANDATORY);
assertTrue(values.isEmpty());
}
/**
* Test suite for the
* {@link TmfAnalysisRequirementHelper#getRequirementValuesMap(Iterable)}
* method
*/
@Test
public void testGetRequirementValuesMap() {
Set<IAnalysisRequirementProvider> providers = new HashSet<>();
providers.add(fTestModuleHelper2);
providers.add(fTestModuleHelper);
Multimap<String, String> valuesByType = TmfAnalysisRequirementHelper.getRequirementValuesMap(providers);
assertFalse(valuesByType.isEmpty());
/* There should be 3 types */
assertEquals(3, valuesByType.keySet().size());
Collection<String> values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_1);
assertEquals(4, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_1));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_2));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_2);
assertEquals(5, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_1));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_2));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_4));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_3);
assertEquals(3, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_4));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
}
/**
* Test suite for the
* {@link TmfAnalysisRequirementHelper#getRequirementValuesMap(Iterable, ValuePriorityLevel)}
* method
*/
@Test
public void testGetRequirementValuesMapWithLevel() {
Set<IAnalysisRequirementProvider> providers = new HashSet<>();
providers.add(fTestModuleHelper2);
providers.add(fTestModuleHelper);
/* There should be 3 optional requirements types */
Multimap<String, String> valuesByType = TmfAnalysisRequirementHelper.getRequirementValuesMap(providers, ValuePriorityLevel.OPTIONAL);
assertTrue(!valuesByType.isEmpty());
assertEquals(1, valuesByType.keySet().size());
Collection<String> values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_1);
assertTrue(values.isEmpty());
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_2);
assertEquals(2, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_2));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_4));
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_3);
assertTrue(values.isEmpty());
/* And 3 types with mandatory requirements */
valuesByType = TmfAnalysisRequirementHelper.getRequirementValuesMap(providers, ValuePriorityLevel.MANDATORY);
assertTrue(!valuesByType.isEmpty());
assertEquals(3, valuesByType.keySet().size());
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_1);
assertEquals(4, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_1));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_2));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_2);
assertEquals(3, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_1));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
values = valuesByType.get(AnalysisRequirementFactory.REQUIREMENT_TYPE_3);
assertEquals(3, values.size());
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_3));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_4));
assertTrue(values.contains(AnalysisRequirementFactory.REQUIREMENT_VALUE_5));
}
}