/* * 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.compilation.general; import com.google.inject.Inject; import org.eclipse.xtext.xbase.testing.CompilationTestHelper; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; import io.sarl.lang.SARLVersion; import io.sarl.lang.sarl.SarlPackage; import io.sarl.tests.api.AbstractSarlTest; /** * @author $Author: sgalland$ * @version $Name$ $Revision$ $Date$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ @RunWith(Suite.class) @SuiteClasses({ ArgDefaultValueCompilerTest.AgentTest.class, ArgDefaultValueCompilerTest.BehaviorTest.class, ArgDefaultValueCompilerTest.CapacityTest.class, ArgDefaultValueCompilerTest.SkillTest.class, }) @SuppressWarnings("all") public class ArgDefaultValueCompilerTest { public static class AgentTest extends AbstractSarlTest { @Inject private CompilationTestHelper compiler; @Test public void action_1p_int() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : int=4) {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 4;", " ", " @DefaultValueUse(\"int\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_float() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : float=4.5f) {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final float arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4.5f\")", " private final static float $DEFAULT_VALUE$MYACTION_0 = 4.5f;", " ", " @DefaultValueUse(\"float\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_boolean() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : boolean=true) {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final boolean arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"true\")", " private final static boolean $DEFAULT_VALUE$MYACTION_0 = true;", " ", " @DefaultValueUse(\"boolean\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_double() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : double=4.5) {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final double arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4.5\")", " private final static double $DEFAULT_VALUE$MYACTION_0 = 4.5;", " ", " @DefaultValueUse(\"double\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_long() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : long=450) {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final long arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"450\")", " private final static long $DEFAULT_VALUE$MYACTION_0 = 450;", " ", " @DefaultValueUse(\"long\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_String() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : String=\"abcd\") {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final String arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"abcd\\\"\")", " private final static String $DEFAULT_VALUE$MYACTION_0 = \"abcd\";", " ", " @DefaultValueUse(\"java.lang.String\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_char() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : char='d') {", " System.out.println(arg)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final char arg) {", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"\\'d\\'\")", " private final static char $DEFAULT_VALUE$MYACTION_0 = 'd';", " ", " @DefaultValueUse(\"char\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_1p_returnValue() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg : int=4) : boolean {", " System.out.println(arg)", " return true", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected boolean myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg) {", " System.out.println(arg);", " return true;", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 4;", " ", " @DefaultValueUse(\"int\")", " @SyntheticMember", " protected final boolean myaction() {", " return myaction($DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_0() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) {", " System.out.println(arg0)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, final String arg1, final int arg2, final int arg3, final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 4;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final String arg1, final int arg2, final int arg3, final String arg4) {", " myaction($DEFAULT_VALUE$MYACTION_0, arg1, arg2, arg3, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_1() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String) {", " System.out.println(arg0)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(final int arg0, @DefaultValue(\"A1#MYACTION_0\") final String arg1, final int arg2, final int arg3, final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"abc\\\"\")", " private final static String $DEFAULT_VALUE$MYACTION_0 = \"abc\";", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final int arg0, final int arg2, final int arg3, final String arg4) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_0, arg2, arg3, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_2() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String) {", " System.out.println(arg0)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(final int arg0, final String arg1, @DefaultValue(\"A1#MYACTION_0\") final int arg2, final int arg3, final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg2", " */", " @SyntheticMember", " @SarlSourceCode(\"18\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 18;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final int arg0, final String arg1, final int arg3, final String arg4) {", " myaction(arg0, arg1, $DEFAULT_VALUE$MYACTION_0, arg3, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_3() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String) {", " System.out.println(arg0)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(final int arg0, final String arg1, final int arg2, @DefaultValue(\"A1#MYACTION_0\") final int arg3, final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"34\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 34;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final int arg0, final String arg1, final int arg2, final String arg4) {", " myaction(arg0, arg1, arg2, $DEFAULT_VALUE$MYACTION_0, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_4() throws Exception { String source = multilineString( "agent A1 {", "def myaction(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\") {", " System.out.println(arg0)", "}", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(final int arg0, final String arg1, final int arg2, final int arg3, @DefaultValue(\"A1#MYACTION_0\") final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg4", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"xyz\\\"\")", " private final static String $DEFAULT_VALUE$MYACTION_0 = \"xyz\";", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final int arg0, final String arg1, final int arg2, final int arg3) {", " myaction(arg0, arg1, arg2, arg3, $DEFAULT_VALUE$MYACTION_0);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_0_3() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String) {", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, final String arg1, final int arg2, @DefaultValue(\"A1#MYACTION_1\") final int arg3, final String arg4) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 4;", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$MYACTION_1 = 56;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final String arg1, final int arg2, final String arg4) {", " myaction($DEFAULT_VALUE$MYACTION_0, arg1, arg2, $DEFAULT_VALUE$MYACTION_1, arg4);", " }", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final int arg0, final String arg1, final int arg2, final String arg4) {", " myaction(arg0, arg1, arg2, $DEFAULT_VALUE$MYACTION_1, arg4);", " }", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final void myaction(final String arg1, final int arg2, final int arg3, final String arg4) {", " myaction($DEFAULT_VALUE$MYACTION_0, arg1, arg2, arg3, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_5p_returnValue() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) : boolean {", " System.out.println(arg0)", " return true", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected boolean myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, final String arg1, final int arg2, final int arg3, final String arg4) {", " System.out.println(arg0);", " return true;", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 4;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " protected final boolean myaction(final String arg1, final int arg2, final int arg3, final String arg4) {", " return myaction($DEFAULT_VALUE$MYACTION_0, arg1, arg2, arg3, arg4);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_3p_vararg_1() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int, arg1 : int=45, arg2 : int*) {", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(final int arg0, @DefaultValue(\"A1#MYACTION_0\") final int arg1, final int... arg2) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " protected final void myaction(final int arg0, final int... arg2) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_0, arg2);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_3p_vararg_0() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int=45, arg1 : int, arg2 : int*) {", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, final int arg1, final int... arg2) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " protected final void myaction(final int arg1, final int... arg2) {", " myaction($DEFAULT_VALUE$MYACTION_0, arg1, arg2);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_3p_vararg_0_1() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*) {", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, @DefaultValue(\"A1#MYACTION_1\") final int arg1, final int... arg2) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$MYACTION_1 = 56;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " protected final void myaction(final int... arg2) {", " myaction($DEFAULT_VALUE$MYACTION_0, $DEFAULT_VALUE$MYACTION_1, arg2);", " }", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " protected final void myaction(final int arg0, final int... arg2) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_1, arg2);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_3p_vararg_returnValue() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int, arg1 : int=45, arg2 : int*) : boolean {", " System.out.println(arg0)", " return true", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected boolean myaction(final int arg0, @DefaultValue(\"A1#MYACTION_0\") final int arg1, final int... arg2) {", " System.out.println(arg0);", " return true;", " }", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " protected final boolean myaction(final int arg0, final int... arg2) {", " return myaction(arg0, $DEFAULT_VALUE$MYACTION_0, arg2);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void action_4p_0_1_2_3() throws Exception { String source = multilineString( "agent A1 {", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int=78, arg3 : int=14) {", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.BuiltinCapacitiesProvider;", "import java.util.UUID;", "import javax.inject.Inject;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_AGENT + ")", "@SuppressWarnings(\"all\")", "public class A1 extends Agent {", " @DefaultValueSource", " protected void myaction(@DefaultValue(\"A1#MYACTION_0\") final int arg0, @DefaultValue(\"A1#MYACTION_1\") final int arg1, @DefaultValue(\"A1#MYACTION_2\") final int arg2, @DefaultValue(\"A1#MYACTION_3\") final int arg3) {", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$MYACTION_1 = 56;", " ", " /**", " * Default value for the parameter arg2", " */", " @SyntheticMember", " @SarlSourceCode(\"78\")", " private final static int $DEFAULT_VALUE$MYACTION_2 = 78;", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"14\")", " private final static int $DEFAULT_VALUE$MYACTION_3 = 14;", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " protected final void myaction() {", " myaction($DEFAULT_VALUE$MYACTION_0, $DEFAULT_VALUE$MYACTION_1, $DEFAULT_VALUE$MYACTION_2, $DEFAULT_VALUE$MYACTION_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " protected final void myaction(final int arg0) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_1, $DEFAULT_VALUE$MYACTION_2, $DEFAULT_VALUE$MYACTION_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " protected final void myaction(final int arg0, final int arg1) {", " myaction(arg0, arg1, $DEFAULT_VALUE$MYACTION_2, $DEFAULT_VALUE$MYACTION_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " protected final void myaction(final int arg0, final int arg1, final int arg2) {", " myaction(arg0, arg1, arg2, $DEFAULT_VALUE$MYACTION_3);", " }", " ", " @SyntheticMember", " public A1(final UUID arg0, final UUID arg1) {", " super(arg0, arg1);", " }", " ", " @SyntheticMember", " @Inject", " public A1(final BuiltinCapacitiesProvider arg0, final UUID arg1, final UUID arg2) {", " super(arg0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } } public static class BehaviorTest extends AbstractSarlTest { @Inject private CompilationTestHelper compiler; @Test public void constructor_1p_int() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : int=4) {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$NEW_0 = 4;", " ", " @DefaultValueUse(\"int\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_float() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : float=4.5f) {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final float arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4.5f\")", " private final static float $DEFAULT_VALUE$NEW_0 = 4.5f;", " ", " @DefaultValueUse(\"float\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_boolean() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : boolean=true) {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final boolean arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"true\")", " private final static boolean $DEFAULT_VALUE$NEW_0 = true;", " ", " @DefaultValueUse(\"boolean\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_double() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : double=4.5) {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final double arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"4.5\")", " private final static double $DEFAULT_VALUE$NEW_0 = 4.5;", " ", " @DefaultValueUse(\"double\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_long() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : long=450) {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final long arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"450\")", " private final static long $DEFAULT_VALUE$NEW_0 = 450;", " ", " @DefaultValueUse(\"long\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_String() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : String=\"abcd\") {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final String arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"abcd\\\"\")", " private final static String $DEFAULT_VALUE$NEW_0 = \"abcd\";", " ", " @DefaultValueUse(\"java.lang.String\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_1p_char() throws Exception { String source = multilineString( "behavior B1 {", " new(arg : char='d') {", " super(null) // must be never null in real code", " System.out.println(arg)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final char arg) {", " super(null);", " System.out.println(arg);", " }", " ", " /**", " * Default value for the parameter arg", " */", " @SyntheticMember", " @SarlSourceCode(\"\\'d\\'\")", " private final static char $DEFAULT_VALUE$NEW_0 = 'd';", " ", " @DefaultValueUse(\"char\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_0() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int, arg4 : String) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg0, final String arg1, final int arg2, final int arg3, final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$NEW_0 = 4;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final String arg1, final int arg2, final int arg3, final String arg4) {", " this($DEFAULT_VALUE$NEW_0, arg1, arg2, arg3, arg4);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_1() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int, arg1 : String=\"abc\", arg2 : int, arg3 : int, arg4 : String) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(final int arg0, @DefaultValue(\"B1#NEW_0\") final String arg1, final int arg2, final int arg3, final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"abc\\\"\")", " private final static String $DEFAULT_VALUE$NEW_0 = \"abc\";", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final int arg0, final int arg2, final int arg3, final String arg4) {", " this(arg0, $DEFAULT_VALUE$NEW_0, arg2, arg3, arg4);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_2() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int, arg1 : String, arg2 : int=18, arg3 : int, arg4 : String) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(final int arg0, final String arg1, @DefaultValue(\"B1#NEW_0\") final int arg2, final int arg3, final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg2", " */", " @SyntheticMember", " @SarlSourceCode(\"18\")", " private final static int $DEFAULT_VALUE$NEW_0 = 18;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final int arg0, final String arg1, final int arg3, final String arg4) {", " this(arg0, arg1, $DEFAULT_VALUE$NEW_0, arg3, arg4);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_3() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int, arg1 : String, arg2 : int, arg3 : int = 34, arg4 : String) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(final int arg0, final String arg1, final int arg2, @DefaultValue(\"B1#NEW_0\") final int arg3, final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"34\")", " private final static int $DEFAULT_VALUE$NEW_0 = 34;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final int arg0, final String arg1, final int arg2, final String arg4) {", " this(arg0, arg1, arg2, $DEFAULT_VALUE$NEW_0, arg4);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_4() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int, arg1 : String, arg2 : int, arg3 : int, arg4 : String=\"xyz\") {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(final int arg0, final String arg1, final int arg2, final int arg3, @DefaultValue(\"B1#NEW_0\") final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg4", " */", " @SyntheticMember", " @SarlSourceCode(\"\\\"xyz\\\"\")", " private final static String $DEFAULT_VALUE$NEW_0 = \"xyz\";", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final int arg0, final String arg1, final int arg2, final int arg3) {", " this(arg0, arg1, arg2, arg3, $DEFAULT_VALUE$NEW_0);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_5p_0_3() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int=4, arg1 : String, arg2 : int, arg3 : int=56, arg4 : String) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg0, final String arg1, final int arg2, @DefaultValue(\"B1#NEW_1\") final int arg3, final String arg4) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " private final static int $DEFAULT_VALUE$NEW_0 = 4;", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$NEW_1 = 56;", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final String arg1, final int arg2, final String arg4) {", " this($DEFAULT_VALUE$NEW_0, arg1, arg2, $DEFAULT_VALUE$NEW_1, arg4);", " }", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final int arg0, final String arg1, final int arg2, final String arg4) {", " this(arg0, arg1, arg2, $DEFAULT_VALUE$NEW_1, arg4);", " }", " ", " @DefaultValueUse(\"int,java.lang.String,int,int,java.lang.String\")", " @SyntheticMember", " public B1(final String arg1, final int arg2, final int arg3, final String arg4) {", " this($DEFAULT_VALUE$NEW_0, arg1, arg2, arg3, arg4);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_3p_vararg_1() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int, arg1 : int=45, arg2 : int*) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(final int arg0, @DefaultValue(\"B1#NEW_0\") final int arg1, final int... arg2) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$NEW_0 = 45;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public B1(final int arg0, final int... arg2) {", " this(arg0, $DEFAULT_VALUE$NEW_0, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_3p_vararg_0() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int=45, arg1 : int, arg2 : int*) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg0, final int arg1, final int... arg2) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$NEW_0 = 45;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public B1(final int arg1, final int... arg2) {", " this($DEFAULT_VALUE$NEW_0, arg1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_3p_vararg_0_1() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int=45, arg1 : int=56, arg2 : int*) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg0, @DefaultValue(\"B1#NEW_1\") final int arg1, final int... arg2) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$NEW_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$NEW_1 = 56;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public B1(final int... arg2) {", " this($DEFAULT_VALUE$NEW_0, $DEFAULT_VALUE$NEW_1, arg2);", " }", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public B1(final int arg0, final int... arg2) {", " this(arg0, $DEFAULT_VALUE$NEW_1, arg2);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } @Test public void constructor_4p_0_1_2_3() throws Exception { String source = multilineString( "behavior B1 {", " new(arg0 : int=45, arg1 : int=56, arg2 : int=78, arg3 : int=14) {", " super(null) // must be never null in real code", " System.out.println(arg0)", " }", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Behavior;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_BEHAVIOR + ")", "@SuppressWarnings(\"all\")", "public class B1 extends Behavior {", " @DefaultValueSource", " public B1(@DefaultValue(\"B1#NEW_0\") final int arg0, @DefaultValue(\"B1#NEW_1\") final int arg1, @DefaultValue(\"B1#NEW_2\") final int arg2, @DefaultValue(\"B1#NEW_3\") final int arg3) {", " super(null);", " System.out.println(arg0);", " }", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " private final static int $DEFAULT_VALUE$NEW_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " private final static int $DEFAULT_VALUE$NEW_1 = 56;", " ", " /**", " * Default value for the parameter arg2", " */", " @SyntheticMember", " @SarlSourceCode(\"78\")", " private final static int $DEFAULT_VALUE$NEW_2 = 78;", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"14\")", " private final static int $DEFAULT_VALUE$NEW_3 = 14;", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public B1() {", " this($DEFAULT_VALUE$NEW_0, $DEFAULT_VALUE$NEW_1, $DEFAULT_VALUE$NEW_2, $DEFAULT_VALUE$NEW_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public B1(final int arg0) {", " this(arg0, $DEFAULT_VALUE$NEW_1, $DEFAULT_VALUE$NEW_2, $DEFAULT_VALUE$NEW_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public B1(final int arg0, final int arg1) {", " this(arg0, arg1, $DEFAULT_VALUE$NEW_2, $DEFAULT_VALUE$NEW_3);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public B1(final int arg0, final int arg1, final int arg2) {", " this(arg0, arg1, arg2, $DEFAULT_VALUE$NEW_3);", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } } public static class CapacityTest extends AbstractSarlTest { @Inject private CompilationTestHelper compiler; @Test public void capacity() throws Exception { String source = multilineString( "capacity C1 {", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int, arg3 : int=14)", "}" ); String expected = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.AgentTrait;", "import io.sarl.lang.core.Capacity;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_CAPACITY + ")", "@SuppressWarnings(\"all\")", "public interface C1 extends Capacity {", " @DefaultValueSource", " public abstract void myaction(@DefaultValue(\"C1#MYACTION_0\") final int arg0, @DefaultValue(\"C1#MYACTION_1\") final int arg1, final int arg2, @DefaultValue(\"C1#MYACTION_2\") final int arg3);", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " public final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " public final static int $DEFAULT_VALUE$MYACTION_1 = 56;", " ", " /**", " * Default value for the parameter arg3", " */", " @SyntheticMember", " @SarlSourceCode(\"14\")", " public final static int $DEFAULT_VALUE$MYACTION_2 = 14;", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public default void myaction(final int arg2) {", " myaction($DEFAULT_VALUE$MYACTION_0, $DEFAULT_VALUE$MYACTION_1, arg2, $DEFAULT_VALUE$MYACTION_2);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public default void myaction(final int arg0, final int arg2) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_1, arg2, $DEFAULT_VALUE$MYACTION_2);", " }", " ", " @DefaultValueUse(\"int,int,int,int\")", " @SyntheticMember", " public default void myaction(final int arg0, final int arg1, final int arg2) {", " myaction(arg0, arg1, arg2, $DEFAULT_VALUE$MYACTION_2);", " }", " ", " public static class ContextAwareCapacityWrapper<C extends C1> extends Capacity.ContextAwareCapacityWrapper<C> implements C1 {", " public ContextAwareCapacityWrapper(final C capacity, final AgentTrait caller) {", " super(capacity, caller);", " }", " ", " public void myaction(final int arg0, final int arg1, final int arg2, final int arg3) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg0, arg1, arg2, arg3);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction(final int arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction(final int arg0, final int arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg0, arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction(final int arg0, final int arg1, final int arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg0, arg1, arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " }", "}", "" ); this.compiler.assertCompilesTo(source, expected); } } public static class SkillTest extends AbstractSarlTest { @Inject private CompilationTestHelper compiler; @Test public void overridingCapacitySkill() throws Exception { final String expectedC1 = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.AgentTrait;", "import io.sarl.lang.core.Capacity;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_CAPACITY + ")", "@SuppressWarnings(\"all\")", "public interface C1 extends Capacity {", " @DefaultValueSource", " public abstract void myaction(@DefaultValue(\"C1#MYACTION_0\") final int arg0, @DefaultValue(\"C1#MYACTION_1\") final int arg1, final int... arg2);", " ", " /**", " * Default value for the parameter arg0", " */", " @SyntheticMember", " @SarlSourceCode(\"45\")", " public final static int $DEFAULT_VALUE$MYACTION_0 = 45;", " ", " /**", " * Default value for the parameter arg1", " */", " @SyntheticMember", " @SarlSourceCode(\"56\")", " public final static int $DEFAULT_VALUE$MYACTION_1 = 56;", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public default void myaction(final int... arg2) {", " myaction($DEFAULT_VALUE$MYACTION_0, $DEFAULT_VALUE$MYACTION_1, arg2);", " }", " ", " @DefaultValueUse(\"int,int,int*\")", " @SyntheticMember", " public default void myaction(final int arg0, final int... arg2) {", " myaction(arg0, $DEFAULT_VALUE$MYACTION_1, arg2);", " }", " ", " public static class ContextAwareCapacityWrapper<C extends C1> extends Capacity.ContextAwareCapacityWrapper<C> implements C1 {", " public ContextAwareCapacityWrapper(final C capacity, final AgentTrait caller) {", " super(capacity, caller);", " }", " ", " public void myaction(final int arg0, final int arg1, final int... arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg0, arg1, arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction(final int... arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction(final int arg0, final int... arg2) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction(arg0, arg2);", " } finally {", " resetCallerInLocalThread();", " }", " }", " }", "}", "" ); final String expectedS1 = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.Skill;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_SKILL + ")", "@SuppressWarnings(\"all\")", "public class S1 extends Skill implements C1 {", " public void capAction() {", " }", " ", " @DefaultValueSource", " public void myaction(@DefaultValue(\"C1#MYACTION_0\") final int arg0, @DefaultValue(\"C1#MYACTION_1\") final int arg1, final int... arg2) {", " }", " ", " @SyntheticMember", " public S1() {", " super();", " }", " ", " @SyntheticMember", " public S1(final Agent arg0) {", " super(arg0);", " }", "}", "" ); String source = multilineString( "capacity C1 {", " def myaction(arg0 : int=45, arg1 : int=56, arg2 : int*)", "}", "skill S1 implements C1 {", " def capAction {}", " def myaction(arg0 : int, arg1 : int, arg2 : int*) {}", "}" ); this.compiler.compile(source, (r) -> { assertEquals(expectedC1,r.getGeneratedCode("C1")); assertEquals(expectedS1,r.getGeneratedCode("S1")); }); } @Test public void missedActionImplementation() throws Exception { final String expectedC1 = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.AgentTrait;", "import io.sarl.lang.core.Capacity;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_CAPACITY + ")", "@SuppressWarnings(\"all\")", "public interface C1 extends Capacity {", " @DefaultValueSource", " public abstract void myaction1(@DefaultValue(\"C1#MYACTION1_0\") final int a);", " ", " /**", " * Default value for the parameter a", " */", " @SyntheticMember", " @SarlSourceCode(\"4\")", " public final static int $DEFAULT_VALUE$MYACTION1_0 = 4;", " ", " @DefaultValueUse(\"int\")", " @SyntheticMember", " public default void myaction1() {", " myaction1($DEFAULT_VALUE$MYACTION1_0);", " }", " ", " public static class ContextAwareCapacityWrapper<C extends C1> extends Capacity.ContextAwareCapacityWrapper<C> implements C1 {", " public ContextAwareCapacityWrapper(final C capacity, final AgentTrait caller) {", " super(capacity, caller);", " }", " ", " public void myaction1(final int a) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction1(a);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction1() {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction1();", " } finally {", " resetCallerInLocalThread();", " }", " }", " }", "}", "" ); final String expectedC2 = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.DefaultValueUse;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSourceCode;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.AgentTrait;", "import io.sarl.lang.core.Capacity;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_CAPACITY + ")", "@SuppressWarnings(\"all\")", "public interface C2 extends Capacity {", " @DefaultValueSource", " public abstract void myaction2(@DefaultValue(\"C2#MYACTION2_0\") final float b, final boolean c);", " ", " /**", " * Default value for the parameter b", " */", " @SyntheticMember", " @SarlSourceCode(\"6\")", " public final static float $DEFAULT_VALUE$MYACTION2_0 = 6;", " ", " @DefaultValueUse(\"float,boolean\")", " @SyntheticMember", " public default void myaction2(final boolean c) {", " myaction2($DEFAULT_VALUE$MYACTION2_0, c);", " }", " ", " public static class ContextAwareCapacityWrapper<C extends C2> extends Capacity.ContextAwareCapacityWrapper<C> implements C2 {", " public ContextAwareCapacityWrapper(final C capacity, final AgentTrait caller) {", " super(capacity, caller);", " }", " ", " public void myaction2(final float b, final boolean c) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction2(b, c);", " } finally {", " resetCallerInLocalThread();", " }", " }", " ", " public void myaction2(final boolean c) {", " try {", " ensureCallerInLocalThread();", " this.capacity.myaction2(c);", " } finally {", " resetCallerInLocalThread();", " }", " }", " }", "}", "" ); final String expectedS1 = multilineString( "import io.sarl.lang.annotation.DefaultValue;", "import io.sarl.lang.annotation.DefaultValueSource;", "import io.sarl.lang.annotation.SarlElementType;", "import io.sarl.lang.annotation.SarlSpecification;", "import io.sarl.lang.annotation.SyntheticMember;", "import io.sarl.lang.core.Agent;", "import io.sarl.lang.core.Skill;", "", "@SarlSpecification(\"" + SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING + "\")", "@SarlElementType(" + SarlPackage.SARL_SKILL + ")", "@SuppressWarnings(\"all\")", "public class S1 extends Skill implements C1, C2 {", " @DefaultValueSource", " public void myaction1(@DefaultValue(\"C1#MYACTION1_0\") final int x) {", " System.out.println(x);", " }", " ", " @DefaultValueSource", " public void myaction2(@DefaultValue(\"C2#MYACTION2_0\") final float y, final boolean z) {", " System.err.println(y);", " System.err.println(z);", " }", " ", " @SyntheticMember", " public S1() {", " super();", " }", " ", " @SyntheticMember", " public S1(final Agent arg0) {", " super(arg0);", " }", "}", "" ); String source = 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) {", " System.out.println(x);", " }", " def myaction2(y : float, z : boolean) {", " System.err.println(y);", " System.err.println(z);", " }", "}" ); this.compiler.compile(source, (r) -> { assertEquals(expectedC1,r.getGeneratedCode("C1")); assertEquals(expectedC2,r.getGeneratedCode("C2")); assertEquals(expectedS1,r.getGeneratedCode("S1")); }); } } }