You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2006/05/01 07:32:43 UTC

svn commit: r398530 - in /jakarta/commons/proper/lang/trunk/src: java/org/apache/commons/lang/time/FastDateFormat.java test/org/apache/commons/lang/time/FastDateFormatTest.java

Author: bayard
Date: Sun Apr 30 22:32:43 2006
New Revision: 398530

URL: http://svn.apache.org/viewcvs?rev=398530&view=rev
Log:
Adding unit test for #39410. Implementing fix by switching from using Math.log to Integer.toString to figure out the number of digits. 

Modified:
    jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/FastDateFormat.java
    jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/time/FastDateFormatTest.java

Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/FastDateFormat.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/FastDateFormat.java?rev=398530&r1=398529&r2=398530&view=diff
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/FastDateFormat.java (original)
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/FastDateFormat.java Sun Apr 30 22:32:43 2006
@@ -31,6 +31,8 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import org.apache.commons.lang.Validate;
+
 /**
  * <p>FastDateFormat is a fast and thread-safe version of
  * {@link java.text.SimpleDateFormat}.</p>
@@ -93,9 +95,6 @@
      */
     public static final int SHORT = DateFormat.SHORT;
     
-    // package scoped as used by inner class
-    static final double LOG_10 = Math.log(10);
-
     private static String cDefaultPattern;
 
     private static Map cInstanceCache = new HashMap(7);
@@ -1283,7 +1282,8 @@
                 if (value < 1000) {
                     digits = 3;
                 } else {
-                    digits = (int)(Math.log(value) / LOG_10) + 1;
+                    Validate.isTrue(value > -1, "Negative values should not be possible", value);
+                    digits = Integer.toString(value).length();
                 }
                 for (int i = mSize; --i >= digits; ) {
                     buffer.append('0');

Modified: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/time/FastDateFormatTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/time/FastDateFormatTest.java?rev=398530&r1=398529&r2=398530&view=diff
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/time/FastDateFormatTest.java (original)
+++ jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/time/FastDateFormatTest.java Sun Apr 30 22:32:43 2006
@@ -251,6 +251,17 @@
         assertEquals("0999/01/01", format.format(cal));
     }
     /**
+     * Show Bug #39410 is solved
+     */
+    public void testMilleniumBug() {
+        Calendar cal = Calendar.getInstance();
+        FastDateFormat format = FastDateFormat.getInstance("dd.MM.yyyy");
+
+        cal.set(1000,0,1);
+        assertEquals("01.01.1000", format.format(cal));
+    }
+
+    /**
      * testLowYearPadding showed that the date was buggy
      * This test confirms it, getting 366 back as a date
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org