Search in sources :

Example 66 with EClass

use of org.eclipse.emf.ecore.EClass in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testBug390326.

@Test
public void testBug390326() throws Exception {
    String grammar = "grammar test with org.eclipse.xtext.common.Terminals";
    String _grammar = grammar;
    grammar = (_grammar + " generate test \'http://test\'");
    String _grammar_1 = grammar;
    grammar = (_grammar_1 + " Model: A ({B.a = current} b = A)*;\n");
    String _grammar_2 = grammar;
    grammar = (_grammar_2 + " A: value=ID;\n");
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    EClassifier _type = this.<EClassifier>type(ePackage, "B");
    EClass clazz = ((EClass) _type);
    EStructuralFeature feature = this.<EStructuralFeature>feature(clazz, "a");
    Assert.assertEquals("Model", feature.getEType().getName());
}
Also used : EClass(org.eclipse.emf.ecore.EClass) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) EClassifier(org.eclipse.emf.ecore.EClassifier) EPackage(org.eclipse.emf.ecore.EPackage) Test(org.junit.Test)

Example 67 with EClass

use of org.eclipse.emf.ecore.EClass in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testDiamondHierarchy.

@Test
public void testDiamondHierarchy() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals generate test \'http://test\' Model: name=ID value=SubNamed1 otherValue=SubNamed2 thirdValue=SubNamed3;Named: SubNamed1 | SubNamed2 | SubNamed3;SubNamed1: ConcreteNamed1 | ConcreteNamed2;SubNamed2: ConcreteNamed2 | ConcreteNamed3;SubNamed3: ConcreteNamed1 | ConcreteNamed3;ConcreteNamed1: name=ID bar=ID foo=ID a=ID;ConcreteNamed2: name=ID bar=ID zonk=ID b=ID;ConcreteNamed3: name=ID foo=ID zonk=ID c=ID;");
    final String grammar = _builder.toString();
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(8, ePackage.getEClassifiers().size());
    final EClassifier classifier = this.<EClassifier>type(ePackage, "Named");
    Assert.assertNotNull(classifier);
    EClass named = ((EClass) classifier);
    EStructuralFeature feature = this.<EStructuralFeature>feature(named, "name");
    Assert.assertNotNull("name", feature);
    Assert.assertEquals("named", 1, this.features(named).size());
    EClassifier _type = this.<EClassifier>type(ePackage, "SubNamed1");
    EClass subNamed1 = ((EClass) _type);
    Assert.assertNotNull("subNamed1", subNamed1);
    Assert.assertEquals(1, subNamed1.getESuperTypes().size());
    Assert.assertNotNull("bar", this.<EStructuralFeature>feature(subNamed1, "bar"));
    Assert.assertEquals("subNamed1", 1, this.features(subNamed1).size());
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "SubNamed2");
    EClass subNamed2 = ((EClass) _type_1);
    Assert.assertNotNull("subNamed2", subNamed2);
    Assert.assertEquals(1, subNamed2.getESuperTypes().size());
    Assert.assertNotNull("bar", this.<EStructuralFeature>feature(subNamed2, "zonk"));
    Assert.assertEquals("subNamed2", 1, this.features(subNamed2).size());
    EClassifier _type_2 = this.<EClassifier>type(ePackage, "SubNamed3");
    EClass subNamed3 = ((EClass) _type_2);
    Assert.assertNotNull("subNamed3", subNamed3);
    Assert.assertEquals(1, subNamed3.getESuperTypes().size());
    Assert.assertNotNull("bar", this.<EStructuralFeature>feature(subNamed3, "foo"));
    Assert.assertEquals("subNamed3", 1, this.features(subNamed3).size());
    EClassifier _type_3 = this.<EClassifier>type(ePackage, "ConcreteNamed1");
    EClass concreteNamed1 = ((EClass) _type_3);
    Assert.assertNotNull("concreteNamed1", concreteNamed1);
    Assert.assertEquals("concreteNamed1", 2, concreteNamed1.getESuperTypes().size());
    Assert.assertTrue(concreteNamed1.getESuperTypes().contains(subNamed1));
    Assert.assertTrue(concreteNamed1.getESuperTypes().contains(subNamed3));
    Assert.assertNotNull("a", this.<EStructuralFeature>feature(concreteNamed1, "a"));
    Assert.assertEquals("concreteNamed1", 1, this.features(concreteNamed1).size());
    EClassifier _type_4 = this.<EClassifier>type(ePackage, "ConcreteNamed2");
    EClass concreteNamed2 = ((EClass) _type_4);
    Assert.assertNotNull("concreteNamed2", concreteNamed2);
    Assert.assertEquals("concreteNamed2", 2, concreteNamed2.getESuperTypes().size());
    Assert.assertTrue(concreteNamed2.getESuperTypes().contains(subNamed1));
    Assert.assertTrue(concreteNamed2.getESuperTypes().contains(subNamed2));
    Assert.assertNotNull("b", this.<EStructuralFeature>feature(concreteNamed2, "b"));
    Assert.assertEquals("concreteNamed2", 1, this.features(concreteNamed2).size());
    EClassifier _type_5 = this.<EClassifier>type(ePackage, "ConcreteNamed3");
    EClass concreteNamed3 = ((EClass) _type_5);
    Assert.assertNotNull("concreteNamed3", concreteNamed3);
    Assert.assertEquals("concreteNamed3", 2, concreteNamed3.getESuperTypes().size());
    Assert.assertTrue(concreteNamed3.getESuperTypes().contains(subNamed2));
    Assert.assertTrue(concreteNamed3.getESuperTypes().contains(subNamed3));
    Assert.assertNotNull("c", this.<EStructuralFeature>feature(concreteNamed3, "c"));
    Assert.assertEquals("concreteNamed3", 1, this.features(concreteNamed3).size());
}
Also used : EClass(org.eclipse.emf.ecore.EClass) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) EClassifier(org.eclipse.emf.ecore.EClassifier) EPackage(org.eclipse.emf.ecore.EPackage) Test(org.junit.Test)

