< prev index next >

test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java

Print this page

        

*** 405,414 **** --- 405,535 ---- {"+HH:mm:ss", -2, 0, 0, "-02"}, {"+HH:mm:ss", 2, 30, 0, "+02:30"}, {"+HH:mm:ss", 2, 0, 45, "+02:00:45"}, {"+HH:mm:ss", 2, 30, 45, "+02:30:45"}, + {"+H", 2, 0, 0, "+2"}, + {"+H", -2, 0, 0, "-2"}, + {"+H", 2, 30, 0, "+2"}, + {"+H", 2, 0, 45, "+2"}, + {"+H", 2, 30, 45, "+2"}, + {"+H", 12, 0, 0, "+12"}, + {"+H", -12, 0, 0, "-12"}, + {"+H", 12, 30, 0, "+12"}, + {"+H", 12, 0, 45, "+12"}, + {"+H", 12, 30, 45, "+12"}, + + {"+Hmm", 2, 0, 0, "+2"}, + {"+Hmm", -2, 0, 0, "-2"}, + {"+Hmm", 2, 30, 0, "+230"}, + {"+Hmm", 2, 0, 45, "+2"}, + {"+Hmm", 2, 30, 45, "+230"}, + {"+Hmm", 12, 0, 0, "+12"}, + {"+Hmm", -12, 0, 0, "-12"}, + {"+Hmm", 12, 30, 0, "+1230"}, + {"+Hmm", 12, 0, 45, "+12"}, + {"+Hmm", 12, 30, 45, "+1230"}, + + {"+H:mm", 2, 0, 0, "+2"}, + {"+H:mm", -2, 0, 0, "-2"}, + {"+H:mm", 2, 30, 0, "+2:30"}, + {"+H:mm", 2, 0, 45, "+2"}, + {"+H:mm", 2, 30, 45, "+2:30"}, + {"+H:mm", 12, 0, 0, "+12"}, + {"+H:mm", -12, 0, 0, "-12"}, + {"+H:mm", 12, 30, 0, "+12:30"}, + {"+H:mm", 12, 0, 45, "+12"}, + {"+H:mm", 12, 30, 45, "+12:30"}, + + {"+HMM", 2, 0, 0, "+200"}, + {"+HMM", -2, 0, 0, "-200"}, + {"+HMM", 2, 30, 0, "+230"}, + {"+HMM", 2, 0, 45, "+200"}, + {"+HMM", 2, 30, 45, "+230"}, + {"+HMM", 12, 0, 0, "+1200"}, + {"+HMM", -12, 0, 0, "-1200"}, + {"+HMM", 12, 30, 0, "+1230"}, + {"+HMM", 12, 0, 45, "+1200"}, + {"+HMM", 12, 30, 45, "+1230"}, + + {"+H:MM", 2, 0, 0, "+2:00"}, + {"+H:MM", -2, 0, 0, "-2:00"}, + {"+H:MM", 2, 30, 0, "+2:30"}, + {"+H:MM", 2, 0, 45, "+2:00"}, + {"+H:MM", 2, 30, 45, "+2:30"}, + {"+H:MM", 12, 0, 0, "+12:00"}, + {"+H:MM", -12, 0, 0, "-12:00"}, + {"+H:MM", 12, 30, 0, "+12:30"}, + {"+H:MM", 12, 0, 45, "+12:00"}, + {"+H:MM", 12, 30, 45, "+12:30"}, + + {"+HMMss", 2, 0, 0, "+200"}, + {"+HMMss", -2, 0, 0, "-200"}, + {"+HMMss", 2, 30, 0, "+230"}, + {"+HMMss", 2, 0, 45, "+20045"}, + {"+HMMss", 2, 30, 45, "+23045"}, + {"+HMMss", 12, 0, 0, "+1200"}, + {"+HMMss", -12, 0, 0, "-1200"}, + {"+HMMss", 12, 30, 0, "+1230"}, + {"+HMMss", 12, 0, 45, "+120045"}, + {"+HMMss", 12, 30, 45, "+123045"}, + + {"+H:MM:ss", 2, 0, 0, "+2:00"}, + {"+H:MM:ss", -2, 0, 0, "-2:00"}, + {"+H:MM:ss", 2, 30, 0, "+2:30"}, + {"+H:MM:ss", 2, 0, 45, "+2:00:45"}, + {"+H:MM:ss", 2, 30, 45, "+2:30:45"}, + {"+H:MM:ss", 12, 0, 0, "+12:00"}, + {"+H:MM:ss", -12, 0, 0, "-12:00"}, + {"+H:MM:ss", 12, 30, 0, "+12:30"}, + {"+H:MM:ss", 12, 0, 45, "+12:00:45"}, + {"+H:MM:ss", 12, 30, 45, "+12:30:45"}, + + {"+HMMSS", 2, 0, 0, "+20000"}, + {"+HMMSS", -2, 0, 0, "-20000"}, + {"+HMMSS", 2, 30, 0, "+23000"}, + {"+HMMSS", 2, 0, 45, "+20045"}, + {"+HMMSS", 2, 30, 45, "+23045"}, + {"+HMMSS", 12, 0, 0, "+120000"}, + {"+HMMSS", -12, 0, 0, "-120000"}, + {"+HMMSS", 12, 30, 0, "+123000"}, + {"+HMMSS", 12, 0, 45, "+120045"}, + {"+HMMSS", 12, 30, 45, "+123045"}, + + {"+H:MM:SS", 2, 0, 0, "+2:00:00"}, + {"+H:MM:SS", -2, 0, 0, "-2:00:00"}, + {"+H:MM:SS", 2, 30, 0, "+2:30:00"}, + {"+H:MM:SS", 2, 0, 45, "+2:00:45"}, + {"+H:MM:SS", 2, 30, 45, "+2:30:45"}, + {"+H:MM:SS", 12, 0, 0, "+12:00:00"}, + {"+H:MM:SS", -12, 0, 0, "-12:00:00"}, + {"+H:MM:SS", 12, 30, 0, "+12:30:00"}, + {"+H:MM:SS", 12, 0, 45, "+12:00:45"}, + {"+H:MM:SS", 12, 30, 45, "+12:30:45"}, + + {"+Hmmss", 2, 0, 0, "+2"}, + {"+Hmmss", -2, 0, 0, "-2"}, + {"+Hmmss", 2, 30, 0, "+230"}, + {"+Hmmss", 2, 0, 45, "+20045"}, + {"+Hmmss", 2, 30, 45, "+23045"}, + {"+Hmmss", 12, 0, 0, "+12"}, + {"+Hmmss", -12, 0, 0, "-12"}, + {"+Hmmss", 12, 30, 0, "+1230"}, + {"+Hmmss", 12, 0, 45, "+120045"}, + {"+Hmmss", 12, 30, 45, "+123045"}, + + {"+H:mm:ss", 2, 0, 0, "+2"}, + {"+H:mm:ss", -2, 0, 0, "-2"}, + {"+H:mm:ss", 2, 30, 0, "+2:30"}, + {"+H:mm:ss", 2, 0, 45, "+2:00:45"}, + {"+H:mm:ss", 2, 30, 45, "+2:30:45"}, + {"+H:mm:ss", 12, 0, 0, "+12"}, + {"+H:mm:ss", -12, 0, 0, "-12"}, + {"+H:mm:ss", 12, 30, 0, "+12:30"}, + {"+H:mm:ss", 12, 0, 45, "+12:00:45"}, + {"+H:mm:ss", 12, 30, 45, "+12:30:45"}, + }; } @Test(dataProvider="offsetPatterns")
*** 435,446 **** {"HH:MM"}, {"HHMMss"}, {"HH:MM:ss"}, {"HHMMSS"}, {"HH:MM:SS"}, - {"+H"}, - {"+HMM"}, {"+HHM"}, {"+A"}, }; } --- 556,565 ----
*** 1186,1195 **** --- 1305,1454 ---- {"+HHmmss", "+0101", 3660}, {"+HHmmss", "+010101", 3661}, {"+HH:mm:ss", "+01", 3600}, {"+HH:mm:ss", "+01:01", 3660}, {"+HH:mm:ss", "+01:01:01", 3661}, + + {"+H" , "+1", 3600}, + {"+H", "+101", 3660}, + {"+H", "+10101", 3661}, + {"+H", "+1:01", 3660}, + {"+H", "+1:01:01", 3661}, + {"+H" , "+01", 3600}, + {"+H", "+0101", 3660}, + {"+H", "+010101", 3661}, + {"+H", "+01:01", 3660}, + {"+H", "+01:01:01", 3661}, + {"+Hmm", "+1", 3600}, + {"+Hmm", "+101", 3660}, + {"+Hmm", "+10101", 3661}, + {"+Hmm", "+01", 3600}, + {"+Hmm", "+0101", 3660}, + {"+Hmm", "+010101", 3661}, + {"+H:mm", "+1", 3600}, + {"+H:mm", "+1:01", 3660}, + {"+H:mm", "+1:01:01", 3661}, + {"+H:mm", "+01", 3600}, + {"+H:mm", "+01:01", 3660}, + {"+H:mm", "+01:01:01", 3661}, + {"+HMM", "+1", 3600}, + {"+HMM", "+101", 3660}, + {"+HMM", "+10101", 3661}, + {"+HMM", "+01", 3600}, + {"+HMM", "+0101", 3660}, + {"+HMM", "+010101", 3661}, + {"+H:MM", "+1", 3600}, + {"+H:MM", "+1:01", 3660}, + {"+H:MM", "+1:01:01", 3661}, + {"+H:MM", "+01", 3600}, + {"+H:MM", "+01:01", 3660}, + {"+H:MM", "+01:01:01", 3661}, + {"+HMMss", "+1", 3600}, + {"+HMMss", "+101", 3660}, + {"+HMMss", "+10101", 3661}, + {"+HMMss", "+01", 3600}, + {"+HMMss", "+0101", 3660}, + {"+HMMss", "+010101", 3661}, + {"+H:MM:ss", "+1", 3600}, + {"+H:MM:ss", "+1:01", 3660}, + {"+H:MM:ss", "+1:01:01", 3661}, + {"+H:MM:ss", "+01", 3600}, + {"+H:MM:ss", "+01:01", 3660}, + {"+H:MM:ss", "+01:01:01", 3661}, + {"+HMMSS", "+1", 3600}, + {"+HMMSS", "+101", 3660}, + {"+HMMSS", "+10101", 3661}, + {"+HMMSS", "+01", 3600}, + {"+HMMSS", "+0101", 3660}, + {"+HMMSS", "+010101", 3661}, + {"+H:MM:SS", "+1", 3600}, + {"+H:MM:SS", "+1:01", 3660}, + {"+H:MM:SS", "+1:01:01", 3661}, + {"+H:MM:SS", "+01", 3600}, + {"+H:MM:SS", "+01:01", 3660}, + {"+H:MM:SS", "+01:01:01", 3661}, + {"+Hmmss", "+1", 3600}, + {"+Hmmss", "+101", 3660}, + {"+Hmmss", "+10101", 3661}, + {"+Hmmss", "+01", 3600}, + {"+Hmmss", "+0101", 3660}, + {"+Hmmss", "+010101", 3661}, + {"+H:mm:ss", "+1", 3600}, + {"+H:mm:ss", "+1:01", 3660}, + {"+H:mm:ss", "+1:01:01", 3661}, + {"+H:mm:ss", "+01", 3600}, + {"+H:mm:ss", "+01:01", 3660}, + {"+H:mm:ss", "+01:01:01", 3661}, + }; + } + + @DataProvider(name="strictDoubleDigitHourOffsetParseData") + Object[][] data_strictDoubleDigitHour_offset_parse() { + return new Object[][] { + {"+HH", "+01", 3600}, + {"+HHmm", "+01", 3600}, + {"+HHmm", "+0101", 3660}, + {"+HH:mm", "+01", 3600}, + {"+HH:mm", "+01:01", 3660}, + {"+HHMM", "+0101", 3660}, + {"+HH:MM", "+01:01", 3660}, + {"+HHMMss", "+0101", 3660}, + {"+HHMMss", "+010101", 3661}, + {"+HH:MM:ss", "+01:01", 3660}, + {"+HH:MM:ss", "+01:01:01", 3661}, + {"+HHMMSS", "+010101", 3661}, + {"+HH:MM:SS", "+01:01:01", 3661}, + {"+HHmmss", "+01", 3600}, + {"+HHmmss", "+0101", 3660}, + {"+HHmmss", "+010101", 3661}, + {"+HH:mm:ss", "+01", 3600}, + {"+HH:mm:ss", "+01:01", 3660}, + {"+HH:mm:ss", "+01:01:01", 3661}, + }; + } + + @DataProvider(name="strictSingleDigitHourOffsetParseData") + Object[][] data_strictSingleDigitHour_offset_parse() { + return new Object[][] { + {"+H" , "+01", 3600}, + {"+H" , "+1", 3600}, + {"+Hmm", "+01", 3600}, + {"+Hmm", "+0101", 3660}, + {"+Hmm", "+1", 3600}, + {"+Hmm", "+101", 3660}, + {"+H:mm", "+01", 3600}, + {"+H:mm", "+01:01", 3660}, + {"+H:mm", "+1", 3600}, + {"+H:mm", "+1:01", 3660}, + {"+HMM", "+0101", 3660}, + {"+HMM", "+101", 3660}, + {"+H:MM", "+01:01", 3660}, + {"+H:MM", "+1:01", 3660}, + {"+HMMss", "+0101", 3660}, + {"+HMMss", "+010101", 3661}, + {"+HMMss", "+101", 3660}, + {"+HMMss", "+10101", 3661}, + {"+H:MM:ss", "+01:01", 3660}, + {"+H:MM:ss", "+01:01:01", 3661}, + {"+H:MM:ss", "+1:01", 3660}, + {"+H:MM:ss", "+1:01:01", 3661}, + {"+HMMSS", "+010101", 3661}, + {"+HMMSS", "+10101", 3661}, + {"+H:MM:SS", "+01:01:01", 3661}, + {"+H:MM:SS", "+1:01:01", 3661}, + {"+Hmmss", "+01", 3600}, + {"+Hmmss", "+0101", 3660}, + {"+Hmmss", "+010101", 3661}, + {"+Hmmss", "+1", 3600}, + {"+Hmmss", "+101", 3660}, + {"+Hmmss", "+10101", 3661}, + {"+H:mm:ss", "+01", 3600}, + {"+H:mm:ss", "+01:01", 3660}, + {"+H:mm:ss", "+01:01:01", 3661}, + {"+H:mm:ss", "+1", 3600}, + {"+H:mm:ss", "+1:01", 3660}, + {"+H:mm:ss", "+1:01:01", 3661}, }; } @Test(dataProvider="lenientOffsetParseData") public void test_lenient_offset_parse_1(String pattern, String offset, int offsetSeconds) {
*** 1201,1226 **** public void test_lenient_offset_parse_2() { assertEquals(new DateTimeFormatterBuilder().parseLenient().appendOffsetId().toFormatter().parse("+01").get(OFFSET_SECONDS), 3600); } @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffsetId() { ! assertEquals(new DateTimeFormatterBuilder().appendOffsetId().toFormatter().parse("+01").get(OFFSET_SECONDS), ! 3600); } @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffset_1() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+HH:MM:ss", "Z").toFormatter().parse("+01").get(OFFSET_SECONDS), ! 3600); } @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffset_2() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+HHMMss", "Z").toFormatter().parse("+01").get(OFFSET_SECONDS), ! 3600); } @Test public void test_basic_iso_date() { assertEquals(BASIC_ISO_DATE.parse("20021231+01").get(OFFSET_SECONDS), 3600); --- 1460,1694 ---- public void test_lenient_offset_parse_2() { assertEquals(new DateTimeFormatterBuilder().parseLenient().appendOffsetId().toFormatter().parse("+01").get(OFFSET_SECONDS), 3600); } + @Test(dataProvider="strictDoubleDigitHourOffsetParseData") + public void test_strictDoubleDigitHour_offset_parse_1(String pattern, String offset, int offsetSeconds) { + assertEquals(new DateTimeFormatterBuilder().appendOffset(pattern, "Z").toFormatter() + .parse(offset).get(OFFSET_SECONDS), offsetSeconds); + } + + @Test(dataProvider="strictDoubleDigitHourOffsetParseData") + public void test_strictDoubleDigitHour_offset_parse_2(String pattern, String offset, int offsetSeconds) { + assertEquals(new DateTimeFormatterBuilder().appendOffset(pattern, "Z") + .appendLiteral("text").toFormatter().parse(offset + "text").get(OFFSET_SECONDS), offsetSeconds); + } + + @Test(dataProvider="strictSingleDigitHourOffsetParseData") + public void test_strictSingleDigitHour_offset_parse_1(String pattern, String offset, int offsetSeconds) { + assertEquals(new DateTimeFormatterBuilder().appendOffset(pattern, "Z").toFormatter() + .parse(offset).get(OFFSET_SECONDS), offsetSeconds); + } + + @Test(dataProvider="strictSingleDigitHourOffsetParseData") + public void test_strictSingleDigitHour_offset_parse_2(String pattern, String offset, int offsetSeconds) { + assertEquals(new DateTimeFormatterBuilder().appendOffset(pattern, "Z") + .appendLiteral("text").toFormatter().parse(offset + "text").get(OFFSET_SECONDS), offsetSeconds); + } + + @DataProvider(name="strictOffsetAdjacentParseValidPatternData") + Object[][] data_strict_offset_adjacentParse_validPattern() { + return new Object[][] { + {"+HH", "+01", 3600}, + {"+HHmm", "+0101", 3660}, + {"+HH:mm", "+01", 3600}, + {"+HH:mm", "+01:01", 3660}, + {"+HHMM", "+0101", 3660}, + {"+HH:MM", "+01:01", 3660}, + {"+HHMMss", "+010101", 3661}, + {"+HH:MM:ss", "+01:01", 3660}, + {"+HH:MM:ss", "+01:01:01", 3661}, + {"+HHMMSS", "+010101", 3661}, + {"+HH:MM:SS", "+01:01:01", 3661}, + {"+HHmmss", "+010101", 3661}, + {"+HH:mm:ss", "+01", 3600}, + {"+HH:mm:ss", "+01:01", 3660}, + {"+HH:mm:ss", "+01:01:01", 3661}, + + {"+H" , "+01", 3600}, + {"+Hmm", "+0101", 3660}, + {"+H:mm", "+01", 3600}, + {"+H:mm", "+01:01", 3660}, + {"+H:mm", "+1:01", 3660}, + {"+HMM", "+0101", 3660}, + {"+H:MM", "+01:01", 3660}, + {"+H:MM", "+1:01", 3660}, + {"+HMMss", "+010101", 3661}, + {"+H:MM:ss", "+01:01", 3660}, + {"+H:MM:ss", "+01:01:01", 3661}, + {"+H:MM:ss", "+1:01", 3660}, + {"+H:MM:ss", "+1:01:01", 3661}, + {"+HMMSS", "+010101", 3661}, + {"+H:MM:SS", "+01:01:01", 3661}, + {"+H:MM:SS", "+1:01:01", 3661}, + {"+Hmmss", "+010101", 3661}, + {"+H:mm:ss", "+01", 3600}, + {"+H:mm:ss", "+01:01", 3660}, + {"+H:mm:ss", "+01:01:01", 3661}, + {"+H:mm:ss", "+1:01", 3660}, + {"+H:mm:ss", "+1:01:01", 3661}, + }; + } + + @Test(dataProvider="strictOffsetAdjacentParseValidPatternData") + public void test_strict_offset_adjacentValidPattern_parse(String pattern, String offset, int offsetSeconds) { + TemporalAccessor tmp = new DateTimeFormatterBuilder().appendOffset(pattern, "Z") + .appendValue(HOUR_OF_DAY, 2).toFormatter().parse(offset + "12"); + assertEquals(tmp.get(OFFSET_SECONDS), offsetSeconds); + assertEquals(tmp.get(HOUR_OF_DAY), 12); + } + + @DataProvider(name="strictOffsetAdjacentParseInvalidPatternData") + Object[][] data_strict_offset_adjacentParse_invalidPattern() { + return new Object[][] { + {"+HHmm", "+01", 3600}, + {"+HHMMss", "+0101", 3660}, + {"+HHmmss", "+01", 3600}, + {"+HHmmss", "+0101", 3660}, + {"+H" , "+1", 3600}, + {"+Hmm", "+01", 3600}, + {"+H:mm", "+1", 3600}, + {"+Hmm", "+1", 3600}, + {"+Hmm", "+101", 3660}, + {"+HMM", "+101", 3660}, + {"+HMMss", "+0101", 3660}, + {"+HMMss", "+101", 3660}, + {"+HMMss", "+10101", 3661}, + {"+HMMSS", "+10101", 3661}, + {"+Hmmss", "+01", 3600}, + {"+Hmmss", "+0101", 3660}, + {"+Hmmss", "+1", 3600}, + {"+Hmmss", "+101", 3660}, + {"+Hmmss", "+10101", 3661}, + {"+H:mm:ss", "+1", 3600}, + }; + } + + @Test(dataProvider="strictOffsetAdjacentParseInvalidPatternData", expectedExceptions=DateTimeParseException.class) + public void test_strict_offset_adjacentInvalidPattern_parse(String pattern, String offset, int offsetSeconds) { + new DateTimeFormatterBuilder().appendOffset(pattern, "Z").appendValue(HOUR_OF_DAY, 2) + .toFormatter().parse(offset + "12").get(OFFSET_SECONDS); + } + + @DataProvider(name="lenientOffsetAdjacentParseValidPatternData") + Object[][] data_lenient_offset_adjacentParse_validPattern() { + return new Object[][] { + {"+HH:mm", "+01", 3600}, + {"+HH:mm", "+01:01", 3660}, + {"+HH:MM", "+01:01", 3660}, + {"+HH:MM:ss", "+01:01", 3660}, + {"+HH:MM:ss", "+01:01:01", 3661}, + {"+HHMMSS", "+010101", 3661}, + {"+HH:MM:SS", "+01:01:01", 3661}, + {"+HHmmss", "+010101", 3661}, + {"+HH:mm:ss", "+01", 3600}, + {"+HH:mm:ss", "+01:01", 3660}, + {"+HH:mm:ss", "+01:01:01", 3661}, + {"+H:mm", "+01", 3600}, + {"+H:mm", "+01:01", 3660}, + {"+H:mm", "+1:01", 3660}, + {"+H:MM", "+01:01", 3660}, + {"+H:MM", "+1:01", 3660}, + {"+HMMss", "+010101", 3661}, + {"+H:MM:ss", "+01:01", 3660}, + {"+H:MM:ss", "+01:01:01", 3661}, + {"+H:MM:ss", "+1:01", 3660}, + {"+H:MM:ss", "+1:01:01", 3661}, + {"+HMMSS", "+010101", 3661}, + {"+H:MM:SS", "+01:01:01", 3661}, + {"+H:MM:SS", "+1:01:01", 3661}, + {"+Hmmss", "+010101", 3661}, + {"+H:mm:ss", "+01", 3600}, + {"+H:mm:ss", "+01:01", 3660}, + {"+H:mm:ss", "+01:01:01", 3661}, + {"+H:mm:ss", "+1:01", 3660}, + {"+H:mm:ss", "+1:01:01", 3661}, + }; + } + + @Test(dataProvider="lenientOffsetAdjacentParseValidPatternData") + public void test_lenient_offset_adjacentValidPattern_parse(String pattern, String offset, int offsetSeconds) { + TemporalAccessor tmp = new DateTimeFormatterBuilder().parseLenient() + .appendOffset(pattern, "Z").appendValue(HOUR_OF_DAY, 2).toFormatter().parse(offset + "12"); + assertEquals(tmp.get(OFFSET_SECONDS), offsetSeconds); + assertEquals(tmp.get(HOUR_OF_DAY), 12); + } + + @Test + public void test_lenient_offset_adjacentValidPattern_parse1() { + TemporalAccessor tmp = new DateTimeFormatterBuilder().parseLenient() + .appendOffset("+HMMSS", "Z").appendValue(HOUR_OF_DAY, 2).toFormatter().parse("+10101" + "12"); + //Equivalent to +101011. InLenienet mode will parse upto 6 digit if possible. + //It will take 1 digit from HOUR_OF_DAY. + assertEquals(tmp.get(OFFSET_SECONDS), 36611); + assertEquals(tmp.get(HOUR_OF_DAY), 2); + } + + @DataProvider(name="lenientOffsetAdjacentParseInvalidPatternData") + Object[][] data_lenient_offset_adjacentParse_invalidPattern() { + return new Object[][] { + {"+HH", "+01", 3600}, + {"+HHmm", "+0101", 3660}, + {"+HHMM", "+0101", 3660}, + {"+H" , "+01", 3600}, + {"+Hmm", "+0101", 3660}, + {"+HMM", "+0101", 3660}, + }; + } + + @Test(dataProvider="lenientOffsetAdjacentParseInvalidPatternData", expectedExceptions=DateTimeParseException.class) + public void test_lenient_offset_adjacentInvalidPattern_parse(String pattern, String offset, int offsetSeconds) { + new DateTimeFormatterBuilder().parseLenient().appendOffset(pattern, "Z") + .appendValue(HOUR_OF_DAY, 2).toFormatter().parse(offset + "12").get(OFFSET_SECONDS); + } + + @DataProvider(name="badValues") + Object[][] data_badOffsetValues() { + return new Object[][] { + {"+HH", "+24"}, + {"+HHMM", "-1361"}, + {"+HH:MM:ss", "+13:12:66"}, + {"+HH:MM:SS", "+24:60:60"}, + {"+HHMMSS", "369999"}, + {"+H:MM", "+28:12"}, + }; + } + + @Test(dataProvider="badValues", expectedExceptions=DateTimeParseException.class) + public void test_badOffset_parse(String pattern, String offset) { + new DateTimeFormatterBuilder().appendOffset(pattern, "Z").toFormatter().parse(offset); + } + @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffsetId() { ! assertEquals(new DateTimeFormatterBuilder().appendOffsetId().toFormatter() ! .parse("+01").get(OFFSET_SECONDS), 3600); } @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffset_1() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+HH:MM:ss", "Z") ! .toFormatter().parse("+01").get(OFFSET_SECONDS), 3600); } @Test(expectedExceptions=DateTimeParseException.class) public void test_strict_appendOffset_2() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+HHMMss", "Z") ! .toFormatter().parse("+01").get(OFFSET_SECONDS), 3600); ! } ! ! @Test(expectedExceptions=DateTimeParseException.class) ! public void test_strict_appendOffset_3() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+H:MM:ss", "Z") ! .toFormatter().parse("+1").get(OFFSET_SECONDS), 3600); ! } ! ! @Test(expectedExceptions=DateTimeParseException.class) ! public void test_strict_appendOffset_4() { ! assertEquals(new DateTimeFormatterBuilder().appendOffset("+HMMss", "Z") ! .toFormatter().parse("+1").get(OFFSET_SECONDS), 3600); } @Test public void test_basic_iso_date() { assertEquals(BASIC_ISO_DATE.parse("20021231+01").get(OFFSET_SECONDS), 3600);
< prev index next >