< prev index next >

test/jdk/java/time/tck/java/time/format/TCKInstantPrinterParser.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 67,82 **** --- 67,88 ---- import java.time.OffsetDateTime; import java.time.Period; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; + import java.time.format.DateTimeParseException; import java.time.format.ResolverStyle; import java.time.temporal.TemporalAccessor; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; + /* + * @test + * @bug 8166138 + */ + /** * Test DateTimeFormatterBuilder.appendInstant(). */ @Test public class TCKInstantPrinterParser {
*** 198,225 **** return new Object[][] { {0, 0, "1970-01-01T00:00:00Z"}, {0, 0, "1970-01-01T00:00:00Z"}, {0, 0, "1970-01-01T00:00:00.0Z"}, {0, 0, "1970-01-01T00:00:00.000Z"}, ! {0, 0, "1970-01-01T00:00:00.000000000Z"}, {-1, 0, "1969-12-31T23:59:59Z"}, {1, 0, "1970-01-01T00:00:01Z"}, {60, 0, "1970-01-01T00:01:00Z"}, {3600, 0, "1970-01-01T01:00:00Z"}, {86400, 0, "1970-01-02T00:00:00Z"}, {182, 234000000, "1970-01-01T00:03:02.234Z"}, {182, 234000000, "1970-01-01T00:03:02.2340Z"}, {182, 234000000, "1970-01-01T00:03:02.23400Z"}, {182, 234000000, "1970-01-01T00:03:02.234000Z"}, - {182, 234000000, "1970-01-01T00:03:02.234000000Z"}, ! {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-01T23:59:59.123456789Z"}, - {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999Z"}, - {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000Z"}, }; } @Test(dataProvider="parseDigits") public void test_parse_digitsMinusOne(long instantSecs, int nano, String input) { --- 204,240 ---- return new Object[][] { {0, 0, "1970-01-01T00:00:00Z"}, {0, 0, "1970-01-01T00:00:00Z"}, {0, 0, "1970-01-01T00:00:00.0Z"}, {0, 0, "1970-01-01T00:00:00.000Z"}, ! ! {0, 0, "1970-01-01T00:00:00+00:00"}, ! {0, 0, "1970-01-01T05:30:00+05:30"}, ! {0, 0, "1970-01-01T01:00:00.0+01:00"}, {-1, 0, "1969-12-31T23:59:59Z"}, {1, 0, "1970-01-01T00:00:01Z"}, {60, 0, "1970-01-01T00:01:00Z"}, {3600, 0, "1970-01-01T01:00:00Z"}, {86400, 0, "1970-01-02T00:00:00Z"}, + {-1, 0, "1969-12-31T23:59:59+00:00"}, + {1, 0, "1970-01-01T05:30:01+05:30"}, + {60, 0, "1969-12-31T19:01:00-05:00"}, + {3600, 0, "1970-01-01T06:30:00+05:30"}, + {86400, 0, "1970-01-01T19:00:00-05:00"}, + {182, 234000000, "1970-01-01T00:03:02.234Z"}, {182, 234000000, "1970-01-01T00:03:02.2340Z"}, {182, 234000000, "1970-01-01T00:03:02.23400Z"}, {182, 234000000, "1970-01-01T00:03:02.234000Z"}, ! {182, 234000000, "1970-01-01T00:03:02.234+00:00"}, ! {182, 234000000, "1970-01-01T05:33:02.2340+05:30"}, ! {182, 234000000, "1969-12-31T19:03:02.23400-05:00"}, ! {182, 234000000, "1970-01-01T00:03:02.234000+00:00"}, }; } @Test(dataProvider="parseDigits") public void test_parse_digitsMinusOne(long instantSecs, int nano, String input) {
*** 228,253 **** assertEquals(f.parse(input, Instant::from), expected); assertEquals(f.parse(input).query(DateTimeFormatter.parsedExcessDays()), Period.ZERO); assertEquals(f.parse(input).query(DateTimeFormatter.parsedLeapSecond()), Boolean.FALSE); } ! @Test(dataProvider="parseDigits") public void test_parse_digitsNine(long instantSecs, int nano, String input) { DateTimeFormatter f = new DateTimeFormatterBuilder().appendInstant(9).toFormatter(); - if (input.charAt(input.length() - 11) == '.') { Instant expected = Instant.ofEpochSecond(instantSecs, nano); assertEquals(f.parse(input, Instant::from), expected); assertEquals(f.parse(input).query(DateTimeFormatter.parsedExcessDays()), Period.ZERO); assertEquals(f.parse(input).query(DateTimeFormatter.parsedLeapSecond()), Boolean.FALSE); - } else { - try { - f.parse(input, Instant::from); - fail(); - } catch (DateTimeException ex) { - // expected } } } @Test public void test_parse_endOfDay() { Instant expected = OffsetDateTime.of(1970, 2, 4, 0, 0, 0, 0, ZoneOffset.UTC).toInstant(); --- 243,292 ---- assertEquals(f.parse(input, Instant::from), expected); assertEquals(f.parse(input).query(DateTimeFormatter.parsedExcessDays()), Period.ZERO); assertEquals(f.parse(input).query(DateTimeFormatter.parsedLeapSecond()), Boolean.FALSE); } ! @DataProvider(name="parseNineDigits") ! Object[][] data_parse_ninedigits() { ! return new Object[][] { ! {0, 0, "1970-01-01T00:00:00.000000000Z"}, ! {0, 0, "1970-01-01T05:30:00.000000000+05:30"}, ! ! {182, 234000000, "1970-01-01T00:03:02.234000000Z"}, ! {182, 234000000, "1970-01-01T01:03:02.234000000+01:00"}, ! ! {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-01T23:59:59.123456789Z"}, ! {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-02T05:29:59.123456789+05:30"}, ! ! {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999Z"}, ! {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000Z"}, ! {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999+00:00"}, ! {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000+00:00"}, ! }; ! } ! ! @Test(dataProvider="parseNineDigits") public void test_parse_digitsNine(long instantSecs, int nano, String input) { DateTimeFormatter f = new DateTimeFormatterBuilder().appendInstant(9).toFormatter(); Instant expected = Instant.ofEpochSecond(instantSecs, nano); assertEquals(f.parse(input, Instant::from), expected); assertEquals(f.parse(input).query(DateTimeFormatter.parsedExcessDays()), Period.ZERO); assertEquals(f.parse(input).query(DateTimeFormatter.parsedLeapSecond()), Boolean.FALSE); } + + @DataProvider(name="parseMaxMinInstant") + Object[][] data_parse_MaxMinInstant() { + return new Object[][] { + {"+1000000000-12-31T23:59:59.999999999-01:00"}, + {"-1000000000-01-01T00:00:00.000000000+01:00"} + }; } + + @Test(dataProvider="parseMaxMinInstant", expectedExceptions=DateTimeParseException.class) + public void test_invalid_Instant(String input) { + DateTimeFormatter f = new DateTimeFormatterBuilder().appendInstant(-1).toFormatter(); + f.parse(input, Instant::from); } @Test public void test_parse_endOfDay() { Instant expected = OffsetDateTime.of(1970, 2, 4, 0, 0, 0, 0, ZoneOffset.UTC).toInstant();
*** 281,286 **** --- 320,333 ---- @Test(expectedExceptions=IllegalArgumentException.class) public void test_appendInstant_tooBig() { new DateTimeFormatterBuilder().appendInstant(10); } + //------------------------------------------------------------------------ + @Test + public void test_equality() { + Instant instant1 = Instant.parse("2018-09-12T22:15:51+05:30"); + Instant instant2 = Instant.parse("2018-09-12T16:45:51Z"); + assertEquals(instant2, instant1); + } + }
< prev index next >