/* * Copyright (C) 2014-2017 the original authors or authors. * * 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 io.sarl.lang.tests.general.parsing.general; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import com.google.common.base.Strings; import org.eclipse.xtext.diagnostics.Diagnostic; import org.eclipse.xtext.xbase.XNumberLiteral; import org.eclipse.xtext.xbase.XStringLiteral; import org.eclipse.xtext.xbase.XbasePackage; import org.eclipse.xtext.xbase.validation.IssueCodes; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; import io.sarl.lang.sarl.SarlAction; import io.sarl.lang.sarl.SarlAgent; import io.sarl.lang.sarl.SarlBehavior; import io.sarl.lang.sarl.SarlCapacity; import io.sarl.lang.sarl.SarlConstructor; import io.sarl.lang.sarl.SarlPackage; import io.sarl.lang.sarl.SarlScript; import io.sarl.lang.sarl.SarlSkill; import io.sarl.tests.api.AbstractSarlTest; /** * @author $Author: sgalland$ * @version $Name$ $Revision$ $Date$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ @RunWith(Suite.class) @SuiteClasses({ ArgDefaultValueParsingTest.AgentAction.class, ArgDefaultValueParsingTest.BehaviorConstructor.class, ArgDefaultValueParsingTest.CapacityAction.class, ArgDefaultValueParsingTest.SkillAction.class, ArgDefaultValueParsingTest.BehaviorAction.class, }) @SuppressWarnings("all") public class ArgDefaultValueParsingTest extends AbstractSarlTest { public static class AgentAction extends AbstractSarlTest { @Test public void action_1p() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg : int=4) {", "System.out.println(arg)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg"); assertParameterTypes(action.getParameters(), "int"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4"); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_1p_invalid1() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg : int=4*) {", "System.out.println(arg)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_1p_invalid2() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg : int*=4) {", "System.out.println(arg)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "mismatched input '*=' expecting ')'"); } @Test public void action_1p_returnValue() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg : int=4) : boolean {", "System.out.println(arg)", "return true", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg"); assertParameterTypes(action.getParameters(), "int"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4"); assertTypeReferenceIdentifier(action.getReturnType(), "boolean"); } @Test public void action_5p_0() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", null, null, null, null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_1() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), null, XStringLiteral.class, "abc", null, null, null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_2() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", " def myaction(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String) {", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), null, null, XNumberLiteral.class, "18", null, null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_3() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), null, null, null, XNumberLiteral.class, "34", null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_4() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\") {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), null, null, null, null, XStringLiteral.class, "xyz"); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_0_3() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_0_3_4() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String=\"def\") {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", XStringLiteral.class, "def"); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_0_2_4() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String=\"def\") {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", null, XNumberLiteral.class, "18", null, XStringLiteral.class, "def"); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_0_1_2_3() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", null); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_5p_0_1_2_3_4() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String=\"klm\") {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", XStringLiteral.class, "klm"); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_3p_vararg_2() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : int, arg2 : int=45*) {", "System.out.println(arg0)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_3p_vararg_1() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", " def myaction(arg0 : int, arg1 : int=45, arg2 : int*) {", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action.getParameters(), null, XNumberLiteral.class, "45", null); assertParameterVarArg(action.getParameters()); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_3p_vararg_0() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", " def myaction(arg0 : int=45, arg1 : int, arg2 : int*) {", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "45", null, null); assertParameterVarArg(action.getParameters()); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void action_3p_vararg_0_1() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", "def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*) {", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(1, agent.getMembers().size()); // SarlAction action = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifiers(action.getFiredEvents()); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "56", null); assertParameterVarArg(action.getParameters()); assertTypeReferenceIdentifier(action.getReturnType(), "void"); } @Test public void multipleActionDefinitionsInAgent() throws Exception { SarlScript mas = file(multilineString( "agent A1 {", " def myaction(arg0 : int, arg1 : int=42, arg2 : int*) {", " System.out.println(\"valid\")", " }", " def myaction(arg0 : int, arg1 : int*) {", " System.out.println(\"invalid\")", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlAgent agent = (SarlAgent) mas.getXtendTypes().get(0); assertEquals("A1", agent.getName()); assertNull(agent.getExtends()); assertEquals(2, agent.getMembers().size()); // SarlAction action1 = (SarlAction) agent.getMembers().get(0); assertEquals("myaction", action1.getName()); assertTypeReferenceIdentifiers(action1.getFiredEvents()); assertParameterNames(action1.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action1.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action1.getParameters(), null, XNumberLiteral.class, "42", null); assertParameterVarArg(action1.getParameters()); assertTypeReferenceIdentifier(action1.getReturnType(), "void"); // SarlAction action2 = (SarlAction) agent.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifiers(action2.getFiredEvents()); assertParameterNames(action2.getParameters(), "arg0", "arg1"); assertParameterTypes(action2.getParameters(), "int", "int"); assertParameterDefaultValues(action2.getParameters(), null, null); assertParameterVarArg(action2.getParameters()); assertTypeReferenceIdentifier(action2.getReturnType(), "void"); } } public static class BehaviorConstructor extends AbstractSarlTest { @Test public void constructor_1p() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg : int=4) {", "super(null) // must be never null during runtime", "System.out.println(arg)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg"); assertParameterTypes(constructor.getParameters(), "int"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4"); } @Test public void constructor_1p_invalid1() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg : int=4*) {", "System.out.println(arg)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlConstructor(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void constructor_1p_invalid2() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg : int*=4) {", "System.out.println(arg)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlConstructor(), Diagnostic.SYNTAX_DIAGNOSTIC, "mismatched input '*=' expecting ')'"); } @Test public void constructor_5p_0() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", null, null, null, null); } @Test public void constructor_5p_1() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), null, XStringLiteral.class, "abc", null, null, null); } @Test public void constructor_5p_2() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), null, null, XNumberLiteral.class, "18", null, null); } @Test public void constructor_5p_3() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), null, null, null, XNumberLiteral.class, "34", null); } @Test public void constructor_5p_4() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\") {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), null, null, null, null, XStringLiteral.class, "xyz"); } @Test public void constructor_5p_0_3() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", null); } @Test public void constructor_5p_0_3_4() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " new(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String=\"def\") {", " super(null) // must be never null during runtime", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", XStringLiteral.class, "def"); } @Test public void constructor_5p_0_2_4() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " new(arg0 : int=4, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String=\"def\") {", " super(null) // must be never null during runtime", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", null, XNumberLiteral.class, "18", null, XStringLiteral.class, "def"); } @Test public void constructor_5p_0_1_2_3() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", null); } @Test public void constructor_5p_0_1_2_3_4() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String=\"klm\") {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(constructor.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", XStringLiteral.class, "klm"); } @Test public void constructor_3p_vararg_2() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : int, arg2 : int=45*) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlConstructor(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void constructor_3p_vararg_1() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int, arg1 : int=45, arg2 : int*) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(constructor.getParameters(), "int", "int", "int"); assertParameterDefaultValues(constructor.getParameters(), null, XNumberLiteral.class, "45", null); assertParameterVarArg(constructor.getParameters()); } @Test public void constructor_3p_vararg_0() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=45, arg1 : int, arg2 : int*) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(constructor.getParameters(), "int", "int", "int"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "45", null, null); assertParameterVarArg(constructor.getParameters()); } @Test public void constructor_3p_vararg_0_1() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " new(arg0 : int=45, arg1 : int=56, arg2 : int*) {", " super(null) // must be never null during runtime", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(constructor.getParameters(), "int", "int", "int"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "56", null); assertParameterVarArg(constructor.getParameters()); } @Test public void constructorCast_String2int() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.test", "behavior B1 {", "new(arg0 : int=45, arg1 : int=\"S\", arg2 : int) {", "System.out.println(arg0)", "}", "}" )); validate(mas).assertError( XbasePackage.eINSTANCE.getXStringLiteral(), IssueCodes.INCOMPATIBLE_TYPES, "Type mismatch: cannot convert from String to int"); } @Test public void constructorCast_int2double() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=45, arg1 : double=18, arg2 : int) {", "super(null) // must be never null during runtime", "System.out.println(arg0)", "}", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlConstructor constructor = (SarlConstructor) behavior.getMembers().get(0); assertParameterNames(constructor.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(constructor.getParameters(), "int", "double", "int"); assertParameterDefaultValues(constructor.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "18", null); } @Test public void constructorCast_double2int() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", "new(arg0 : int=45, arg1 : int=18.0, arg2 : int) {", "System.out.println(arg0)", "}", "}" )); validate(mas).assertError( XbasePackage.eINSTANCE.getXNumberLiteral(), IssueCodes.INCOMPATIBLE_TYPES, "Type mismatch: cannot convert from double to int"); } } public static class CapacityAction extends AbstractSarlTest { @Test public void action_1p() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg : int=4)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg"); assertParameterTypes(signature.getParameters(), "int"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4"); } @Test public void action_1p_invalid1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg : int=4*)", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_1p_invalid2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg : int*=4)", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "mismatched input '*=' expecting ')'"); } @Test public void action_5p_0() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", null, null, null, null); } @Test public void action_5p_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), null, XStringLiteral.class, "abc", null, null, null); } @Test public void action_5p_2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), null, null, XNumberLiteral.class, "18", null, null); } @Test public void action_5p_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), null, null, null, XNumberLiteral.class, "34", null); } @Test public void action_5p_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\")", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), null, null, null, null, XStringLiteral.class, "xyz"); } @Test public void action_5p_0_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", null); } @Test public void action_5p_0_3_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String=\"def\")", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", XStringLiteral.class, "def"); } @Test public void action_5p_0_2_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String=\"def\")", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", null, XNumberLiteral.class, "18", null, XStringLiteral.class, "def"); } @Test public void action_5p_0_1_2_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", null); } @Test public void action_5p_0_1_2_3_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String=\"klm\")", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(signature.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", XStringLiteral.class, "klm"); } @Test public void action_3p_vararg_2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : int, arg2 : int=45*)", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_3p_vararg_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int, arg1 : int=45, arg2 : int*)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(signature.getParameters(), "int", "int", "int"); assertParameterDefaultValues(signature.getParameters(), null, XNumberLiteral.class, "45", null); assertParameterVarArg(signature.getParameters()); } @Test public void action_3p_vararg_0() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=45, arg1 : int, arg2 : int*)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(signature.getParameters(), "int", "int", "int"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "45", null, null); assertParameterVarArg(signature.getParameters()); } @Test public void action_3p_vararg_0_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", "def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*)", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(signature.getParameters(), "int", "int", "int"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "56", null); assertParameterVarArg(signature.getParameters()); } } public static class SkillAction extends AbstractSarlTest { @Test public void action_1p() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg : int=4) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg"); assertParameterTypes(action2.getParameters(), "int"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4"); } @Test public void action_1p_invalid1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg : int=4*) {}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_1p_invalid2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg : int*=4) {}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "mismatched input '*=' expecting ')'"); } @Test public void action_5p_0() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", null, null, null, null); } @Test public void action_5p_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), null, XStringLiteral.class, "abc", null, null, null); } @Test public void action_5p_2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), null, null, XNumberLiteral.class, "18", null, null); } @Test public void action_5p_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), null, null, null, XNumberLiteral.class, "34", null); } @Test public void action_5p_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\") {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), null, null, null, null, XStringLiteral.class, "xyz"); } @Test public void action_5p_0_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", null); } @Test public void action_5p_0_3_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String=\"def\") {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", null, null, XNumberLiteral.class, "56", XStringLiteral.class, "def"); } @Test public void action_5p_0_2_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String=\"def\") {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", null, XNumberLiteral.class, "18", null, XStringLiteral.class, "def"); } @Test public void action_5p_0_1_2_3() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", null); } @Test public void action_5p_0_1_2_3_4() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=4, arg1 : String=\"ghj\", arg2 : int=18, arg3 : int=98, arg4 : String=\"klm\") {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2", "arg3", "arg4"); assertParameterTypes(action2.getParameters(), "int", "java.lang.String", "int", "int", "java.lang.String"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "4", XStringLiteral.class, "ghj", XNumberLiteral.class, "18", XNumberLiteral.class, "98", XStringLiteral.class, "klm"); } @Test public void action_3p_vararg_2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : int, arg2 : int=45*) {}", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlAction(), Diagnostic.SYNTAX_DIAGNOSTIC, "no viable alternative at input"); } @Test public void action_3p_vararg_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : int=45, arg2 : int*) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action2.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action2.getParameters(), null, XNumberLiteral.class, "45", null); assertParameterVarArg(action2.getParameters()); } @Test public void action_3p_vararg_0() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=45, arg1 : int, arg2 : int*) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action2.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "45", null, null); assertParameterVarArg(action2.getParameters()); } @Test public void action_3p_vararg_0_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def capAction", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*) {}", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertParameterNames(signature.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action2.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "56", null); assertParameterVarArg(action2.getParameters()); } @Test public void overridingCapacitySkill() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*)", "}", "skill S1 implements C1 {", " def capAction {", " System.out.println(\"ok\");", " }", " def myaction(arg0 : int, arg1 : int, arg2 : int*) {", " System.out.println(\"ok\");", " }", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(1, capacity.getMembers().size()); // SarlAction signature = (SarlAction) capacity.getMembers().get(0); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(signature.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(signature.getParameters(), "int", "int", "int"); assertParameterDefaultValues(signature.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "56", null); assertParameterVarArg(signature.getParameters()); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("capAction", action1.getName()); assertParameterNames(action1.getParameters()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(signature.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action2.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action2.getParameters(), null, null, null); assertParameterVarArg(action2.getParameters()); } @Test public void multipleActionDefinitionsInSkill() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {}", "skill S1 implements C1 {", " def myaction(arg0 : int, arg1 : int=42, arg2 : int*) {", " System.out.println(\"valid\")", " }", " def myaction(arg0 : int, arg1 : int*) {", " System.out.println(\"invalid\")", " }", "}" ), true); assertEquals(2, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity.getName()); assertTypeReferenceIdentifiers(capacity.getExtends()); assertEquals(0, capacity.getMembers().size()); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(1); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1"); assertEquals(2, skill.getMembers().size()); // SarlAction action1 = (SarlAction) skill.getMembers().get(0); assertEquals("myaction", action1.getName()); assertTypeReferenceIdentifier(action1.getReturnType(), "void"); assertParameterNames(action1.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action1.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action1.getParameters(), null, XNumberLiteral.class, "42", null); assertParameterVarArg(action1.getParameters()); // SarlAction action2 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(action2.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1"); assertParameterTypes(action2.getParameters(), "int", "int"); assertParameterDefaultValues(action2.getParameters(), null, null); assertParameterVarArg(action2.getParameters()); } @Test public void missedActionImplementation_0() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def myaction1(a : int=4)", "}", "capacity C2 {", " def myaction2(b : float=6, c : boolean)", "}", "skill S1 implements C1, C2 {", " def myaction1(x : int) { }", " def myaction2(y : float, z : boolean) { }", "}" ), true); assertEquals(3, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlCapacity capacity1 = (SarlCapacity) mas.getXtendTypes().get(0); assertEquals("C1", capacity1.getName()); assertTypeReferenceIdentifiers(capacity1.getExtends()); assertEquals(1, capacity1.getMembers().size()); // SarlAction action1 = (SarlAction) capacity1.getMembers().get(0); assertEquals("myaction1", action1.getName()); assertTypeReferenceIdentifier(action1.getReturnType(), "void"); assertParameterNames(action1.getParameters(), "a"); assertParameterTypes(action1.getParameters(), "int"); assertParameterDefaultValues(action1.getParameters(), XNumberLiteral.class, "4"); // SarlCapacity capacity2 = (SarlCapacity) mas.getXtendTypes().get(1); assertEquals("C2", capacity2.getName()); assertTypeReferenceIdentifiers(capacity2.getExtends()); assertEquals(1, capacity2.getMembers().size()); // SarlAction action2 = (SarlAction) capacity2.getMembers().get(0); assertEquals("myaction2", action2.getName()); assertTypeReferenceIdentifier(action2.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "b", "c"); assertParameterTypes(action2.getParameters(), "float", "boolean"); assertParameterDefaultValues(action2.getParameters(), XNumberLiteral.class, "6", null); // SarlSkill skill = (SarlSkill) mas.getXtendTypes().get(2); assertEquals("S1", skill.getName()); assertNull(skill.getExtends()); assertTypeReferenceIdentifiers(skill.getImplements(), "C1", "C2"); assertEquals(2, skill.getMembers().size()); // SarlAction action3 = (SarlAction) skill.getMembers().get(0); assertEquals("myaction1", action3.getName()); assertTypeReferenceIdentifier(action3.getReturnType(), "void"); assertParameterNames(action3.getParameters(), "x"); assertParameterTypes(action3.getParameters(), "int"); assertParameterDefaultValues(action3.getParameters(), (Object) null); // SarlAction action4 = (SarlAction) skill.getMembers().get(1); assertEquals("myaction2", action4.getName()); assertTypeReferenceIdentifier(action4.getReturnType(), "void"); assertParameterNames(action4.getParameters(), "y", "z"); assertParameterTypes(action4.getParameters(), "float", "boolean"); assertParameterDefaultValues(action4.getParameters(), null, null); } @Test public void missedActionImplementation_1() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def myaction1(a : int=4)", "}", "capacity C2 {", " def myaction2(b : float=6, c : boolean)", "}", "skill S1 implements C1, C2 {", " def myaction2(b : float, c : boolean) { }", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlSkill(), org.eclipse.xtend.core.validation.IssueCodes.CLASS_MUST_BE_ABSTRACT, "The class S1 must be defined abstract because it does not implement myaction1(int)"); } @Test public void missedActionImplementation_2() throws Exception { SarlScript mas = file(multilineString( "capacity C1 {", " def myaction1(a : int=4)", "}", "capacity C2 {", " def myaction2(b : float=6, c : boolean)", "}", "skill S1 implements C1, C2 {", " def myaction1(x : float) { }", " def myaction2(y : float, z : boolean) { }", "}" )); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlSkill(), org.eclipse.xtend.core.validation.IssueCodes.CLASS_MUST_BE_ABSTRACT, "The class S1 must be defined abstract because it does not implement myaction1(int)"); } } public static class BehaviorAction extends AbstractSarlTest { @Test public void actionCast_String2int() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " def myaction(arg0 : int=45, arg1 : int=\"S\", arg2 : int) {", " System.out.println(arg0)", " }", "}" )); validate(mas).assertError( XbasePackage.eINSTANCE.getXStringLiteral(), IssueCodes.INCOMPATIBLE_TYPES, "Type mismatch: cannot convert from String to int"); } @Test public void actionCast_int2double() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " def myaction(arg0 : int=45, arg1 : double=18, arg2 : int) {", " System.out.println(arg0)", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(1, behavior.getMembers().size()); // SarlAction action = (SarlAction) behavior.getMembers().get(0); assertEquals("myaction", action.getName()); assertTypeReferenceIdentifier(action.getReturnType(), "void"); assertParameterNames(action.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action.getParameters(), "int", "double", "int"); assertParameterDefaultValues(action.getParameters(), XNumberLiteral.class, "45", XNumberLiteral.class, "18", null); assertNoParameterVarArg(action.getParameters()); } @Test public void actionCast_double2int() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " def myaction(arg0 : int=45, arg1 : int=18.0, arg2 : int) {", " System.out.println(arg0)", " }", "}" )); validate(mas).assertError( XbasePackage.eINSTANCE.getXNumberLiteral(), IssueCodes.INCOMPATIBLE_TYPES, "Type mismatch: cannot convert from double to int"); } @Test public void multipleActionDefinitionsInBehavior() throws Exception { SarlScript mas = file(multilineString( "behavior B1 {", " def myaction(arg0 : int, arg1 : int=42, arg2 : int*) {", " System.out.println(\"valid\")", " }", " def myaction(arg0 : int, arg1 : int*) {", " System.out.println(\"invalid\")", " }", "}" ), true); assertEquals(1, mas.getXtendTypes().size()); // assertTrue(Strings.isNullOrEmpty(mas.getPackage())); // SarlBehavior behavior = (SarlBehavior) mas.getXtendTypes().get(0); assertEquals("B1", behavior.getName()); assertNull(behavior.getExtends()); assertEquals(2, behavior.getMembers().size()); // SarlAction action1 = (SarlAction) behavior.getMembers().get(0); assertEquals("myaction", action1.getName()); assertTypeReferenceIdentifier(action1.getReturnType(), "void"); assertParameterNames(action1.getParameters(), "arg0", "arg1", "arg2"); assertParameterTypes(action1.getParameters(), "int", "int", "int"); assertParameterDefaultValues(action1.getParameters(), null, XNumberLiteral.class, "42", null); assertParameterVarArg(action1.getParameters()); // SarlAction action2 = (SarlAction) behavior.getMembers().get(1); assertEquals("myaction", action2.getName()); assertTypeReferenceIdentifier(action2.getReturnType(), "void"); assertParameterNames(action2.getParameters(), "arg0", "arg1"); assertParameterTypes(action2.getParameters(), "int", "int"); assertParameterDefaultValues(action2.getParameters(), null, null); assertParameterVarArg(action2.getParameters()); } } }