From 96635b8788e3d089450c2791dd2f11100244d9e1 Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 21:19:05 +0800 Subject: [PATCH 1/8] Needed to mostly compile Signed-off-by: Kent Beck --- build.xml | 2 +- src/main/java/org/junit/matchers/JUnitMatchers.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.xml b/build.xml index 3adc43d67e1b..8ee0e98e6ec3 100644 --- a/build.xml +++ b/build.xml @@ -18,7 +18,7 @@ - + diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index f692c2655a74..14e3d7e2ae91 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -20,7 +20,7 @@ public class JUnitMatchers { */ @Deprecated public static Matcher> hasItem(T element) { - return CoreMatchers.hasItem(element); + return CoreMatchers.hasItem(element); } /** @@ -30,7 +30,7 @@ public static Matcher> hasItem(T element) { */ @Deprecated public static Matcher> hasItem(Matcher elementMatcher) { - return CoreMatchers.hasItem(elementMatcher); + return CoreMatchers.hasItem(elementMatcher); } /** From 8a9c52df0ef4c0667a3a54bd4c6387c149577c2e Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 21:57:31 +0800 Subject: [PATCH 2/8] Undeprectated JUnitMatchers.either and .both, with different typing, and created JUnitMatchers.matches Signed-off-by: Kent Beck --- .../org/junit/matchers/JUnitMatchers.java | 36 +++++++++++++------ .../org/junit/tests/assertion/BothTest.java | 11 +++--- .../UnsuccessfulWithDataPointFields.java | 2 +- .../tests/running/methods/AnnotationTest.java | 2 +- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index 14e3d7e2ae91..67f02801c393 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -1,5 +1,9 @@ package org.junit.matchers; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.junit.matchers.JUnitMatchers.either; +import static org.junit.matchers.JUnitMatchers.matches; import org.hamcrest.CoreMatchers; import org.hamcrest.Matcher; import org.hamcrest.core.CombinableMatcher; @@ -7,10 +11,7 @@ /** * Convenience import class: these are useful matchers for use with the assertThat method, but they are * not currently included in the basic CoreMatchers class from hamcrest. - * @deprecated as of JUnit 4.7, all of these matchers are found in the org.hamcrest.CoreMatchers - * class instead. */ -@Deprecated public class JUnitMatchers { // TODO (May 27, 2009 11:46:27 AM): deprecate all? /** @@ -80,10 +81,8 @@ public static org.hamcrest.Matcher containsString(java.lang.St *
 	 *   assertThat(string, both(containsString("a")).and(containsString("b")));
 	 * 
- * @deprecated Use org.hamcrest.CoreMatchers.both */ - @Deprecated - public static CombinableMatcher both(Matcher matcher) { + public static CombinableMatcher both(Matcher matcher) { return CoreMatchers.both(matcher); } @@ -92,10 +91,27 @@ public static CombinableMatcher both(Matcher matcher) { *
 	 *   assertThat(string, both(containsString("a")).and(containsString("b")));
 	 * 
- * @deprecated Use org.hamcrest.CoreMatchers.either */ - @Deprecated - public static CombinableMatcher either(Matcher matcher) { + public static CombinableMatcher either(Matcher matcher) { return CoreMatchers.either(matcher); - } + } + + /** + * Loosens type parameter, in order to use a Matcher + * in a place where Java doesn't want to typecheck: + * + * Goofy example: + *
+	 *   assertThat(3, matches(containsString("a")));
+	 * 
+ * + * Real example due to unfortunate "both" typing: + *
+	 *   assertThat(3, either(is(3)).or(matches(is(4))));
+	 * 
+ */ + @SuppressWarnings("unchecked") + public static Matcher matches(Matcher matcher) { + return (Matcher)matcher; + } } diff --git a/src/test/java/org/junit/tests/assertion/BothTest.java b/src/test/java/org/junit/tests/assertion/BothTest.java index 98c61ea4f521..8847f2bb4c01 100644 --- a/src/test/java/org/junit/tests/assertion/BothTest.java +++ b/src/test/java/org/junit/tests/assertion/BothTest.java @@ -1,8 +1,9 @@ package org.junit.tests.assertion; -import static org.hamcrest.CoreMatchers.both; +import static org.junit.matchers.JUnitMatchers.both; +import static org.junit.matchers.JUnitMatchers.matches; import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.either; +import static org.junit.matchers.JUnitMatchers.either; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; @@ -27,7 +28,7 @@ public class BothTest { @Test public void bothPasses() { - assertThat(3, both(is(Integer.class)).and(is(3))); + assertThat(3, both(is(3)).and(matches(is(Integer.class)))); } @Theory @@ -46,7 +47,7 @@ public void descriptionIsSensible(Matcher first, Matcher second) { @Test public void eitherPasses() { - assertThat(3, either(is(3)).or(is(4))); + assertThat(3, either(is(3)).or(matches(is(4)))); } @Theory @@ -66,6 +67,6 @@ public void threeOrsWork(Matcher first, } @Test public void subclassesAreOkInSecondPositionOnly() { - assertThat(3, both(is(Integer.class)).and(is(3))); + assertThat(3, both(is(Integer.class)).and(matches(is(3)))); } } diff --git a/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java b/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java index 1ffa851c4950..bff4713fd7ad 100644 --- a/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java +++ b/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java @@ -1,6 +1,6 @@ package org.junit.tests.experimental.theories.runner; -import static org.hamcrest.CoreMatchers.both; +import static org.junit.matchers.JUnitMatchers.both; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.experimental.results.PrintableResult.testResult; diff --git a/src/test/java/org/junit/tests/running/methods/AnnotationTest.java b/src/test/java/org/junit/tests/running/methods/AnnotationTest.java index 87550c91ab73..0bd5efd13bdc 100644 --- a/src/test/java/org/junit/tests/running/methods/AnnotationTest.java +++ b/src/test/java/org/junit/tests/running/methods/AnnotationTest.java @@ -1,8 +1,8 @@ package org.junit.tests.running.methods; -import static org.hamcrest.CoreMatchers.both; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; +import static org.junit.matchers.JUnitMatchers.both; import java.util.Collection; import java.util.HashSet; From 505f7705d932002881b530829f4750e9438a963e Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 22:39:33 +0800 Subject: [PATCH 3/8] Better tests of both Signed-off-by: Kent Beck --- src/main/java/org/junit/matchers/JUnitMatchers.java | 4 ---- .../java/org/junit/tests/assertion/BothTest.java | 13 +++++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index 67f02801c393..5291c7c52628 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -1,9 +1,5 @@ package org.junit.matchers; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; -import static org.junit.matchers.JUnitMatchers.either; -import static org.junit.matchers.JUnitMatchers.matches; import org.hamcrest.CoreMatchers; import org.hamcrest.Matcher; import org.hamcrest.core.CombinableMatcher; diff --git a/src/test/java/org/junit/tests/assertion/BothTest.java b/src/test/java/org/junit/tests/assertion/BothTest.java index 8847f2bb4c01..a29da23b3c0e 100644 --- a/src/test/java/org/junit/tests/assertion/BothTest.java +++ b/src/test/java/org/junit/tests/assertion/BothTest.java @@ -1,13 +1,13 @@ package org.junit.tests.assertion; -import static org.junit.matchers.JUnitMatchers.both; -import static org.junit.matchers.JUnitMatchers.matches; import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.matchers.JUnitMatchers.either; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; +import static org.junit.matchers.JUnitMatchers.both; +import static org.junit.matchers.JUnitMatchers.either; +import static org.junit.matchers.JUnitMatchers.matches; import org.hamcrest.Matcher; import org.junit.Test; import org.junit.experimental.theories.DataPoint; @@ -29,8 +29,9 @@ public class BothTest { @Test public void bothPasses() { assertThat(3, both(is(3)).and(matches(is(Integer.class)))); + assertThat("ab", both(containsString("a")).and(containsString("b"))); } - + @Theory public void bothFails(int value, Matcher first, Matcher second) { @@ -66,7 +67,7 @@ public void threeOrsWork(Matcher first, assertThat(value, either(first).or(second).or(third)); } - @Test public void subclassesAreOkInSecondPositionOnly() { - assertThat(3, both(is(Integer.class)).and(matches(is(3)))); + @Test public void superclassesAreOkInSecondPositionOnly() { + assertThat("a", both(containsString("a")).and(matches(is(String.class)))); } } From a5aa7cf7d61162947504060c9d3b6d4db6c073cf Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 23:20:30 +0800 Subject: [PATCH 4/8] I think this is the end of hamcrest generics Signed-off-by: Kent Beck --- .../org/junit/matchers/JUnitMatchers.java | 32 +++++++++++++++++-- .../org/junit/tests/assertion/BothTest.java | 30 +++++++++++++---- 2 files changed, 53 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index 5291c7c52628..8a8f57cd96ad 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -1,5 +1,11 @@ package org.junit.matchers; +import static org.hamcrest.CoreMatchers.anyOf; +import static org.hamcrest.CoreMatchers.is; + +import java.util.ArrayList; +import java.util.List; + import org.hamcrest.CoreMatchers; import org.hamcrest.Matcher; import org.hamcrest.core.CombinableMatcher; @@ -85,13 +91,31 @@ public static CombinableMatcher both(Matcher matcher) { /** * This is useful for fluently combining matchers where either may pass, for example: *
-	 *   assertThat(string, both(containsString("a")).and(containsString("b")));
+	 *   assertThat(string, either(containsString("a")).or(containsString("b")));
 	 * 
+ * + * If you want to say either(is(3)).or(is(4)), and are prevented, + * please see isOneOf(...) below. */ public static CombinableMatcher either(Matcher matcher) { return CoreMatchers.either(matcher); } + /** + * This is sugar for the situation where + * For example: + *
+	 *   assertThat(string, eitherIs("a").or(is("b")));
+	 * 
+ */ + public static Matcher isOneOf(T... objects) { + List> matchers = new ArrayList>(); + for (T each : objects) { + matchers.add(is(each)); + } + return anyOf(matchers); + } + /** * Loosens type parameter, in order to use a Matcher * in a place where Java doesn't want to typecheck: @@ -101,9 +125,11 @@ public static CombinableMatcher either(Matcher matcher) { * assertThat(3, matches(containsString("a"))); * * - * Real example due to unfortunate "both" typing: + * Real example: *
-	 *   assertThat(3, either(is(3)).or(matches(is(4))));
+	 *   assertThat(3, either(matches(is(String.class))).or(
+	 *		                  matches(is(Integer.class))));
+     *
 	 * 
*/ @SuppressWarnings("unchecked") diff --git a/src/test/java/org/junit/tests/assertion/BothTest.java b/src/test/java/org/junit/tests/assertion/BothTest.java index a29da23b3c0e..a39a962a0ab0 100644 --- a/src/test/java/org/junit/tests/assertion/BothTest.java +++ b/src/test/java/org/junit/tests/assertion/BothTest.java @@ -1,13 +1,19 @@ package org.junit.tests.assertion; +import static org.hamcrest.CoreMatchers.any; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.sameInstance; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; import static org.junit.matchers.JUnitMatchers.both; import static org.junit.matchers.JUnitMatchers.either; +import static org.junit.matchers.JUnitMatchers.isOneOf; import static org.junit.matchers.JUnitMatchers.matches; + +import java.util.Arrays; + import org.hamcrest.Matcher; import org.junit.Test; import org.junit.experimental.theories.DataPoint; @@ -28,10 +34,10 @@ public class BothTest { @Test public void bothPasses() { - assertThat(3, both(is(3)).and(matches(is(Integer.class)))); + assertThat(3, both(any(Integer.class)).and(is(3))); assertThat("ab", both(containsString("a")).and(containsString("b"))); } - + @Theory public void bothFails(int value, Matcher first, Matcher second) { @@ -48,7 +54,18 @@ public void descriptionIsSensible(Matcher first, Matcher second) { @Test public void eitherPasses() { - assertThat(3, either(is(3)).or(matches(is(4)))); + assertThat(3, either(sameInstance(3)).or(sameInstance(4))); + assertThat(3, either(matches(is(String.class))).or( + matches(is(Integer.class)))); + assertThat("a", either(sameInstance("a")).or(sameInstance("b"))); + } + + @SuppressWarnings("unchecked") + @Test + public void isOneOfPasses() { + assertThat(3, isOneOf(3, 4)); + assertThat(Arrays.asList("a"), isOneOf(Arrays.asList("a"), Arrays + .asList("b"))); } @Theory @@ -66,8 +83,9 @@ public void threeOrsWork(Matcher first, || third.matches(value)); assertThat(value, either(first).or(second).or(third)); } - - @Test public void superclassesAreOkInSecondPositionOnly() { - assertThat("a", both(containsString("a")).and(matches(is(String.class)))); + + @Test + public void superclassesAreOkInSecondPositionOnly() { + assertThat("a", both(containsString("a")).and(is(String.class))); } } From 79b7c3e8f1d725460212c659524b9bbf5d8a1461 Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 23:56:22 +0800 Subject: [PATCH 5/8] Hamcrest 1.2 documented in release notes Signed-off-by: Kent Beck --- doc/ReleaseNotes4.7.txt | 31 +++++++++++++++++++ src/main/java/org/junit/Assert.java | 12 +++---- .../org/junit/matchers/JUnitMatchers.java | 2 +- .../junit/tests/assertion/AssertionTest.java | 18 +++++++++-- .../org/junit/tests/assertion/BothTest.java | 2 ++ 5 files changed, 56 insertions(+), 9 deletions(-) diff --git a/doc/ReleaseNotes4.7.txt b/doc/ReleaseNotes4.7.txt index 2dde91a46e1e..dc380d7edd30 100644 --- a/doc/ReleaseNotes4.7.txt +++ b/doc/ReleaseNotes4.7.txt @@ -96,6 +96,37 @@ ### Timeouts ### - Tests that time out now show the stack trace of the test thread. +### Matchers ### +- Hamcrest 1.2 is now incorporated. + - The following methods from `JUnitMatchers` are deprecated, and moved to `CoreMatchers`: + - `JUnitMatchers.hasItem` is now `CoreMatchers.hasItem` + - `JUnitMatchers.hasItems` is now `CoreMatchers.hasItems` + - `JUnitMatchers.containsString` is now `CoreMatchers.containsString` + + - Matchers now have more informative mismatch descriptions. For example: + + @SuppressWarnings("unchecked") + @Test public void stringIsAnInteger() { + assertThat("identifier", "actual", matches(is(Integer.class))); + // prints: + // Expected: is an instance of java.lang.Integer + // but: \"actual\" is a java.lang.String + } + + - Some matchers have slightly changed type signatures, especially those created + by `is()` and `equalTo`. Everything should work, except see `BothTest` for an + example of how the `both().and()` and `either().or()` constructs may be + affected + +Expected: (is an instance of java.lang.Integer)\n but: \"actual\" is a java.lang.String + @SuppressWarnings("unchecked") + public void testMismatchDescriptionDescribesFirstFailingMatch() { + assertThat("bad speling", + allOf(containsString("bad"), containsString("spelling"))); + // prints: Expected: (contains string "bad" and contains string "spelling") + but: contains string "spelling" was "bad speling" + } + ### Docs ### - Javadocs now link to online JDK javadocs (bug 2090230) - Parameterized runner javadocs improved (bug 2186792) diff --git a/src/main/java/org/junit/Assert.java b/src/main/java/org/junit/Assert.java index c7fe0e7167d0..fc1675ec8258 100644 --- a/src/main/java/org/junit/Assert.java +++ b/src/main/java/org/junit/Assert.java @@ -788,12 +788,12 @@ public static void assertThat(T actual, Matcher matcher) { public static void assertThat(String reason, T actual, Matcher matcher) { if (!matcher.matches(actual)) { - Description description= new StringDescription(); - description.appendText(reason); - description.appendText("\nExpected: "); - matcher.describeTo(description); - description.appendText("\n got: ").appendValue(actual) - .appendText("\n"); + Description description = new StringDescription(); + description.appendText(reason) + .appendText("\nExpected: ") + .appendDescriptionOf(matcher) + .appendText("\n but: "); + matcher.describeMismatch(actual, description); throw new java.lang.AssertionError(description.toString()); } } diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index 8a8f57cd96ad..9ce8cd4fa3a2 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -64,7 +64,7 @@ public static Matcher> hasItems(Matcher... elementMat * @deprecated use CoreMatchers.everyItem directly */ @Deprecated - public static Matcher> everyItem(final Matcher elementMatcher) { + public static Matcher> each(final Matcher elementMatcher) { return CoreMatchers.everyItem(elementMatcher); } diff --git a/src/test/java/org/junit/tests/assertion/AssertionTest.java b/src/test/java/org/junit/tests/assertion/AssertionTest.java index 3d6730d5812e..700686da4181 100644 --- a/src/test/java/org/junit/tests/assertion/AssertionTest.java +++ b/src/test/java/org/junit/tests/assertion/AssertionTest.java @@ -1,12 +1,15 @@ package org.junit.tests.assertion; +import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; +import static org.junit.matchers.JUnitMatchers.matches; import java.math.BigDecimal; @@ -415,7 +418,7 @@ public void arraysDeclaredAsObjectAreComparedAsObjects() { String expected = "expected"; String actual = "actual"; - String expectedMessage = "identifier\nExpected: \"expected\"\n got: \"actual\"\n"; + String expectedMessage = "identifier\nExpected: \"expected\"\n but: was \"actual\""; try { assertThat("identifier", actual, equalTo(expected)); @@ -423,12 +426,23 @@ public void arraysDeclaredAsObjectAreComparedAsObjects() { assertEquals(expectedMessage, e.getMessage()); } } + + @SuppressWarnings("unchecked") + @Test public void assertThatIncludesAdvancedMismatch() { + String expectedMessage = "identifier\nExpected: is an instance of java.lang.Integer\n but: \"actual\" is a java.lang.String"; + + try { + assertThat("identifier", "actual", matches(is(Integer.class))); + } catch (AssertionError e) { + assertEquals(expectedMessage, e.getMessage()); + } + } @Test public void assertThatDescriptionCanBeElided() { String expected = "expected"; String actual = "actual"; - String expectedMessage = "\nExpected: \"expected\"\n got: \"actual\"\n"; + String expectedMessage = "\nExpected: \"expected\"\n but: was \"actual\""; try { assertThat(actual, equalTo(expected)); diff --git a/src/test/java/org/junit/tests/assertion/BothTest.java b/src/test/java/org/junit/tests/assertion/BothTest.java index a39a962a0ab0..a958746de761 100644 --- a/src/test/java/org/junit/tests/assertion/BothTest.java +++ b/src/test/java/org/junit/tests/assertion/BothTest.java @@ -1,7 +1,9 @@ package org.junit.tests.assertion; +import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.any; import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.sameInstance; From 323e55fbc5dbf8d977b23220fa2316cbfceaeb6b Mon Sep 17 00:00:00 2001 From: David Saff Date: Fri, 29 May 2009 23:57:14 +0800 Subject: [PATCH 6/8] Fixed warnings Signed-off-by: Kent Beck --- src/test/java/org/junit/tests/assertion/AssertionTest.java | 4 +--- src/test/java/org/junit/tests/assertion/BothTest.java | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/test/java/org/junit/tests/assertion/AssertionTest.java b/src/test/java/org/junit/tests/assertion/AssertionTest.java index 700686da4181..aa5722df2589 100644 --- a/src/test/java/org/junit/tests/assertion/AssertionTest.java +++ b/src/test/java/org/junit/tests/assertion/AssertionTest.java @@ -1,6 +1,5 @@ package org.junit.tests.assertion; -import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertArrayEquals; @@ -427,8 +426,7 @@ public void arraysDeclaredAsObjectAreComparedAsObjects() { } } - @SuppressWarnings("unchecked") - @Test public void assertThatIncludesAdvancedMismatch() { + @Test public void assertThatIncludesAdvancedMismatch() { String expectedMessage = "identifier\nExpected: is an instance of java.lang.Integer\n but: \"actual\" is a java.lang.String"; try { diff --git a/src/test/java/org/junit/tests/assertion/BothTest.java b/src/test/java/org/junit/tests/assertion/BothTest.java index a958746de761..a39a962a0ab0 100644 --- a/src/test/java/org/junit/tests/assertion/BothTest.java +++ b/src/test/java/org/junit/tests/assertion/BothTest.java @@ -1,9 +1,7 @@ package org.junit.tests.assertion; -import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.any; import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.sameInstance; From c9e0f1a3a519bdab2d71b48635a9cc7df3cff3fa Mon Sep 17 00:00:00 2001 From: David Saff Date: Mon, 1 Jun 2009 23:08:41 +0800 Subject: [PATCH 7/8] JUnitMatchers.matches creates any type Signed-off-by: Kent Beck --- build.xml | 2 +- src/main/java/junit/runner/Version.java | 2 +- src/main/java/org/junit/matchers/JUnitMatchers.java | 4 ++-- src/test/java/org/junit/tests/assertion/AssertionTest.java | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.xml b/build.xml index 8ee0e98e6ec3..38000f06df54 100644 --- a/build.xml +++ b/build.xml @@ -5,7 +5,7 @@ - + diff --git a/src/main/java/junit/runner/Version.java b/src/main/java/junit/runner/Version.java index cb42051153eb..40008e0645c5 100644 --- a/src/main/java/junit/runner/Version.java +++ b/src/main/java/junit/runner/Version.java @@ -9,7 +9,7 @@ private Version() { } public static String id() { - return "4.7-SNAPSHOT-20090527-0039"; + return "4.7-SNAPSHOT-20090529-1159"; } public static void main(String[] args) { diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java index 9ce8cd4fa3a2..8e290284aeda 100644 --- a/src/main/java/org/junit/matchers/JUnitMatchers.java +++ b/src/main/java/org/junit/matchers/JUnitMatchers.java @@ -133,7 +133,7 @@ public static Matcher isOneOf(T... objects) { * */ @SuppressWarnings("unchecked") - public static Matcher matches(Matcher matcher) { - return (Matcher)matcher; + public static Matcher matches(Matcher matcher) { + return (Matcher)matcher; } } diff --git a/src/test/java/org/junit/tests/assertion/AssertionTest.java b/src/test/java/org/junit/tests/assertion/AssertionTest.java index aa5722df2589..705d8b12100e 100644 --- a/src/test/java/org/junit/tests/assertion/AssertionTest.java +++ b/src/test/java/org/junit/tests/assertion/AssertionTest.java @@ -10,7 +10,9 @@ import static org.junit.Assert.fail; import static org.junit.matchers.JUnitMatchers.matches; +import java.io.Serializable; import java.math.BigDecimal; +import java.util.Map; import org.junit.Assert; import org.junit.ComparisonFailure; @@ -466,7 +468,5 @@ public void compareBigDecimalAndInteger() { final BigDecimal bigDecimal = new BigDecimal("1.2"); final Integer integer = Integer.valueOf("1"); assertEquals(bigDecimal, integer); - } - - + } } From 3f05aac1da5851a1957c3c9ca46148464e5fd513 Mon Sep 17 00:00:00 2001 From: David Saff Date: Tue, 2 Jun 2009 03:41:04 +0800 Subject: [PATCH 8/8] Note that this Closes gh-1 Signed-off-by: Kent Beck --- doc/ReleaseNotes4.7.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ReleaseNotes4.7.txt b/doc/ReleaseNotes4.7.txt index dc380d7edd30..d50a8921a821 100644 --- a/doc/ReleaseNotes4.7.txt +++ b/doc/ReleaseNotes4.7.txt @@ -97,7 +97,7 @@ - Tests that time out now show the stack trace of the test thread. ### Matchers ### -- Hamcrest 1.2 is now incorporated. +- Hamcrest 1.2 is now incorporated (http://github.com/KentBeck/junit/issues#issue/1) - The following methods from `JUnitMatchers` are deprecated, and moved to `CoreMatchers`: - `JUnitMatchers.hasItem` is now `CoreMatchers.hasItem` - `JUnitMatchers.hasItems` is now `CoreMatchers.hasItems`