test/java/time/tck/java/time/chrono/TCKTestServiceLoader.java

Print this page

        

@@ -58,27 +58,49 @@
  */
 package tck.java.time.chrono;
 
 import static org.testng.Assert.assertEquals;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.time.LocalDate;
-import java.time.chrono.Chronology;
 import java.time.chrono.ChronoLocalDate;
+import java.time.chrono.Chronology;
 
 import org.testng.annotations.Test;
 
 /**
  * Tests that a custom Chronology is available via the ServiceLoader.
  * The CopticChronology is configured via META-INF/services/java.time.chrono.Chronology.
  */
 @Test
 public class TCKTestServiceLoader {
 
-     @Test(groups={"tck"})
+     @Test
      public void test_CopticServiceLoader() {
         Chronology chrono = Chronology.of("Coptic");
         ChronoLocalDate copticDate = chrono.date(1729, 4, 27);
         LocalDate ld = LocalDate.from(copticDate);
         assertEquals(ld, LocalDate.of(2013, 1, 5), "CopticDate does not match LocalDate");
     }
 
+
+    //-----------------------------------------------------------------------
+    // Test Serialization of Loaded Coptic Calendar
+    //-----------------------------------------------------------------------
+    @Test
+    public void test_ChronoSerialization() throws Exception {
+        Chronology chrono = Chronology.of("Coptic");
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream out = new ObjectOutputStream(baos);
+        out.writeObject(chrono);
+        out.close();
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+        ObjectInputStream in = new ObjectInputStream(bais);
+        @SuppressWarnings("unchecked")
+        Chronology ser = (Chronology) in.readObject();
+        assertEquals(ser, chrono, "deserialized Chronology is wrong");
+    }
 }