/** * Copyright 2010 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jbpm.bpmn2.emfextmodel; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.XMLResource; import bpsim.BPSimDataType; import bpsim.BpsimFactory; import bpsim.BpsimPackage; import bpsim.DocumentRoot; import bpsim.ElementParameters; import bpsim.Parameter; import bpsim.Scenario; import bpsim.ScenarioParameters; import bpsim.TimeParameters; import bpsim.TimeUnit; import bpsim.UniformDistributionType; import bpsim.util.BpsimResourceFactoryImpl; import junit.framework.TestCase; public class BpsimTest extends TestCase { private ResourceSet resourceSet; @Override protected void setUp() throws Exception { resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put (Resource.Factory.Registry.DEFAULT_EXTENSION, new BpsimResourceFactoryImpl()); resourceSet.getPackageRegistry().put (BpsimPackage.eNS_URI, BpsimPackage.eINSTANCE); } @Override protected void tearDown() throws Exception { } @SuppressWarnings("unchecked") public void testBpsimData() throws Exception { //write XMLResource inResource = (XMLResource) resourceSet.createResource(URI.createURI("inputStream://dummyUriWithValidSuffix.xml")); inResource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8"); inResource.setEncoding("UTF-8"); DocumentRoot documentRoot = BpsimFactory.eINSTANCE.createDocumentRoot(); BPSimDataType bpsimData = BpsimFactory.eINSTANCE.createBPSimDataType(); Scenario defaultScenario = BpsimFactory.eINSTANCE.createScenario(); defaultScenario.setId("default"); defaultScenario.setName("Scenario"); ScenarioParameters scenarioParams = BpsimFactory.eINSTANCE.createScenarioParameters(); scenarioParams.setBaseTimeUnit(TimeUnit.S); defaultScenario.setScenarioParameters(scenarioParams); ElementParameters elementParams = BpsimFactory.eINSTANCE.createElementParameters(); TimeParameters elementTimeParams = BpsimFactory.eINSTANCE.createTimeParameters(); Parameter processingTimeParameter = BpsimFactory.eINSTANCE.createParameter(); UniformDistributionType uniformDistrobutionType = BpsimFactory.eINSTANCE.createUniformDistributionType(); uniformDistrobutionType.setMin(180.0); uniformDistrobutionType.setMax(600.0); processingTimeParameter.getParameterValue().add(uniformDistrobutionType); elementTimeParams.setProcessingTime(processingTimeParameter); elementParams.setTimeParameters(elementTimeParams); defaultScenario.getElementParameters().add(elementParams); bpsimData.getScenario().add(defaultScenario); documentRoot.setBPSimData(bpsimData); inResource.getContents().add(documentRoot); StringWriter stringWriter = new StringWriter(); inResource.save(stringWriter, null); assertNotNull(stringWriter.getBuffer().toString()); if(stringWriter.getBuffer().toString().length() < 1) { fail("generated xml is empty"); } //read XMLResource outResource = (XMLResource) resourceSet.createResource(URI.createURI("inputStream://dummyUriWithValidSuffix.xml")); outResource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8"); outResource.setEncoding("UTF-8"); Map<String, Object> options = new HashMap<String, Object>(); options.put( XMLResource.OPTION_ENCODING, "UTF-8" ); InputStream is = new ByteArrayInputStream(stringWriter.getBuffer().toString().getBytes("UTF-8")); outResource.load(is, options); DocumentRoot outRoot = (DocumentRoot) outResource.getContents().get(0); assertNotNull(outRoot.getBPSimData()); BPSimDataType outAnalysisData = outRoot.getBPSimData(); assertEquals(outAnalysisData.getScenario().size(), 1); Scenario outScenario = outAnalysisData.getScenario().get(0); assertEquals(outScenario.getElementParameters().size(), 1); assertEquals(outScenario.getId(), "default"); assertEquals(outScenario.getName(), "Scenario"); assertNotNull(outScenario.getScenarioParameters()); assertNotNull(outScenario.getElementParameters()); assertEquals(outScenario.getElementParameters().size(), 1); ElementParameters outElementParamType = outScenario.getElementParameters().get(0); assertNotNull(outElementParamType.getTimeParameters()); TimeParameters outTimeParams = outElementParamType.getTimeParameters(); assertNotNull(outTimeParams.getProcessingTime()); assertEquals(outTimeParams.getProcessingTime().getParameterValue().size(), 1); UniformDistributionType outDistributionType = (UniformDistributionType) outTimeParams.getProcessingTime().getParameterValue().get(0); assertEquals(outDistributionType.getMax(), 600.0); assertEquals(outDistributionType.getMin(), 180.0); } }