You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Henri Yandell (JIRA)" <ji...@apache.org> on 2006/10/07 02:26:19 UTC

[jira] Created: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Create more tests to test out the +=31 replacement code in DurationFormatUtils.
-------------------------------------------------------------------------------

                 Key: LANG-282
                 URL: http://issues.apache.org/jira/browse/LANG-282
             Project: Commons Lang
          Issue Type: Task
            Reporter: Henri Yandell
         Assigned To: Henri Yandell
             Fix For: 2.3


Code being:

        while (days < 0) {
            end.add(Calendar.MONTH, -1);
            days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
//days += 31; // TODO: Need tests to show this is bad and the new code is good.
// HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
// 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
// Also it's contextual - if asked for no M in the format then I should probably
// be doing no calculating here.
            months -= 1;
            end.add(Calendar.MONTH, 1);
        }



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Closed: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Henri Yandell (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/LANG-282?page=all ]

Henri Yandell closed LANG-282.
------------------------------

    Resolution: Fixed

This has (I think) now been tested to death (last commit on this subject is r488926, more tests and bugfixes/rewrite). 

I'm sure there are still bugs hiding away in here, but it's many leagues ahead of the version in 2.2.

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Commented: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Henri Yandell (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/LANG-282?page=comments#action_12456736 ] 
            
Henri Yandell commented on LANG-282:
------------------------------------

Going with the 1 month 23 day choice as the code currently does that - with a recommendation of Joda Time if more control is needed.

 svn ci -m "Added javadoc to explain the quandry in how to count month/day differences" src/java/
Sending        src/java/org/apache/commons/lang/time/DurationFormatUtils.java
Transmitting file data .
Committed revision 483891.

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Commented: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Stephen Colebourne (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/LANG-282?page=comments#action_12456773 ] 
            
Stephen Colebourne commented on LANG-282:
-----------------------------------------

In fact, there is a third answer to the question 2 months and -5 days.

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Commented: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Henri Yandell (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/LANG-282?page=comments#action_12456737 ] 
            
Henri Yandell commented on LANG-282:
------------------------------------

The following causes an error in DurationFormatUtilsTest.testEdgeDurations. 

+        assertEqualDuration( "54", new int[] { 2006, 0, 15, 0, 0, 0 }, 
+                             new int[] { 2006, 2, 10, 0, 0, 0 }, "dd");

It is bizarrely returning 77.

77 - 10 - 16 - 28 = 23.  (ie: - Mar - Jan, - Feb)

Interesting that that is the number of days found when calculating "MM dd".

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Commented: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Henri Yandell (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/LANG-282?page=comments#action_12457225 ] 
            
Henri Yandell commented on LANG-282:
------------------------------------

More tests added and bugfixes - including a switch from the 1m23d choice to the 1m26d choice as this balances more nicely with the  code to work out the actual number of days between the two. 

The actual code still chooses Stephen's third answer of 2m-5d as it always has; however it then attempts to make that more readable. Another way to look at this choice other than the days-first/months-first concept is "which month do you take the -5 away from, the first or the penultimate?".  The code just changed from removing 5 from the penultimate to removing 5 from the first.

See r485481.

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


[jira] Updated: (LANG-282) Create more tests to test out the +=31 replacement code in DurationFormatUtils.

Posted by "Henri Yandell (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/LANG-282?page=all ]

Henri Yandell updated LANG-282:
-------------------------------

    Fix Version/s: 2.3
                       (was: 3.0)

> Create more tests to test out the +=31 replacement code in DurationFormatUtils.
> -------------------------------------------------------------------------------
>
>                 Key: LANG-282
>                 URL: http://issues.apache.org/jira/browse/LANG-282
>             Project: Commons Lang
>          Issue Type: Task
>            Reporter: Henri Yandell
>         Assigned To: Henri Yandell
>             Fix For: 2.3
>
>
> Code being:
>         while (days < 0) {
>             end.add(Calendar.MONTH, -1);
>             days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
> //days += 31; // TODO: Need tests to show this is bad and the new code is good.
> // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
> // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
> // Also it's contextual - if asked for no M in the format then I should probably
> // be doing no calculating here.
>             months -= 1;
>             end.add(Calendar.MONTH, 1);
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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