<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1 +1 @@
-test
+Please read README.html
\ No newline at end of file</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,7 @@ Meade.
 &lt;br&gt;(see also &lt;a href=&quot;http://www.junit.org&quot;&gt;JUnit.org&lt;/a&gt;)
 
 &lt;hr WIDTH=&quot;100%&quot;&gt;
-&lt;br&gt;[old date] 8 August 2008
+&lt;br&gt;6 April 2009
 &lt;p&gt;JUnit is a simple framework to write repeatable tests. It is an instance
 of the xUnit architecture for unit testing frameworks.
 &lt;ul&gt;
@@ -43,6 +43,113 @@ of the xUnit architecture for unit testing frameworks.
 &lt;a NAME=&quot;Summary of&quot;&gt;
 &lt;h2&gt;Summary of Changes in version 4.6&lt;/h2&gt;
 
+&lt;h3&gt;Max&lt;/h3&gt;
+
+&lt;p&gt;JUnit now includes a new experimental Core, &lt;code&gt;MaxCore&lt;/code&gt;.  &lt;code&gt;MaxCore&lt;/code&gt;
+remembers the results of previous test runs in order to run new
+tests out of order.  &lt;code&gt;MaxCore&lt;/code&gt; prefers new tests to old tests, fast
+tests to slow tests, and recently failing tests to tests that last
+failed long ago.  There's currently not a standard UI for running
+&lt;code&gt;MaxCore&lt;/code&gt; included in JUnit, but there is a UI included in the JUnit
+Max Eclipse plug-in at:&lt;/p&gt;
+
+&lt;p&gt;http://www.junitmax.com/junitmax/subscribe.html&lt;/p&gt;
+
+&lt;p&gt;Example:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;public static class TwoUnEqualTests {
+    @Test
+    public void slow() throws InterruptedException {
+        Thread.sleep(100);
+        fail();
+    }
+
+    @Test
+    public void fast() {
+        fail();
+    }
+}
+
+@Test
+public void rememberOldRuns() {
+    File maxFile = new File(&quot;history.max&quot;);
+    MaxCore firstMax = MaxCore.storedLocally(maxFile);
+    firstMax.run(TwoUnEqualTests.class);
+
+    MaxCore useHistory= MaxCore.storedLocally(maxFile);
+    List&amp;lt;Failure&amp;gt; failures= useHistory.run(TwoUnEqualTests.class)
+            .getFailures();
+    assertEquals(&quot;fast&quot;, failures.get(0).getDescription().getMethodName());
+    assertEquals(&quot;slow&quot;, failures.get(1).getDescription().getMethodName());
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;h3&gt;Test scheduling strategies&lt;/h3&gt;
+
+&lt;p&gt;&lt;code&gt;JUnitCore&lt;/code&gt; now includes an experimental method that allows you to
+specify a model of the &lt;code&gt;Computer&lt;/code&gt; that runs your tests.  Currently,
+the only built-in Computers are the default, serial runner, and two
+runners provided in the &lt;code&gt;ParallelRunner&lt;/code&gt; class:
+&lt;code&gt;ParallelRunner.classes()&lt;/code&gt;, which runs classes in parallel, and
+&lt;code&gt;ParallelRunner.methods()&lt;/code&gt;, which runs classes and methods in parallel.&lt;/p&gt;
+
+&lt;p&gt;This feature is currently less stable than MaxCore, and may be
+merged with MaxCore in some way in the future.&lt;/p&gt;
+
+&lt;p&gt;Example:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;public static class Example {
+    @Test public void one() throws InterruptedException {
+        Thread.sleep(1000);
+    }
+    @Test public void two() throws InterruptedException {
+        Thread.sleep(1000);
+    }
+}
+
+@Test public void testsRunInParallel() {
+    long start= System.currentTimeMillis();
+    Result result= JUnitCore.runClasses(ParallelComputer.methods(),
+            Example.class);
+    assertTrue(result.wasSuccessful());
+    long end= System.currentTimeMillis();
+    assertThat(end - start, betweenInclusive(1000, 1500));
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;h3&gt;Comparing double arrays&lt;/h3&gt;
+
+&lt;p&gt;Arrays of doubles can be compared, using a delta allowance for equality:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;@Test
+public void doubleArraysAreEqual() {
+    assertArrayEquals(new double[] {1.0, 2.0}, new double[] {1.0, 2.0}, 0.01);
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;h3&gt;&lt;code&gt;Filter.matchDescription&lt;/code&gt; API&lt;/h3&gt;
+
+&lt;p&gt;Since 4.0, it has been possible to run a single method using the &lt;code&gt;Request.method&lt;/code&gt; 
+API.  In 4.6, the filter that implements this is exposed as &lt;code&gt;Filter.matchDescription&lt;/code&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Documentation&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;A couple classes and packages that once had empty javadoc have been
+doc'ed.&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added how to run JUnit from the command line to the cookbook.&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;junit-4.x.zip now contains build.xml&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Bug fixes&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Fixed overly permissive @DataPoint processing (2191102)&lt;/li&gt;
+&lt;li&gt;Fixed bug in test counting after an ignored method (2106324)&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Summary of Changes in version 4.5&lt;/h2&gt;
+
 &lt;h3&gt;Installation&lt;/h3&gt;
 
 &lt;ul&gt;
@@ -556,11 +663,6 @@ with JUnit.
 &lt;br&gt;&lt;a href=&quot;doc/cookstour/cookstour.htm&quot;&gt;JUnit - A cooks tour&lt;/a&gt;
 &lt;/blockquote&gt;
 
-&lt;h2&gt;&lt;a NAME=&quot;Known Defects&quot;&gt;&lt;/a&gt;Known Defects&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;Multi-dimensional arrays are not processed correctly by assertEquals.&lt;/li&gt;
-&lt;/ul&gt;
-
 &lt;hr WIDTH=&quot;100%&quot;&gt;
 &lt;!--webbot bot=&quot;HTMLMarkup&quot; startspan --&gt;&lt;a href=&quot;http://sourceforge.net&quot;&gt;&lt;IMG
                   src=&quot;http://sourceforge.net/sflogo.php?group_id=15278&quot;</diff>
      <filename>README.html</filename>
    </modified>
    <modified>
      <diff>@@ -97,3 +97,10 @@ doc'ed.&lt;/p&gt;&lt;/li&gt;
 &lt;li&gt;&lt;p&gt;Added how to run JUnit from the command line to the cookbook.&lt;/p&gt;&lt;/li&gt;
 &lt;li&gt;&lt;p&gt;junit-4.x.zip now contains build.xml&lt;/p&gt;&lt;/li&gt;
 &lt;/ul&gt;
+
+&lt;h3&gt;Bug fixes&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Fixed overly permissive @DataPoint processing (2191102)&lt;/li&gt;
+&lt;li&gt;Fixed bug in test counting after an ignored method (2106324)&lt;/li&gt;
+&lt;/ul&gt;</diff>
      <filename>doc/ReleaseNotes4.6.html</filename>
    </modified>
    <modified>
      <diff>@@ -2,19 +2,19 @@
 
 ### Max ###
 
-- JUnit now includes a new experimental Core, `MaxCore`.  `MaxCore`
-  remembers the results of previous test runs in order to run new
-  tests out of order.  `MaxCore` prefers new tests to old tests, fast
-  tests to slow tests, and recently failing tests to tests that last
-  failed long ago.  There's currently not a standard UI for running
-  `MaxCore` included in JUnit, but there is a UI included in the JUnit
-  Max Eclipse plug-in at:
-  
-    http://www.junitmax.com/junitmax/subscribe.html
-  
-  Example:
-  
-  	public static class TwoUnEqualTests {
+JUnit now includes a new experimental Core, `MaxCore`.  `MaxCore`
+remembers the results of previous test runs in order to run new
+tests out of order.  `MaxCore` prefers new tests to old tests, fast
+tests to slow tests, and recently failing tests to tests that last
+failed long ago.  There's currently not a standard UI for running
+`MaxCore` included in JUnit, but there is a UI included in the JUnit
+Max Eclipse plug-in at:
+
+  http://www.junitmax.com/junitmax/subscribe.html
+
+Example:
+
+	public static class TwoUnEqualTests {
 		@Test
 		public void slow() throws InterruptedException {
 			Thread.sleep(100);
@@ -94,3 +94,7 @@ API.  In 4.6, the filter that implements this is exposed as `Filter.matchDescrip
 - Added how to run JUnit from the command line to the cookbook.
 
 - junit-4.x.zip now contains build.xml
+
+### Bug fixes ###
+- Fixed overly permissive @DataPoint processing (2191102)
+- Fixed bug in test counting after an ignored method (2106324)</diff>
      <filename>doc/ReleaseNotes4.6.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-~/bin/Markdown.pl ReleaseNotes4.4.txt &gt;ReleaseNotes4.4.html
\ No newline at end of file
+~/bin/Markdown.pl ReleaseNotes4.6.txt &gt;ReleaseNotes4.6.html
\ No newline at end of file</diff>
      <filename>doc/markdown.sh</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ public class Version {
 	}
 
 	public static String id() {
-		return &quot;4.5&quot;;
+		return &quot;4.6-RC1&quot;;
 	}
 	
 	public static void main(String[] args) {</diff>
      <filename>src/main/java/junit/runner/Version.java</filename>
    </modified>
    <modified>
      <diff>@@ -365,6 +365,37 @@ public class Assert {
 	}
 
 	/**
+	 * Asserts that two double arrays are equal. If they are not, an
+	 * {@link AssertionError} is thrown with the given message.
+	 * 
+	 * @param message
+	 *            the identifying message for the {@link AssertionError} (&lt;code&gt;null&lt;/code&gt;
+	 *            okay)
+	 * @param expecteds
+	 *            double array with expected values.
+	 * @param actuals
+	 *            double array with actual values
+	 */
+	public static void assertArrayEquals(String message, float[] expecteds,
+			float[] actuals, float delta) throws ArrayComparisonFailure {
+		new InexactComparisonCriteria(delta).internalArrayEquals(message, expecteds, actuals);
+	}
+
+	// TODO (Mar 10, 2009 10:52:18 AM): fix javadoc
+	/**
+	 * Asserts that two double arrays are equal. If they are not, an
+	 * {@link AssertionError} is thrown.
+	 * 
+	 * @param expecteds
+	 *            double array with expected values.
+	 * @param actuals
+	 *            double array with actual values
+	 */
+	public static void assertArrayEquals(float[] expecteds, float[] actuals, float delta) {
+		assertArrayEquals(null, expecteds, actuals, delta);
+	}
+
+	/**
 	 * Asserts that two object arrays are equal. If they are not, an
 	 * {@link AssertionError} is thrown with the given message. If
 	 * &lt;code&gt;expecteds&lt;/code&gt; and &lt;code&gt;actuals&lt;/code&gt; are &lt;code&gt;null&lt;/code&gt;,</diff>
      <filename>src/main/java/org/junit/Assert.java</filename>
    </modified>
    <modified>
      <diff>@@ -18,6 +18,10 @@ import org.junit.runners.Suite;
 import org.junit.runners.model.InitializationError;
 
 public class MaxCore {
+	public static MaxCore forFolder(String fileName) {
+		return storedLocally(new File(fileName));
+	}
+	
 	public static MaxCore storedLocally(File storedResults) {
 		return new MaxCore(storedResults);
 	}</diff>
      <filename>src/main/java/org/junit/experimental/max/MaxCore.java</filename>
    </modified>
    <modified>
      <diff>@@ -59,7 +59,10 @@ public class InexactComparisonCriteria {
 				}
 			} else
 				try {
-					Assert.assertEquals((Double)expected, (Double)actual, fDelta);
+					if (expected instanceof Double)
+						Assert.assertEquals((Double)expected, (Double)actual, fDelta);
+					else
+						Assert.assertEquals((Float)expected, (Float)actual, fDelta);
 				} catch (AssertionError e) {
 					throw new ArrayComparisonFailure(header, e, i);
 				}</diff>
      <filename>src/main/java/org/junit/internal/InexactComparisonCriteria.java</filename>
    </modified>
    <modified>
      <diff>@@ -121,17 +121,22 @@ public class AssertionTest {
 		assertArrayEquals(new short[] {1}, new short[] {1});
 		assertArrayEquals(new int[] {1}, new int[] {1});
 		assertArrayEquals(new long[] {1}, new long[] {1});
-		// TODO: add floats
 		assertArrayEquals(new double[] {1.0}, new double[] {1.0}, 1.0);
+		// TODO (Mar 10, 2009 10:47:34 AM): Import
+		Assert.assertArrayEquals(new float[] {1.0f}, new float[] {1.0f}, 1.0f);
 	}
 
 	@Test(expected=AssertionError.class)
 	public void oneDimensionalDoubleArraysAreNotEqual() {
-		// TODO: add floats
 		assertArrayEquals(new double[] {1.0}, new double[] {2.5}, 1.0);
 	}
 
 	@Test(expected=AssertionError.class)
+	public void oneDimensionalFloatArraysAreNotEqual() {
+		assertArrayEquals(new float[] {1.0f}, new float[] {2.5f}, 1.0f);
+	}
+
+	@Test(expected=AssertionError.class)
 	public void IntegerDoesNotEqualLong() {
 		assertEquals(new Integer(1), new Long(1));
 	}</diff>
      <filename>src/test/java/org/junit/tests/assertion/AssertionTest.java</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6abd4e65122ac6e3b56cf53a9a7540b61e4e687e</id>
    </parent>
  </parents>
  <author>
    <name>David Saff</name>
    <email>saff@new-host-2.home</email>
  </author>
  <url>http://github.com/KentBeck/junit/commit/68e5927ecf49bb21c396c423c3669ada15b7fe1b</url>
  <id>68e5927ecf49bb21c396c423c3669ada15b7fe1b</id>
  <committed-date>2009-04-06T19:31:18-07:00</committed-date>
  <authored-date>2009-04-06T19:31:18-07:00</authored-date>
  <message>Last changes with Kent.

Added fixed bugs to Release notes.
Updated version number.
Updated README.html</message>
  <tree>f5aa50ed4e11f6366bb8e86ec9b510f865885aae</tree>
  <committer>
    <name>David Saff</name>
    <email>saff@new-host-2.home</email>
  </committer>
</commit>
