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