Example 68 with EClass

use of org.eclipse.emf.ecore.EClass in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testExpressionLikeLangauge.

@Test
public void testExpressionLikeLangauge() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals generate test \'http://test\'");
    String grammar = _builder.toString();
    String _grammar = grammar;
    StringConcatenation _builder_1 = new StringConcatenation();
    _builder_1.append(" ");
    _builder_1.append("Ex :\tAtom  ({ChainExpression.left+=current} operator=(\'+\'|\'-\'|\'*\'|\'/\') right=Atom )*;Atom returns Ex :   Number |  \'(\' Ex \')\';Number : value=INT;");
    grammar = (_grammar + _builder_1);
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    EClassifier _type = this.<EClassifier>type(ePackage, "Ex");
    EClass classifier = ((EClass) _type);
    Assert.assertEquals(0, this.features(classifier).size());
}
Also used : EClass(org.eclipse.emf.ecore.EClass) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) EClassifier(org.eclipse.emf.ecore.EClassifier) EPackage(org.eclipse.emf.ecore.EPackage) Test(org.junit.Test)

Example 69 with EClass

use of org.eclipse.emf.ecore.EClass in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testBug296496_02.

@Test
public void testBug296496_02() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals");
    _builder.newLine();
    _builder.append("import \"classpath:/org/eclipse/xtext/enumrules/enums.ecore\"");
    _builder.newLine();
    _builder.append("generate myDsl \"http://example.xtext.org/MyDsl\"");
    _builder.newLine();
    _builder.append("CreatedType:");
    _builder.newLine();
    _builder.append("  ");
    _builder.append("enumFeature=ExistingEnum otherEnumFeature=ExistingEnum;");
    _builder.newLine();
    _builder.append("enum ExistingEnum:");
    _builder.newLine();
    _builder.append("  ");
    _builder.append("SameName | OverriddenLiteral = \"overridden\" | DifferentName;");
    _builder.newLine();
    final String grammarAsString = _builder.toString();
    final XtextResource resource = this.getResourceFromStringAndExpect(grammarAsString, 0);
    Assert.assertTrue(resource.getErrors().toString(), resource.getErrors().isEmpty());
    EObject _head = IterableExtensions.<EObject>head(resource.getContents());
    final Grammar grammar = ((Grammar) _head);
    AbstractMetamodelDeclaration _get = grammar.getMetamodelDeclarations().get(1);
    GeneratedMetamodel generatedMetamodel = ((GeneratedMetamodel) _get);
    Assert.assertEquals("myDsl", generatedMetamodel.getName());
    EClassifier _type = this.<EClassifier>type(generatedMetamodel.getEPackage(), "CreatedType");
    EClass createdType = ((EClass) _type);
    Assert.assertEquals(this.<EStructuralFeature>feature(createdType, "enumFeature").getEType(), this.<EStructuralFeature>feature(createdType, "otherEnumFeature").getEType());
}
Also used : GeneratedMetamodel(org.eclipse.xtext.GeneratedMetamodel) EClass(org.eclipse.emf.ecore.EClass) EObject(org.eclipse.emf.ecore.EObject) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) EClassifier(org.eclipse.emf.ecore.EClassifier) XtextResource(org.eclipse.xtext.resource.XtextResource) Grammar(org.eclipse.xtext.Grammar) AbstractMetamodelDeclaration(org.eclipse.xtext.AbstractMetamodelDeclaration) Test(org.junit.Test)

