From 7944e8f8afbeaff17d337304df52dac227034423 Mon Sep 17 00:00:00 2001 From: Stefan Birkner Date: Mon, 28 Nov 2011 22:23:18 +0100 Subject: [PATCH] Improved Description class. A few modifications to improve the readability of the code: * extracted METHOD_AND_CLASS_NAME_PATTERN constant * extracted methodAndClassNamePatternGroupOrDefault(...) * merged getMethodName() and parseMethod() * moved validation of display name to constructor * throw IllegalArgumentException if display name is null --- .../java/org/junit/runner/Description.java | 31 ++++++++----------- .../experimental/max/DescriptionTest.java | 6 +++- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/junit/runner/Description.java b/src/main/java/org/junit/runner/Description.java index b3083d5e05a7..191dfc1038e0 100644 --- a/src/main/java/org/junit/runner/Description.java +++ b/src/main/java/org/junit/runner/Description.java @@ -28,6 +28,9 @@ public class Description implements Serializable { private static final long serialVersionUID = 1L; + private static final Pattern METHOD_AND_CLASS_NAME_PATTERN= Pattern + .compile("(.*)\\((.*)\\)"); + /** * Create a Description named name. * Generally, you will add children to this Description. @@ -36,8 +39,6 @@ public class Description implements Serializable { * @return a Description named name */ public static Description createSuiteDescription(String name, Annotation... annotations) { - if (name.length() == 0) - throw new IllegalArgumentException("name must have non-zero length"); return new Description(name, annotations); } @@ -88,10 +89,12 @@ public static Description createSuiteDescription(Class testClass) { private final ArrayList fChildren= new ArrayList(); private final String fDisplayName; - private final Annotation[] fAnnotations; - private Description(final String displayName, Annotation... annotations) { + private Description(String displayName, Annotation... annotations) { + if ((displayName == null) || (displayName.length() == 0)) + throw new IllegalArgumentException( + "The display name must not be empty."); fDisplayName= displayName; fAnnotations= annotations; } @@ -215,10 +218,7 @@ public Class getTestClass() { * the name of the class of the test instance */ public String getClassName() { - Matcher matcher= methodStringMatcher(); - return matcher.matches() - ? matcher.group(2) - : toString(); + return methodAndClassNamePatternGroupOrDefault(2, toString()); } /** @@ -226,17 +226,12 @@ public String getClassName() { * the name of the method (or null if not) */ public String getMethodName() { - return parseMethod(); - } - - private String parseMethod() { - Matcher matcher= methodStringMatcher(); - if (matcher.matches()) - return matcher.group(1); - return null; + return methodAndClassNamePatternGroupOrDefault(1, null); } - private Matcher methodStringMatcher() { - return Pattern.compile("(.*)\\((.*)\\)").matcher(toString()); + private String methodAndClassNamePatternGroupOrDefault(int group, + String defaultString) { + Matcher matcher= METHOD_AND_CLASS_NAME_PATTERN.matcher(toString()); + return matcher.matches() ? matcher.group(group) : defaultString; } } \ No newline at end of file diff --git a/src/test/java/org/junit/tests/experimental/max/DescriptionTest.java b/src/test/java/org/junit/tests/experimental/max/DescriptionTest.java index c0203204367b..7156ac44858a 100644 --- a/src/test/java/org/junit/tests/experimental/max/DescriptionTest.java +++ b/src/test/java/org/junit/tests/experimental/max/DescriptionTest.java @@ -20,5 +20,9 @@ public void parseMethod_whenCantParse() { public void createSuiteDescription_whenZeroLength() { Description.createSuiteDescription(""); } - + + @Test(expected= IllegalArgumentException.class) + public void createSuiteDescription_whenNull() { + Description.createSuiteDescription((String) null); + } }