Search in sources :

Example 1 with Main

use of org.eclipse.xtext.linking.langATestLanguage.Main in project xtext-core by eclipse.

the class InjectableValidatorTest method testWrongResource.

@Test
public void testWrongResource() throws Exception {
    Main main = LangATestLanguageFactory.eINSTANCE.createMain();
    XMIResource xmiResource = new XMIResourceImpl();
    xmiResource.getContents().add(main);
    assertTrue(languageSpecificValidator.validate(main, new BasicDiagnostic(), null));
    assertTrue(languageSpecificValidator.validate(main, new BasicDiagnostic(), context));
    context.put(AbstractInjectableValidator.CURRENT_LANGUAGE_NAME, xtextResource.getLanguageName());
    assertFalse(languageSpecificValidator.validate(main, new BasicDiagnostic(), context));
    context.clear();
    assertFalse(languageAgnosticValidator.validate(main, new BasicDiagnostic(), null));
    assertFalse(languageAgnosticValidator.validate(main, new BasicDiagnostic(), context));
    context.put(AbstractInjectableValidator.CURRENT_LANGUAGE_NAME, xtextResource.getLanguageName());
    assertFalse(languageAgnosticValidator.validate(main, new BasicDiagnostic(), context));
}
Also used : BasicDiagnostic(org.eclipse.emf.common.util.BasicDiagnostic) XMIResource(org.eclipse.emf.ecore.xmi.XMIResource) Main(org.eclipse.xtext.linking.langATestLanguage.Main) XMIResourceImpl(org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl) Test(org.junit.Test)

Example 2 with Main

use of org.eclipse.xtext.linking.langATestLanguage.Main in project xtext-core by eclipse.

the class CrossRefTest method testGetSingleValuedLinkText.

@Test
public void testGetSingleValuedLinkText() throws Exception {
    XtextResource r = getResourceFromStringAndExpect("type TypeA extends ^extends type ^extends extends ^type", 1);
    Main model = (Main) r.getContents().get(0);
    assertEquals(2, model.getTypes().size());
    Type type = model.getTypes().get(0);
    assertEquals("TypeA", type.getName());
    Type superType = type.getExtends();
    assertEquals("extends", superType.getName());
    String linkText = crossRefSerializer.serializeCrossRef(type, grammar.getTypeAccess().getExtendsTypeCrossReference_2_1_0(), superType, null);
    assertEquals("^extends", linkText);
    type = superType;
    superType = type.getExtends();
    assertTrue(superType.eIsProxy());
    INode node = getCrossReferenceNode(type, GrammarUtil.getReference(grammar.getTypeAccess().getExtendsTypeCrossReference_2_1_0()), superType);
    linkText = crossRefSerializer.serializeCrossRef(type, grammar.getTypeAccess().getExtendsTypeCrossReference_2_1_0(), superType, node);
    assertEquals("^type", linkText);
    Adapter adapter = (Adapter) NodeModelUtils.getNode(type);
    type.eAdapters().remove(adapter);
    linkText = crossRefSerializer.serializeCrossRef(type, grammar.getTypeAccess().getExtendsTypeCrossReference_2_1_0(), superType, null);
    assertNull(linkText);
}
Also used : Type(org.eclipse.xtext.linking.langATestLanguage.Type) INode(org.eclipse.xtext.nodemodel.INode) XtextResource(org.eclipse.xtext.resource.XtextResource) Adapter(org.eclipse.emf.common.notify.Adapter) Main(org.eclipse.xtext.linking.langATestLanguage.Main) Test(org.junit.Test)

Example 3 with Main

use of org.eclipse.xtext.linking.langATestLanguage.Main in project xtext-core by eclipse.

the class CrossRefTest method testOutOfSyncNodeModel.

/* see https://bugs.eclipse.org/bugs/show_bug.cgi?id=287813 */
@Test
public void testOutOfSyncNodeModel() throws Exception {
    XtextResource r = getResourceFromString("type TypeA extends ^TypeB type TypeB ");
    Main model = (Main) r.getContents().get(0);
    Type type = model.getTypes().get(0);
    Type superType = type.getExtends();
    superType.setName("TypeC");
    String linkText = crossRefSerializer.serializeCrossRef(type, grammar.getTypeAccess().getExtendsTypeCrossReference_2_1_0(), superType, null);
    assertEquals("TypeC", linkText);
}
Also used : Type(org.eclipse.xtext.linking.langATestLanguage.Type) XtextResource(org.eclipse.xtext.resource.XtextResource) Main(org.eclipse.xtext.linking.langATestLanguage.Main) Test(org.junit.Test)