Example 70 with EClass

use of org.eclipse.emf.ecore.EClass in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testFeaturesAndInheritanceOfActions01.

@Test
public void testFeaturesAndInheritanceOfActions01() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals generate test \'http://test\' RuleA: ({Add.a=current} \'+\'|{Sub.a=current} \'-\') featureAS=ID;");
    final String grammar = _builder.toString();
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(3, ePackage.getEClassifiers().size());
    EClassifier _type = this.<EClassifier>type(ePackage, "RuleA");
    EClass ruleA = ((EClass) _type);
    Assert.assertNotNull(ruleA);
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "Add");
    EClass add = ((EClass) _type_1);
    Assert.assertNotNull(add);
    EClassifier _type_2 = this.<EClassifier>type(ePackage, "Sub");
    EClass sub = ((EClass) _type_2);
    Assert.assertNotNull(sub);
    Assert.assertTrue(ruleA.getESuperTypes().isEmpty());
    Assert.assertEquals(1, add.getESuperTypes().size());
    Assert.assertEquals(ruleA, IterableExtensions.<EClass>head(add.getESuperTypes()));
    Assert.assertEquals(1, sub.getESuperTypes().size());
    Assert.assertEquals(ruleA, IterableExtensions.<EClass>head(sub.getESuperTypes()));
    Assert.assertEquals(1, ruleA.getEAttributes().size());
    this.assertAttributeConfiguration(ruleA, 0, "featureAS", "EString");
    Assert.assertEquals(1, ruleA.getEReferences().size());
    this.assertReferenceConfiguration(ruleA, 0, "a", "RuleA", true, 0, 1);
    Assert.assertEquals(0, add.getEAttributes().size());
    Assert.assertEquals(0, add.getEReferences().size());
    Assert.assertEquals(0, sub.getEAttributes().size());
    Assert.assertEquals(0, sub.getEReferences().size());
}
Also used : EClass(org.eclipse.emf.ecore.EClass) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) EClassifier(org.eclipse.emf.ecore.EClassifier) EPackage(org.eclipse.emf.ecore.EPackage) Test(org.junit.Test)

Aggregations

EClass (org.eclipse.emf.ecore.EClass)205 Test (org.junit.Test)99 EPackage (org.eclipse.emf.ecore.EPackage)70 EClassifier (org.eclipse.emf.ecore.EClassifier)67 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)43 EObject (org.eclipse.emf.ecore.EObject)35 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)27 Resource (org.eclipse.emf.ecore.resource.Resource)23 EReference (org.eclipse.emf.ecore.EReference)22 IEObjectDescription (org.eclipse.xtext.resource.IEObjectDescription)16 ISerializationContext (org.eclipse.xtext.serializer.ISerializationContext)13 ParserRule (org.eclipse.xtext.ParserRule)12 QualifiedName (org.eclipse.xtext.naming.QualifiedName)12 InternalEObject (org.eclipse.emf.ecore.InternalEObject)11 StringConcatenationClient (org.eclipse.xtend2.lib.StringConcatenationClient)11 IScope (org.eclipse.xtext.scoping.IScope)11 ArrayList (java.util.ArrayList)10 AbstractRule (org.eclipse.xtext.AbstractRule)10 List (java.util.List)9 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)9