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());
}
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());
}
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());
}
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());
}
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());
}
Aggregations