/*
* 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"));
});
}
}
}