Hi Jim,

I just had a look at this JIRA and had a question about it. It sounds from your description that we are seeing a difference between ICU's and Harmony's implementation of some Calendar related classes. This seems to me like a bug in either our code or ICU's and I wasn't sure that fixing the tests to pass was the right thing to do here. My thoughts were that we need to do one of:
- raise a bug with ICU and fix the tests for now.
- fix a bug in our GregorianCalendar class.
- delegate from our GregorianCalendar class to ICU's version (why don't we do this already?).

I may be missing something, so I thought I'd ask - it just seems that there is a bug/discrepancy here somewhere that needs to be fixed. I guess my question is: why is this a fix to the tests and not the code? :)

Regards,
Oliver


Jim Yu (JIRA) wrote:
[classlib][text] 
SimpleDateFormatTest.test_parseLjava_lang_StringLjava_text_ParsePosition would 
fail
----------------------------------------------------------------------------------------------------

                 Key: HARMONY-6207
                 URL: https://issues.apache.org/jira/browse/HARMONY-6207
             Project: Harmony
          Issue Type: Test
          Components: Classlib
    Affects Versions: 5.0M9
            Reporter: Jim Yu
             Fix For: 5.0M10


Currently, the testcase SimpleDateFormatTest.test_parseLjava_lang_StringLjava_text_ParsePosition would fail. I've investigated the root cause of this failure and found the main reason is that the GregorianCalendar class used in the testcase is implemented by Harmony itself not delegating to ICU. So when we call getTime of GregorianCalendar to get an Date instance as the expected value, it would not equal to the one created by ICU as the result. E.g. the following testcase [1] would fail while [2] can pass. So I use Date instances directly for these failing ones in my patch. [1] test.parse("yyy", "99", new GregorianCalendar(99, Calendar.JANUARY, 1)
                .getTime(), 0, 2);
[2] test.parse("yyy", "99", new com.ibm.icu.util.GregorianCalendar(99, 
Calendar.JANUARY, 1)
                .getTime(), 0, 2);



--
Oliver Deakin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU

Reply via email to