Search in sources :

Example 56 with EClass

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

the class Xtext2EcoreTransformerTest method testFeaturesAndInheritanceOfNestedRuleCalls.

@Test
public void testFeaturesAndInheritanceOfNestedRuleCalls() 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;
    grammar = (_grammar + " RuleA: ((RuleB|RuleC featureC1=ID) featureBC=ID | (RuleC|RuleD featureD1=ID) featureCD=ID) featureA=ID;");
    String _grammar_1 = grammar;
    grammar = (_grammar_1 + " RuleB: featureB2=ID;");
    String _grammar_2 = grammar;
    grammar = (_grammar_2 + " RuleC: featureC2=ID;");
    String _grammar_3 = grammar;
    grammar = (_grammar_3 + " RuleD: featureD2=ID;");
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(4, ePackage.getEClassifiers().size());
    EClassifier _type = this.<EClassifier>type(ePackage, "RuleA");
    EClass ruleA = ((EClass) _type);
    Assert.assertNotNull(ruleA);
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "RuleB");
    EClass ruleB = ((EClass) _type_1);
    Assert.assertNotNull(ruleB);
    EClassifier _type_2 = this.<EClassifier>type(ePackage, "RuleC");
    EClass ruleC = ((EClass) _type_2);
    Assert.assertNotNull(ruleC);
    EClassifier _type_3 = this.<EClassifier>type(ePackage, "RuleD");
    EClass ruleD = ((EClass) _type_3);
    Assert.assertNotNull(ruleD);
    Assert.assertTrue(ruleA.getESuperTypes().isEmpty());
    Assert.assertEquals(1, ruleB.getESuperTypes().size());
    Assert.assertEquals(ruleA, IterableExtensions.<EClass>head(ruleB.getESuperTypes()));
    Assert.assertEquals(1, ruleC.getESuperTypes().size());
    Assert.assertEquals(ruleA, IterableExtensions.<EClass>head(ruleC.getESuperTypes()));
    Assert.assertEquals(1, ruleD.getESuperTypes().size());
    Assert.assertEquals(ruleA, IterableExtensions.<EClass>head(ruleD.getESuperTypes()));
    Assert.assertEquals(1, ruleA.getEAttributes().size());
    this.assertAttributeConfiguration(ruleA, 0, "featureA", "EString");
    Assert.assertEquals(2, ruleB.getEAttributes().size());
    this.assertAttributeConfiguration(ruleB, 0, "featureBC", "EString");
    this.assertAttributeConfiguration(ruleB, 1, "featureB2", "EString");
    Assert.assertEquals(4, ruleC.getEAttributes().size());
    this.assertAttributeConfiguration(ruleC, 0, "featureC1", "EString");
    this.assertAttributeConfiguration(ruleC, 1, "featureBC", "EString");
    this.assertAttributeConfiguration(ruleC, 2, "featureCD", "EString");
    this.assertAttributeConfiguration(ruleC, 3, "featureC2", "EString");
    Assert.assertEquals(3, ruleD.getEAttributes().size());
    this.assertAttributeConfiguration(ruleD, 0, "featureD1", "EString");
    this.assertAttributeConfiguration(ruleD, 1, "featureCD", "EString");
    this.assertAttributeConfiguration(ruleD, 2, "featureD2", "EString");
}
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 57 with EClass

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

the class Xtext2EcoreTransformerTest method testBug346685_a02.

