From 55c155fdf1872d95d78650504fd7472a50301739 Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Thu, 7 Mar 2013 13:08:51 +0100 Subject: [PATCH] [xbase][validation] Optional validation of undeclared exceptions see https://bugs.eclipse.org/bugs/show_bug.cgi?id=400936 Change-Id: If9dc2545eb94c6f1e89687fad40ff9161c3d7b8e --- .../validation/ValidationTestHelper.java | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/plugins/org.eclipse.xtext.junit4/src/org/eclipse/xtext/junit4/validation/ValidationTestHelper.java b/plugins/org.eclipse.xtext.junit4/src/org/eclipse/xtext/junit4/validation/ValidationTestHelper.java index c111b8e76..397a8175b 100644 --- a/plugins/org.eclipse.xtext.junit4/src/org/eclipse/xtext/junit4/validation/ValidationTestHelper.java +++ b/plugins/org.eclipse.xtext.junit4/src/org/eclipse/xtext/junit4/validation/ValidationTestHelper.java @@ -41,7 +41,7 @@ public class ValidationTestHelper { public void assertNoIssues(final EObject model) { final List validate = validate(model); if (!isEmpty(validate)) - fail("Expected no issues, but got :" + validate); + fail("Expected no issues, but got :" + getIssuesAsString(model, validate, new StringBuilder())); } public void assertNoErrors(final EObject model) { @@ -52,7 +52,7 @@ public class ValidationTestHelper { } }); if (!isEmpty(issues)) - fail("Expected no errors, but got :" + issues); + fail("Expected no errors, but got :" + getIssuesAsString(model, issues, new StringBuilder())); } public void assertNoError(final EObject model, final String issuecode) { @@ -63,7 +63,7 @@ public class ValidationTestHelper { } }); if (!isEmpty(issues)) - fail("Expected no error '" + issuecode + "' but got " + issues); + fail("Expected no error '" + issuecode + "' but got " + getIssuesAsString(model, issues, new StringBuilder())); } /** @@ -81,7 +81,7 @@ public class ValidationTestHelper { } }); if (!isEmpty(issues)) - fail("Expected no error on instances of '" + objectType.getName() + "' but got " + issues); + fail("Expected no error on instances of '" + objectType.getName() + "' but got " + getIssuesAsString(root, issues, new StringBuilder())); } /** @@ -100,8 +100,9 @@ public class ValidationTestHelper { return false; } }); - if (!isEmpty(issues)) - fail("Expected no error '" + issuecode + "' but got " + issues); + if (!isEmpty(issues)) { + fail("Expected no error '" + issuecode + "' but got " + getIssuesAsString(root, issues, new StringBuilder())); + } } public void assertError(final EObject model, final EClass objectType, final String code, @@ -109,6 +110,9 @@ public class ValidationTestHelper { assertIssue(model, objectType, code, Severity.ERROR, messageParts); } + /** + * @since 2.4 + */ public void assertIssue(final EObject model, final EClass objectType, final String code, final Severity severity, final String... messageParts) { final List validate = validate(model); @@ -136,22 +140,30 @@ public class ValidationTestHelper { .append("' on ") .append(objectType.getName()) .append(" but got\n"); - for(Issue issue: validate) { - EObject eObject = model.eResource().getResourceSet().getEObject(issue.getUriToProblem(), true); - message.append(issue.getSeverity()) - .append(" (") - .append(issue.getCode()) - .append(") '") - .append(issue.getMessage()) - .append("' on ") - .append(eObject.eClass().getName()) - .append("\n"); - } + getIssuesAsString(model, validate, message); assertEquals(Joiner.on('\n').join(messageParts), message.toString()); fail(message.toString()); } } + /** + * @since 2.4 + */ + protected StringBuilder getIssuesAsString(final EObject model, final Iterable issues, StringBuilder result) { + for(Issue issue: issues) { + EObject eObject = model.eResource().getResourceSet().getEObject(issue.getUriToProblem(), true); + result.append(issue.getSeverity()) + .append(" (") + .append(issue.getCode()) + .append(") '") + .append(issue.getMessage()) + .append("' on ") + .append(eObject.eClass().getName()) + .append("\n"); + } + return result; + } + public void assertWarning(final EObject model, final EClass objectType, final String code, final String... messageParts) { assertIssue(model, objectType, code, Severity.WARNING, messageParts);