/********************************************************************************* | |
* Copyright (c) 2015-2019 Robert Bosch GmbH and others. | |
* | |
* This program and the accompanying materials are made | |
* available under the terms of the Eclipse Public License 2.0 | |
* which is available at https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Robert Bosch GmbH - initial API and implementation | |
******************************************************************************** | |
*/ | |
package org.eclipse.app4mc.amalthea.converters081.tests; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertTrue; | |
import java.util.Arrays; | |
import java.util.Collection; | |
import java.util.List; | |
import org.eclipse.app4mc.amalthea.converters.common.converter.NamespaceConverter; | |
import org.eclipse.app4mc.amalthea.converters.common.utils.AmaltheaNamespaceRegistry; | |
import org.eclipse.app4mc.amalthea.converters.common.utils.HelperUtil; | |
import org.eclipse.app4mc.amalthea.converters081.impl.ConstraintsConverter; | |
import org.eclipse.app4mc.amalthea.converters081.impl.HwConverter; | |
import org.eclipse.app4mc.amalthea.converters081.impl.MappingConverter; | |
import org.eclipse.app4mc.amalthea.converters081.impl.RootElementConverter; | |
import org.eclipse.app4mc.amalthea.converters081.impl.StimuliConverter; | |
import org.eclipse.app4mc.amalthea.converters081.impl.SwConverter; | |
import org.jdom2.Document; | |
import org.jdom2.Element; | |
import org.junit.FixMethodOrder; | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.junit.runners.MethodSorters; | |
import org.junit.runners.Parameterized; | |
@FixMethodOrder(MethodSorters.NAME_ASCENDING) | |
@RunWith(Parameterized.class) | |
public class StimuliConverterTest extends Abstract081ConverterTest { | |
@Parameterized.Parameters(name = "{index}: Test data ID: {0}. Description : {3}") | |
public static Collection<Object[]> getTestData() { | |
final String[] inputFiles = new String[] { "/stimuli/stimuli.amxmi" }; | |
final String[] inputFiles_stimuli = new String[] { "/stimuli_event/eventModel.amxmi", "/stimuli_event/eventStimulus.amxmi" }; | |
return Arrays.asList(new Object[][] { | |
{ "Models with Stimuli Model (Containing ModeValueListEntry elements)", true, inputFiles, "Migration of Amalthea models containing Stimuli model(Containing ModeValueListEntry elements) " } , | |
{ "Models with Stimuli Model (Containing EventStimulus elements)", true, inputFiles_stimuli, "Migration of Amalthea models containing Stimulus model(Containing EventStimulus elements) " } | |
}); | |
} | |
public StimuliConverterTest(String testDataID, boolean canExecuteTestCase, String[] xmlFiles, String description) { | |
super(canExecuteTestCase, xmlFiles); | |
} | |
@Test | |
public void testConversion() { | |
super.testConversion(NamespaceConverter.class, RootElementConverter.class, ConstraintsConverter.class, | |
HwConverter.class, SwConverter.class, MappingConverter.class, StimuliConverter.class); | |
} | |
@Override | |
@Test | |
public void verification() { | |
super.verification(); | |
} | |
@Override | |
protected void modelFileVerificationHook(final Document document) { | |
super.modelFileVerificationHook(document); | |
/*-------------- Case 1 -----------------*/ | |
final StringBuilder xpathBuffer = new StringBuilder(); | |
xpathBuffer.append("./stimuliModel/stimuli/setModeValueList/entries[@xsi:type=\"am:ModeValue\"]"); | |
xpathBuffer.append("|"); | |
xpathBuffer.append("./stimuliModel/stimuli/enablingModeValueList/entries[@xsi:type=\"am:ModeValue\"]"); | |
xpathBuffer.append("|"); | |
xpathBuffer.append("./stimuliModel/stimuli/disablingModeValueList/entries[@xsi:type=\"am:ModeValue\"]"); | |
final List<Element> abstractProcessElements = HelperUtil.getXpathResult(document.getRootElement(), | |
xpathBuffer.toString(), Element.class, AmaltheaNamespaceRegistry.getGenericNamespace("xsi")); | |
if(document.getBaseURI().endsWith("stimuli.amxmi")){ | |
assertTrue( "Unable to migrate Stimul model containing ModeValueListEntry elements " , abstractProcessElements.size()==4); | |
} | |
/*-------------- Case 2 -----------------*/ | |
final StringBuilder xpathBuffer_eventStimulus = new StringBuilder(); | |
xpathBuffer_eventStimulus.append("./stimuliModel/stimuli[@xsi:type=\"am:EventStimulus\"]"); | |
final List<Element> eventStimulusElements = HelperUtil.getXpathResult(document.getRootElement(), | |
xpathBuffer_eventStimulus.toString(), Element.class, AmaltheaNamespaceRegistry.getGenericNamespace("xsi")); | |
for (Element eventStimulusElement : eventStimulusElements) { | |
boolean migStatus_eventStimulus=(eventStimulusElement.getAttribute("trigger") ==null) ||(eventStimulusElement.getChildren("trigger").size()==0); | |
assertTrue( "Unable to migrate Stimul model containing EventStimulus elements " , migStatus_eventStimulus); | |
} | |
if(document.getBaseURI().endsWith("eventStimulus.amxmi")){ | |
final List<Element> custProps_ObjRefs = HelperUtil.getXpathResult(document.getRootElement(), | |
".//customProperties[@key=\"st3\"]/value/values/values/values/values/values/value", Element.class, AmaltheaNamespaceRegistry.getGenericNamespace("xsi")); | |
assertEquals("Expected to have CustomProperty", 1, custProps_ObjRefs.size()); | |
String hrefValue = custProps_ObjRefs.get(0).getAttributeValue("href"); | |
assertEquals("Stimulus reference not migrated", "amlt:/#foreignStimuli?type=InterProcessStimulus", hrefValue); | |
} | |
} | |
} |