Example 4 with Main

use of org.eclipse.xtext.linking.langATestLanguage.Main in project xtext-core by eclipse.

the class CrossRefTest method testGetLinkedObjects.

@Test
public void testGetLinkedObjects() throws Exception {
    XtextResource r = getResourceFromString("type TypeA extends TypeB type TypeB extends TypeA type AnotherType extends TypeA");
    Main model = (Main) r.getParseResult().getRootASTElement();
    ILeafNode leaf = NodeModelUtils.findLeafNodeAtOffset(r.getParseResult().getRootNode(), 6);
    assertEquals(3, model.getTypes().size());
    EObject context = model.getTypes().get(0);
    Assignment asExtends = get(LangATestLanguageGrammarAccess.class).getTypeAccess().getExtendsAssignment_2_1();
    CrossReference xref = (CrossReference) asExtends.getTerminal();
    EReference ref = GrammarUtil.getReference(xref, context.eClass());
    assertEquals(1, getLinkingService().getLinkedObjects(context, ref, leaf).size());
}
Also used : Assignment(org.eclipse.xtext.Assignment) ILeafNode(org.eclipse.xtext.nodemodel.ILeafNode) EObject(org.eclipse.emf.ecore.EObject) InternalEObject(org.eclipse.emf.ecore.InternalEObject) CrossReference(org.eclipse.xtext.CrossReference) XtextResource(org.eclipse.xtext.resource.XtextResource) Main(org.eclipse.xtext.linking.langATestLanguage.Main) EReference(org.eclipse.emf.ecore.EReference) Test(org.junit.Test)

Example 5 with Main

use of org.eclipse.xtext.linking.langATestLanguage.Main in project xtext-core by eclipse.

the class CrossRefTest method testCrossReferenceValueConverter.

/* see https://bugs.eclipse.org/bugs/show_bug.cgi?id=298506 */
@Test
public void testCrossReferenceValueConverter() throws Exception {
    Resource r = get(XtextResourceSet.class).createResource(URI.createURI("test." + getCurrentFileExtension()));
    Main main = LangATestLanguageFactory.eINSTANCE.createMain();
    Type ele = LangATestLanguageFactory.eINSTANCE.createType();
    r.getContents().add(main);
    main.getTypes().add(ele);
    ele.setName("type");
    ele.setExtends(ele);
    assertEquals("type ^type extends ^type", getSerializer().serialize(main));
}
Also used : Type(org.eclipse.xtext.linking.langATestLanguage.Type) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) LazyLinkingResource(org.eclipse.xtext.linking.lazy.LazyLinkingResource) XtextResource(org.eclipse.xtext.resource.XtextResource) Resource(org.eclipse.emf.ecore.resource.Resource) Main(org.eclipse.xtext.linking.langATestLanguage.Main) Test(org.junit.Test)

Aggregations

Main (org.eclipse.xtext.linking.langATestLanguage.Main)21 Test (org.junit.Test)18 XtextResource (org.eclipse.xtext.resource.XtextResource)12 Type (org.eclipse.xtext.linking.langATestLanguage.Type)9 EObject (org.eclipse.emf.ecore.EObject)6 InternalEObject (org.eclipse.emf.ecore.InternalEObject)4 Resource (org.eclipse.emf.ecore.resource.Resource)3 INode (org.eclipse.xtext.nodemodel.INode)3 IReferenceDescription (org.eclipse.xtext.resource.IReferenceDescription)3 XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)3 BasicDiagnostic (org.eclipse.emf.common.util.BasicDiagnostic)2 EReference (org.eclipse.emf.ecore.EReference)2 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)2 Assignment (org.eclipse.xtext.Assignment)2 CrossReference (org.eclipse.xtext.CrossReference)2 LangATestLanguageStandaloneSetup (org.eclipse.xtext.linking.LangATestLanguageStandaloneSetup)2 IResourceDescription (org.eclipse.xtext.resource.IResourceDescription)2 StorageAwareResource (org.eclipse.xtext.resource.persistence.StorageAwareResource)2 StringInputStream (org.eclipse.xtext.util.StringInputStream)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1