/* * Copyright (C) 2014-2017 the original authors or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.sarl.lang.tests.general.parsing.oop; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.eclipse.xtext.common.types.JvmVisibility; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; import io.sarl.lang.sarl.SarlAgent; import io.sarl.lang.sarl.SarlBehavior; import io.sarl.lang.sarl.SarlClass; import io.sarl.lang.sarl.SarlEnumeration; import io.sarl.lang.sarl.SarlPackage; import io.sarl.lang.sarl.SarlScript; import io.sarl.lang.sarl.SarlSkill; import io.sarl.tests.api.AbstractSarlTest; /** * @author $Author: sgalland$ * @version $Name$ $Revision$ $Date$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ @RunWith(Suite.class) @SuiteClasses({ EnumerationParsingTest.TopEnumerationTest.class, EnumerationParsingTest.InsideClassTest.class, EnumerationParsingTest.InsideAgentTest.class, EnumerationParsingTest.InsideBehaviorTest.class, EnumerationParsingTest.InsideSkillTest.class, }) @SuppressWarnings("all") public class EnumerationParsingTest { public static class TopEnumerationTest extends AbstractSarlTest { protected SarlEnumeration getEnumeration(SarlScript script) { return (SarlEnumeration) script.getXtendTypes().get(0); } @Test public void classmodifier_public() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public enum E1 { CST1 }"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertFalse(enumeration.isStatic()); } @Test public void classmodifier_none() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "enum E1 { CST1 }"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertFalse(enumeration.isStatic()); } @Test public void classmodifier_private() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "private enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_protected() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "protected enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "package enum E1 { CST1 }"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.DEFAULT, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertFalse(enumeration.isStatic()); } @Test public void classmodifier_abstract() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "abstract enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_static() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "static enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_dispatch() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "dispatch enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "final enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_strictfp() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "strictfp enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_native() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "native enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_volatile() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "volatile enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_synchronized() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "synchronized enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_transient() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "transient enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public & package are permitted"); } @Test public void classmodifier_abstract_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "abstract final enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "The enum E1 can either be abstract or final, not both"); } @Test public void classmodifier_public_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public private enum E1 { CST1 }"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "The enum E1 can only set one of public / package / protected / private"); } } public static class InsideClassTest extends AbstractSarlTest { protected SarlEnumeration getEnumeration(SarlScript script) { SarlClass enclosing = (SarlClass) script.getXtendTypes().get(0); return (SarlEnumeration) enclosing.getMembers().get(0); } @Test public void classmodifier_public() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " public enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_none() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_private() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " private enum E1 { CST1 }", "}"), false); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PRIVATE, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_protected() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " protected enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " package enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.DEFAULT, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_abstract() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " abstract enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_static() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " static enum E1 { CST1 }", "}"), false); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_dispatch() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " dispatch enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " final enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_strictfp() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " strictfp enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_native() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " native enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_volatile() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " volatile enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_synchronized() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " synchronized enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_transient() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " transient enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_public_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public class EnclosingClass {", " public private enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "The enum E1 can only set one of public / package / protected / private"); } } public static class InsideAgentTest extends AbstractSarlTest { protected SarlEnumeration getEnumeration(SarlScript script) { SarlAgent enclosing = (SarlAgent) script.getXtendTypes().get(0); return (SarlEnumeration) enclosing.getMembers().get(0); } @Test public void classmodifier_public() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " public enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_none() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_private() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " private enum E1 { CST1 }", "}"), false); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PRIVATE, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_protected() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " protected enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " package enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.DEFAULT, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_abstract() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " abstract enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_static() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " static enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_dispatch() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " dispatch enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " final enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_strictfp() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " strictfp enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_native() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " native enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_volatile() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " volatile enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_synchronized() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " synchronized enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_transient() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " transient enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER); } @Test public void classmodifier_public_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public agent EnclosingAgent {", " public private enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "public / package / protected / private"); } } public static class InsideBehaviorTest extends AbstractSarlTest { protected SarlEnumeration getEnumeration(SarlScript script) { SarlBehavior enclosing = (SarlBehavior) script.getXtendTypes().get(0); return (SarlEnumeration) enclosing.getMembers().get(0); } @Test public void classmodifier_public() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " public enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_none() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_private() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " private enum E1 { CST1 }", "}"), false); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PRIVATE, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_protected() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " protected enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " package enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.DEFAULT, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_abstract() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " abstract enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_static() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " static enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_dispatch() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " dispatch enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " final enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_strictfp() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " strictfp enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_native() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " native enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_volatile() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " volatile enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_synchronized() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " synchronized enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_transient() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " transient enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_public_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public behavior EnclosingBehavior {", " public private enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "The enum E1 can only set one of public / package / protected / private"); } } public static class InsideSkillTest extends AbstractSarlTest { protected SarlEnumeration getEnumeration(SarlScript script) { SarlSkill enclosing = (SarlSkill) script.getXtendTypes().get(1); return (SarlEnumeration) enclosing.getMembers().get(0); } @Test public void classmodifier_public() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " public enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_none() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_private() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " private enum E1 { CST1 }", "}"), false); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PRIVATE, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_protected() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " protected enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PROTECTED, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " package enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.DEFAULT, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_abstract() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " abstract enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_static() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " static enum E1 { CST1 }", "}"), true); assertEquals("io.sarl.lang.tests.test", mas.getPackage()); SarlEnumeration enumeration = getEnumeration(mas); assertNotNull(enumeration); // assertEquals("E1", enumeration.getName()); assertEquals(JvmVisibility.PUBLIC, enumeration.getVisibility()); assertEquals(1, enumeration.getMembers().size()); assertFalse(enumeration.isAnonymous()); assertTrue(enumeration.isFinal()); assertFalse(enumeration.isLocal()); assertTrue(enumeration.isStatic()); } @Test public void classmodifier_dispatch() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " dispatch enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_final() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " final enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_strictfp() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " strictfp enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_native() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " native enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_volatile() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " volatile enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_synchronized() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " synchronized enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_transient() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " transient enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "Illegal modifier for the enum E1; only public, package, protected, private & static are permitted"); } @Test public void classmodifier_public_package() throws Exception { SarlScript mas = file(multilineString( "package io.sarl.lang.tests.test", "public capacity C1 { }", "public skill EnclosingSkill implements C1 {", " public private enum E1 { CST1 }", "}"), false); validate(mas).assertError( SarlPackage.eINSTANCE.getSarlEnumeration(), org.eclipse.xtend.core.validation.IssueCodes.INVALID_MODIFIER, "The enum E1 can only set one of public / package / protected / private"); } } }