| /********************************************************************* |
| * Copyright (c) 2008 The University of York. |
| * |
| * 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 |
| **********************************************************************/ |
| package org.eclipse.epsilon.flexmi.test; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import java.util.Arrays; |
| |
| import org.eclipse.epsilon.flexmi.FlexmiResource; |
| import org.junit.Test; |
| |
| public class TemplateTests extends FlexmiTests { |
| |
| @Test |
| public void testModelWithTemplate() throws Exception { |
| FlexmiResource resource = loadResource("templates/model-with-template.flexmi"); |
| assertEquals(0, resource.getWarnings().size()); |
| assertEquals(3, resource.getTemplates().size()); |
| assertEquals("t1", resource.getTemplates().get(0).getName()); |
| assertEquals("p", resource.getTemplates().get(0).getParameters().get(0)); |
| |
| } |
| |
| @Test |
| public void testTemplateApplicationContents() throws Exception { |
| assertEval("EAttribute.all.at(0).name", "a1", "templates/model-with-template.flexmi"); |
| } |
| |
| @Test |
| public void testTemplateSlot() throws Exception { |
| assertEval("EClass.all.third().eStructuralFeatures.name", Arrays.asList("a1", "a2"), "templates/model-with-template.flexmi"); |
| assertEval("EClass.all.fourth().eStructuralFeatures.name", Arrays.asList("a3"), "templates/model-with-template.flexmi"); |
| assertEval("EClass.all[4].eStructuralFeatures.name", Arrays.asList("a4", "a5"), "templates/model-with-template.flexmi"); |
| assertEval("EClass.all.exists(c|c.name='C4')", true, "templates/model-with-template.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithImportedTemplate() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-imported-template.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithImportedTemplates() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "O1", "templates/model-with-imported-templates.flexmi"); |
| assertEval("EPackage.all.first().eClassifiers.at(1).name", "C2", "templates/model-with-imported-templates.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithParameterisedTemplate() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-parameterised-template.flexmi"); |
| assertEval("EAttribute.all.first().name", "a1", "templates/model-with-parameterised-template.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithNestedTemplates() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-nested-templates.flexmi"); |
| assertEval("EAttribute.all.first().name", "a1", "templates/model-with-nested-templates.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithMultiElementTemplate() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-multi-element-template.flexmi"); |
| assertEval("EPackage.all.first().eClassifiers.at(1).name", "C2", "templates/model-with-multi-element-template.flexmi"); |
| } |
| |
| @Test |
| public void testTemplateInstantiation() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-template.flexmi"); |
| assertEval("EPackage.all.second().eClassifiers.at(0).name", "C2", "templates/model-with-template.flexmi"); |
| |
| } |
| |
| @Test |
| public void testModelWithEolTemplates() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-eol-templates.flexmi"); |
| assertEval("EPackage.all.first().eClassifiers.size()", 10, "templates/model-with-eol-templates.flexmi"); |
| assertEval("EPackage.all.second().eClassifiers.at(0).name", "C11", "templates/model-with-eol-templates.flexmi"); |
| assertEval("EPackage.all.third().eClassifiers.size()", 5, "templates/model-with-eol-templates.flexmi"); |
| assertEval("EPackage.all.fourth().eClassifiers.size()", 5, "templates/model-with-eol-templates.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithEglTemplates() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-egl-templates.flexmi"); |
| assertEval("EPackage.all.first().eClassifiers.size()", 10, "templates/model-with-egl-templates.flexmi"); |
| assertEval("EPackage.all.second().eClassifiers.at(0).name", "C11", "templates/model-with-egl-templates.flexmi"); |
| assertEval("EPackage.all.third().eClassifiers.size()", 5, "templates/model-with-egl-templates.flexmi"); |
| assertEval("EPackage.all.fourth().eClassifiers.size()", 5, "templates/model-with-egl-templates.flexmi"); |
| } |
| |
| @Test |
| public void testModelWithEglTemplateImportingEOL() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-egl-template-importing-eol.flexmi"); |
| assertEval("EPackage.all.second().eClassifiers.at(0).name", "C2", "templates/model-with-egl-template-importing-eol.flexmi"); |
| |
| } |
| |
| @Test |
| public void testModelWithEolTemplateImportingEOL() throws Exception { |
| assertEval("EPackage.all.first().eClassifiers.at(0).name", "C1", "templates/model-with-eol-template-importing-eol.flexmi"); |
| assertEval("EPackage.all.second().eClassifiers.at(0).name", "C2", "templates/model-with-eol-template-importing-eol.flexmi"); |
| |
| } |
| } |