@Test
public void testBug346685_a02() 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;
    grammar = (_grammar + " RuleA returns TypeA: RuleB ({TypeC.x=current} \'x\' | {TypeD.x=current} \'y\') name+=STRING;");
    String _grammar_1 = grammar;
    grammar = (_grammar_1 + " RuleB returns TypeB: {TypeB} \'ignore\';");
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(4, ePackage.getEClassifiers().size());
    EClassifier _type = this.<EClassifier>type(ePackage, "TypeA");
    EClass typeA = ((EClass) _type);
    Assert.assertNotNull(typeA);
    Assert.assertTrue(this.features(typeA).isEmpty());
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "TypeB");
    EClass typeB = ((EClass) _type_1);
    Assert.assertNotNull(typeB);
    Assert.assertTrue(this.features(typeB).isEmpty());
    EClassifier _type_2 = this.<EClassifier>type(ePackage, "TypeC");
    EClass typeC = ((EClass) _type_2);
    Assert.assertNotNull(typeC);
    Assert.assertNotNull(this.<EStructuralFeature>feature(typeC, "x"));
    Assert.assertNotNull(this.<EStructuralFeature>feature(typeC, "name"));
    Assert.assertEquals(2, this.features(typeC).size());
    EClassifier _type_3 = this.<EClassifier>type(ePackage, "TypeD");
    EClass typeD = ((EClass) _type_3);
    Assert.assertNotNull(typeD);
    Assert.assertNotNull(this.<EStructuralFeature>feature(typeD, "x"));
    Assert.assertNotNull(this.<EStructuralFeature>feature(typeD, "name"));
    Assert.assertEquals(2, this.features(typeD).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 58 with EClass

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

the class Xtext2EcoreTransformerTest method testSimpleHierarchy.

@Test
public void testSimpleHierarchy() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals generate test \'http://test\' RuleA: RuleB; RuleB: featureB= INT;");
    final String grammar = _builder.toString();
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(2, ePackage.getEClassifiers().size());
    EClassifier _type = this.<EClassifier>type(ePackage, "RuleA");
    EClass ruleA = ((EClass) _type);
    Assert.assertNotNull(ruleA);
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "RuleB");
    EClass ruleB = ((EClass) _type_1);
    Assert.assertNotNull(ruleB);
    Assert.assertTrue(ruleA.getESuperTypes().isEmpty());
    Assert.assertEquals(1, ruleB.getESuperTypes().size());
    EClass superClass = IterableExtensions.<EClass>head(ruleB.getESuperTypes());
    Assert.assertEquals(ruleA, superClass);
}
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 59 with EClass

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

the class Xtext2EcoreTransformerTest method testAssignedCrossReference.

@Test
public void testAssignedCrossReference() throws Exception {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("grammar test with org.eclipse.xtext.common.Terminals generate test \'http://test\' RuleA: refA1=[TypeB] refA2+=[TypeB|RuleB] simpleFeature=ID; RuleB returns TypeB: featureB=ID;");
    final String grammar = _builder.toString();
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    Assert.assertEquals(2, ePackage.getEClassifiers().size());
    EClassifier _type = this.<EClassifier>type(ePackage, "RuleA");
    EClass ruleA = ((EClass) _type);
    Assert.assertNotNull(ruleA);
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "TypeB");
    EClass typeB = ((EClass) _type_1);
    Assert.assertNotNull(typeB);
    Assert.assertEquals(1, ruleA.getEAttributes().size());
    this.assertAttributeConfiguration(ruleA, 0, "simpleFeature", "EString");
    Assert.assertEquals(2, ruleA.getEReferences().size());
    this.assertReferenceConfiguration(ruleA, 0, "refA1", "TypeB", false, 0, 1);
    this.assertReferenceConfiguration(ruleA, 1, "refA2", "TypeB", false, 0, (-1));
    Assert.assertEquals(1, typeB.getEAttributes().size());
    this.assertAttributeConfiguration(typeB, 0, "featureB", "EString");
}
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 60 with EClass

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

the class Xtext2EcoreTransformerTest method testBug390326_02.

@Test
public void testBug390326_02() 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 {C.a=current} c = A)*;\n");
    String _grammar_2 = grammar;
    grammar = (_grammar_2 + " C returns A: value=\'c\';\n");
    String _grammar_3 = grammar;
    grammar = (_grammar_3 + " A: value=\'a\';\n");
    EPackage ePackage = this.getEPackageFromGrammar(grammar);
    EClassifier _type = this.<EClassifier>type(ePackage, "B");
    EClass clazzB = ((EClass) _type);
    EStructuralFeature feature = this.<EStructuralFeature>feature(clazzB, "a");
    Assert.assertEquals("Model", feature.getEType().getName());
    EClassifier _type_1 = this.<EClassifier>type(ePackage, "C");
    EClass clazzC = ((EClass) _type_1);
    EStructuralFeature featureC_A = this.<EStructuralFeature>feature(clazzC, "a");
    Assert.assertEquals("B", featureC_A.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)

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