< prev index next >

test/jdk/java/text/Format/ChoiceFormat/Bug4185732Test.java

Print this page
@@ -1,7 +1,7 @@
  /*
-  * Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved.
+  * Copyright (c) 1999, 2023, 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.

@@ -19,18 +19,10 @@
   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   * or visit www.oracle.com if you need additional information or have any
   * questions.
   */
  
- /*
-  * @test
-  * @bug 4185732
-  * @library /java/text/testlib
-  * @build Bug4185732Test IntlTest HexDumpReader
-  * @run main Bug4185732Test
-  * @summary test that ChoiceFormat invariants are preserved across serialization
-  */
  /*
   * This file is available under and governed by the GNU General Public
   * License version 2 only, as published by the Free Software Foundation.
   * However, the following notice accompanied the original version of this
   * file and, per its terms, should not be removed:

@@ -61,60 +53,52 @@
   * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
   * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
   * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
   */
  
- import java.util.*;
- import java.io.*;
+ /*
+  * @test
+  * @bug 4185732
+  * @library /java/text/testlib
+  * @build HexDumpReader
+  * @summary Test that ChoiceFormat invariants are preserved across serialization.
+  *          This test depends on Bug4185732.ser.txt and will fail otherwise.
+  * @run junit Bug4185732Test
+  */
+ 
+ import java.io.InvalidObjectException;
+ import java.io.ObjectInputStream;
  import java.text.ChoiceFormat;
  
- /**
-  *  A Locale can never contains language codes of he, yi or id.
-  */
- public class Bug4185732Test extends IntlTest {
-     public static void main(String[] args) throws Exception {
-         if (args.length == 1 && args[0].equals("prepTest")) {
-             prepTest();
-         } else {
-             new Bug4185732Test().run(args);
-         }
-     }
+ import org.junit.jupiter.api.Test;
  
-     public void testIt() throws Exception {
+ import static org.junit.jupiter.api.Assertions.fail;
+ 
+ public class Bug4185732Test {
+ 
+     /*
+      * The ChoiceFormat class requires that its choiceFormats and choiceLimits
+      * arrays have the same length. This test ensures that the invariant is enforced
+      * during the readObject() call.
+      */
+     @Test
+     public void choiceFormatSerializationInvariantsTest() {
          try {
+             // A serialized ChoiceFormat with unequal formats and limits
              final ObjectInputStream in
                  = new ObjectInputStream(HexDumpReader.getStreamFromHexDump("Bug4185732.ser.txt"));
              final ChoiceFormat loc = (ChoiceFormat)in.readObject();
              if (loc.getFormats().length != loc.getLimits().length) {
-                 errln("ChoiceFormat did not properly check stream");
+                 fail("ChoiceFormat did not properly check stream");
              } else {
-                 //for some reason, the data file was VALID.  This test
-                 //requires a corrupt data file the format and limit
-                 //arrays are of different length.
-                 errln("Test data file was not properly created");
+                 // for some reason, the data file was VALID.  This test
+                 // requires a corrupt data file the format and limit
+                 // arrays are of different length.
+                 fail("Test data file was not properly created");
              }
-         } catch (InvalidObjectException e) {
-             //this is what we want to have happen
-         } catch (Exception e) {
-             errln(e.toString());
-         }
-     }
- 
-     /**
-      * Create a data file for this test.  The data file must be corrupted by hand.
-      */
-     private static void prepTest() {
-         try {
-             ObjectOutputStream out = new ObjectOutputStream(
-                     new FileOutputStream("Bug4185732.ser"));
-             final double[] limits = {1,2,3,4,5,6,7};
-             final String[] formats = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"};
-             final ChoiceFormat fmt = new ChoiceFormat(limits, formats);
-             out.writeObject(fmt);
-             out.close();
-             System.out.println("You must invalidate the output file before running the test");
-             System.out.println("by modifying the length of one of the array");
-         } catch (Exception e) {
-             System.out.println(e);
+         } catch (InvalidObjectException expectedException) {
+             // Expecting an IOE
+         } catch (Exception wrongException) {
+             fail("Expected an InvalidObjectException, instead got: " + wrongException);
          }
      }
  }
< prev index next >