From a6128c3666d946c15e2e8730910c2a7554080e71 Mon Sep 17 00:00:00 2001 From: sefftinge Date: Wed, 8 Oct 2008 12:13:54 +0000 Subject: [PATCH] applied patch from bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=248463 --- .../reconstr/ComplexReconstrTest.java | 7 ++-- .../reconstr/SimpleReconstrTest.java | 33 +++++++++++-------- .../WhitespacePreservingCallbackTest.java | 19 ++++++----- .../Xtext2EcoreTransformerTests.java | 12 +++++++ 4 files changed, 47 insertions(+), 24 deletions(-) diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/ComplexReconstrTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/ComplexReconstrTest.java index 873f56142..4ed33f20b 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/ComplexReconstrTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/ComplexReconstrTest.java @@ -8,6 +8,8 @@ *******************************************************************************/ package org.eclipse.xtext.parsetree.reconstr; +import java.io.ByteArrayOutputStream; + import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; @@ -55,10 +57,11 @@ public class ComplexReconstrTest extends AbstractGeneratorTest { EObject result = (EObject) getModel(model); System.out.println(EmfFormater.objToStr(result, "")); IParseTreeConstructor con = getParseTreeConstructor(); - WhitespacePreservingCallback callback = new WhitespacePreservingCallback( + ByteArrayOutputStream out = new ByteArrayOutputStream(); + WhitespacePreservingCallback callback = new WhitespacePreservingCallback(out, getValueConverterService()); con.update(result, callback); - return callback.toString(); + return out.toString(); } public void testNormalizableCompositeNodesIncluded() throws Exception { diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/SimpleReconstrTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/SimpleReconstrTest.java index 069e692e0..92c6397c3 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/SimpleReconstrTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/SimpleReconstrTest.java @@ -8,7 +8,10 @@ *******************************************************************************/ package org.eclipse.xtext.parsetree.reconstr; +import java.io.ByteArrayOutputStream; + import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parsetree.NodeUtil; import org.eclipse.xtext.parsetree.reconstr.callbacks.WhitespacePreservingCallback; import org.eclipse.xtext.testlanguages.SimpleExpressionsStandaloneSetup; import org.eclipse.xtext.tests.AbstractGeneratorTest; @@ -25,29 +28,31 @@ public class SimpleReconstrTest extends AbstractGeneratorTest { String model = "( a b ) !"; assertEquals(model, parseAndSerialize(model)); } - - // FIXME: make this work again -// public void testFollowingHiddenTokens() throws Exception { -// String model = "a "; -// assertEquals(model, parseAndSerialize(model)); -// } + public void testFollowingHiddenTokens() throws Exception { + String model = "a "; + assertEquals(model, parseAndSerialize(model)); + } - // FIXME: make this work again - -// public void testComplex() throws Exception { -// String model = "( ( a b ) ! c d e f ( x s ) ( \t ( a \n\rb/*ffo \n bar */ ) ! c ) ! ) //holla\n!"; -// assertEquals(model, parseAndSerialize(model)); -// } + public void testComplex() throws Exception { + String model = "( ( a b ) ! c d e f ( x s ) ( \t ( a \n\rb/*ffo \n bar */ ) ! c ) ! ) //holla\n!"; + assertEquals(model, parseAndSerialize(model)); + } private String parseAndSerialize(String model) throws Exception { EObject result = (EObject) getModel(model); System.out.println(EmfFormater.objToStr(result, "")); + System.out.println(EmfFormater.objToStr(NodeUtil.getRootNode(result), + "")); + System.out.println(EmfFormater.objToStr(NodeUtil.getRootNode(result) + .getLeafNodes(), "")); + IParseTreeConstructor con = getParseTreeConstructor(); - WhitespacePreservingCallback callback = new WhitespacePreservingCallback( + ByteArrayOutputStream out = new ByteArrayOutputStream(); + WhitespacePreservingCallback callback = new WhitespacePreservingCallback(out, getValueConverterService()); con.update(result, callback); - return callback.toString(); + return out.toString(); } public void testSimpleExpressions5() throws Exception { diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/WhitespacePreservingCallbackTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/WhitespacePreservingCallbackTest.java index cdc0ef543..1a3c4e51d 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/WhitespacePreservingCallbackTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parsetree/reconstr/WhitespacePreservingCallbackTest.java @@ -1,6 +1,9 @@ package org.eclipse.xtext.parsetree.reconstr; +import java.io.ByteArrayOutputStream; + import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.IAstFactory; import org.eclipse.xtext.parsetree.reconstr.callbacks.WhitespacePreservingCallback; import org.eclipse.xtext.tests.AbstractGeneratorTest; @@ -15,11 +18,9 @@ public class WhitespacePreservingCallbackTest extends AbstractGeneratorTest { check("a"); } -// FIXME: Make this test work again - -// public void testHiddenInBetween() throws Exception { -// check("a \t /* foo bar */ + b"); -// } + public void testHiddenInBetween() throws Exception { + check("a \t /* foo bar */ + b"); + } // FIXME: Make this test work again @@ -65,15 +66,17 @@ public class WhitespacePreservingCallbackTest extends AbstractGeneratorTest { private String serialize(EObject result) { IParseTreeConstructor con = getParseTreeConstructor(); - WhitespacePreservingCallback cb = new WhitespacePreservingCallback(getValueConverterService()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + WhitespacePreservingCallback cb = new WhitespacePreservingCallback(out,getValueConverterService()); con.update(result, cb); - return cb.toString(); + return out.toString(); } private void failsWith(EObject o, Class clazz) { try { IParseTreeConstructor con = getParseTreeConstructor(); - WhitespacePreservingCallback cb = new WhitespacePreservingCallback(getValueConverterService()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + WhitespacePreservingCallback cb = new WhitespacePreservingCallback(out,getValueConverterService()); con.update(o, cb); fail("Should fail with "+clazz.getSimpleName()); } catch (RuntimeException e) { diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTests.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTests.java index b9c3a3216..83f25a9b9 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTests.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTests.java @@ -27,6 +27,7 @@ import org.eclipse.xtext.Grammar; import org.eclipse.xtext.XtextStandaloneSetup; import org.eclipse.xtext.resource.metamodel.ErrorAcceptor.ErrorCode; import org.eclipse.xtext.tests.AbstractGeneratorTest; +import org.eclipse.xtext.util.EmfFormater; /** * @author Jan Köhnlein - Initial contribution and API @@ -688,4 +689,15 @@ public class Xtext2EcoreTransformerTests extends AbstractGeneratorTest { assertSame(ruleB, ruleC.getESuperTypes().get(0)); assertEquals(0, ruleD.getESuperTypes().size()); } + + public void testExpressionLikeLangauge() throws Exception { + String grammar = "language test generate test 'http://test'"; + grammar += " Ex : Atom ({ChainExpression.left+=current} operator=('+'|'-'|'*'|'/') right=Atom )*;" + + "Atom returns Ex : Number | '(' Ex ')';" + + "Number : value=INT"; + EPackage ePackage = getEPackageFromGrammar(grammar); + EClass classifier = (EClass) ePackage.getEClassifier("Ex"); + System.out.println(EmfFormater.objToStr(ePackage, "")); + assertEquals(0,classifier.getEStructuralFeatures().size()); + } }