use of org.eclipse.xtext.linking.langATestLanguage.Type in project xtext-core by eclipse.
the class ResourceValidatorImplTest method setUp.
@Override
public void setUp() throws Exception {
super.setUp();
with(new LangATestLanguageStandaloneSetup());
EValidator.Registry.INSTANCE.put(LangATestLanguagePackage.eINSTANCE, new EValidator() {
@Override
public boolean validate(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) {
if (eObject instanceof Type) {
String name = ((Type) eObject).getName();
if (name.equals("Foo"))
diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, "", 12, "Foo", null));
if (name.equals("Bar"))
diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING, "", 12, "Foo", null));
}
return true;
}
@Override
public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) {
return validate(eObject, diagnostics, context);
}
@Override
public boolean validate(EDataType eDataType, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) {
return false;
}
});
}
use of org.eclipse.xtext.linking.langATestLanguage.Type 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);
}
use of org.eclipse.xtext.linking.langATestLanguage.Type 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);
}
use of org.eclipse.xtext.linking.langATestLanguage.Type in project xtext-core by eclipse.
the class CrossRefTest method testGetMultiValuedLinkText.
@Test
public void testGetMultiValuedLinkText() throws Exception {
with(LazyLinkingTestLanguageStandaloneSetup.class);
crossRefSerializer = get(ICrossReferenceSerializer.class);
final LazyLinkingTestLanguageGrammarAccess g = (LazyLinkingTestLanguageGrammarAccess) get(IGrammarAccess.class);
final XtextResource r = CrossRefTest.this.getResourceFromStringAndExpect("type TypeA {} type TypeB { TypeA TypeC TypeB p1; }", 1);
LogCapture log = LoggingTester.captureLogging(Level.ERROR, LazyLinkingResource.class, new Runnable() {
@Override
public void run() {
Model model = (Model) r.getContents().get(0);
assertEquals(2, model.getTypes().size());
org.eclipse.xtext.linking.lazy.lazyLinking.Type type = model.getTypes().get(1);
assertEquals("TypeB", type.getName());
assertEquals(1, type.getProperties().size());
Property prop = type.getProperties().get(0);
assertEquals("p1", prop.getName());
assertEquals(3, prop.getType().size());
org.eclipse.xtext.linking.lazy.lazyLinking.Type propType = prop.getType().get(0);
assertFalse(propType.eIsProxy());
String linkText = crossRefSerializer.serializeCrossRef(prop, g.getPropertyAccess().getTypeTypeCrossReference_0_0(), propType, null);
assertEquals("TypeA", linkText);
propType = prop.getType().get(1);
assertTrue(propType.eIsProxy());
INode node = getCrossReferenceNode(prop, GrammarUtil.getReference(g.getPropertyAccess().getTypeTypeCrossReference_0_0()), propType);
linkText = crossRefSerializer.serializeCrossRef(prop, g.getPropertyAccess().getTypeTypeCrossReference_0_0(), propType, node);
assertEquals("TypeC", linkText);
propType = prop.getType().get(2);
assertFalse(propType.eIsProxy());
node = getCrossReferenceNode(prop, GrammarUtil.getReference(g.getPropertyAccess().getTypeTypeCrossReference_0_0()), propType);
linkText = crossRefSerializer.serializeCrossRef(prop, g.getPropertyAccess().getTypeTypeCrossReference_0_0(), propType, null);
assertEquals("TypeB", linkText);
Adapter adapter = (Adapter) NodeModelUtils.getNode(prop);
prop.eAdapters().remove(adapter);
propType = prop.getType().get(1);
assertTrue(propType.eIsProxy());
linkText = crossRefSerializer.serializeCrossRef(prop, g.getPropertyAccess().getTypeTypeCrossReference_0_0(), propType, null);
assertNull(linkText);
}
});
log.assertNumberOfLogEntries(2);
}
use of org.eclipse.xtext.linking.langATestLanguage.Type 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));
}
Aggregations