/*******************************************************************************
* Copyright (c) 2010 protos software gmbh (http://www.protos.de).
* 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:
* Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
*
*******************************************************************************/
package org.eclipse.etrice.generator;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.HashMap;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
import org.eclipse.etrice.generator.etricegen.Root;
import org.eclipse.etrice.generator.etricegen.SAPInstance;
import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
import org.junit.Before;
import org.junit.Test;
public class TestLayers extends TestInstanceModelBuilderBase {
private Root root;
private HashMap<EClass, ArrayList<EObject>> instances;
@Before
public void setUp() {
prepare();
root = buildInstanceModel("layers.room");
instances = collectInstances(root);
}
@Test
public void testInstanceNumbers() {
ArrayList<EObject> saps = instances.get(ETriceGenPackage.eINSTANCE.getSAPInstance());
assertEquals("Number of SAPInstances", 6, saps.size());
ArrayList<EObject> spps = instances.get(ETriceGenPackage.eINSTANCE.getSPPInstance());
assertEquals("Number of SPPInstances", 7, spps.size());
ArrayList<EObject> svcs = instances.get(ETriceGenPackage.eINSTANCE.getServiceImplInstance());
assertEquals("Number of ServiceImplInstances", 3, svcs.size());
}
@Test
public void testLayerConnections() {
ArrayList<EObject> saps = instances.get(ETriceGenPackage.eINSTANCE.getSAPInstance());
for (EObject obj : saps) {
assertEquals("SAP has one peer", 1, ((SAPInstance)obj).getPeers().size());
}
SAPInstance sap = (SAPInstance) getInstance(saps, "/CMain/app/subsysA/userX/sap");
assertNotNull("sap expected", sap);
InterfaceItemInstance peer = ((SAPInstance)sap).getPeers().get(0);
assertTrue("peer is a service", (peer instanceof ServiceImplInstance));
ServiceImplInstance svc = (ServiceImplInstance) peer;
assertEquals("number of serviceA peers", 3, svc.getPeers().size());
assertEquals("sap and service have same protocol", sap.getSap().getProtocol(), svc.getSvcImpl().getSpp().getProtocol());
}
}