< prev index next >

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

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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.

@@ -73,10 +73,15 @@
 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 {

@@ -200,22 +205,38 @@
                 {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"},
 
+                {0, 0, "1970-01-01T00:00:00+00:00"},
+                {0, 0, "1970-01-01T00:00:00+00:00"},
+                {0, 0, "1970-01-01T00:00:00.0+00:00"},
+                {0, 0, "1970-01-01T00:00:00.000+00: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+0000"},
+                {1, 0, "1970-01-01T00:00:01+0000"},
+                {60, 0, "1970-01-01T00:01:00+0000"},
+                {3600, 0, "1970-01-01T01:00:00+0000"},
+                {86400, 0, "1970-01-02T00:00:00+0000"},
+
                 {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"},
 
+                {182, 234000000, "1970-01-01T00:03:02.234+00"},
+                {182, 234000000, "1970-01-01T00:03:02.2340+00"},
+                {182, 234000000, "1970-01-01T00:03:02.23400+00"},
+                {182, 234000000, "1970-01-01T00:03:02.234000+00"},
+
                 {((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"},
         };

@@ -246,10 +267,44 @@
                 // expected
             }
         }
     }
 
+    @DataProvider(name="parseDigitsWithOffsets")
+    Object[][] data_parse_ninedigits() {
+        return new Object[][] {
+                {0, 0, "1970-01-01T00:00:00.000000000+00:00"},
+                {0, 0, "1970-01-01T00:00:00.000000000+0000"},
+                {0, 0, "1970-01-01T00:00:00.000000000+00"},
+
+                {182, 234000000, "1970-01-01T00:03:02.234000000+00:00"},
+                {182, 234000000, "1970-01-01T00:03:02.234000000+0000"},
+                {182, 234000000, "1970-01-01T00:03:02.234000000+00"},
+
+                {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-01T23:59:59.123456789+00:00"},
+                {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-01T23:59:59.123456789+0000"},
+                {((23 * 60) + 59) * 60 + 59, 123456789, "1970-01-01T23:59:59.123456789+00"},
+
+                {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999+00:00"},
+                {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999+0000"},
+                {Instant.MAX.getEpochSecond(), 999999999, "+1000000000-12-31T23:59:59.999999999+00"},
+
+                {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000+00:00"},
+                {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000+0000"},
+                {Instant.MIN.getEpochSecond(), 0, "-1000000000-01-01T00:00:00.000000000+00"},
+        };
+    }
+    
+    @Test(dataProvider="parseDigitsWithOffsets")
+    public void test_parse_digitsNine_withOffset(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);
+    }
+
     @Test
     public void test_parse_endOfDay() {
         Instant expected = OffsetDateTime.of(1970, 2, 4, 0, 0, 0, 0, ZoneOffset.UTC).toInstant();
         DateTimeFormatter f = new DateTimeFormatterBuilder().appendInstant(-1).toFormatter();
         for (ResolverStyle style : ResolverStyle.values()) {

@@ -281,6 +336,14 @@
     @Test(expectedExceptions=IllegalArgumentException.class)
     public void test_appendInstant_tooBig() {
         new DateTimeFormatterBuilder().appendInstant(10);
     }
 
+    //------------------------------------------------------------------------
+    @Test
+    public void test_equality_withAndWithoutOffset() {
+        Instant instant1 = Instant.parse("2018-09-12T16:45:51+00:00");
+        Instant instant2 = Instant.parse("2018-09-12T16:45:51Z");
+        assertEquals(instant2, instant1);
+    }
+
 }
< prev index next >