1 /* 2 * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* @test 25 * @summary it is new version of old test which was under 26 * /src/share/test/serialization/piotest.java 27 * Test of serialization/deserialization of 28 * objects as arrays of arrays 29 */ 30 31 import java.io.*; 32 33 public class ArraysOfArrays { main(String argv[])34 public static void main (String argv[]) throws IOException { 35 System.err.println("\nRegression test for testing of " + 36 "serialization/deserialization of objects as " + 37 "arrays of arrays \n"); 38 39 FileInputStream istream = null; 40 FileOutputStream ostream = null; 41 try { 42 ostream = new FileOutputStream("piotest5.tmp"); 43 ObjectOutputStream p = new ObjectOutputStream(ostream); 44 45 byte[][] b = {{ 0, 1}, {2,3}}; 46 p.writeObject(b); 47 48 short[][] s = {{ 0, 1, 2}, {3,4,5}}; 49 p.writeObject(s); 50 51 char[][] c = {{ 0, 1, 2, 3}, {4, 5, 6, 7}}; 52 p.writeObject(c); 53 54 int[][] i = {{ 0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}}; 55 p.writeObject(i); 56 57 long[][] l = {{ 0, 1, 2, 3, 4, 5}, {6,7,8,9,10,11}}; 58 p.writeObject((Object)l); 59 60 boolean[][] z = new boolean[2][2]; 61 62 z[0][0] = true; 63 z[0][1] = false; 64 z[1] = z[0]; // Use first row same as second 65 66 p.writeObject(z); 67 68 float[][] f = {{ 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f}, 69 { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f}}; 70 p.writeObject(f); 71 72 double[][] d = {{ 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0d}, 73 { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1d}}; 74 p.writeObject(d); 75 76 Integer Int[][] = {{ 3, 2}, 77 { 1, 0}}; 78 p.writeObject(Int); 79 80 p.flush(); 81 82 /* Now read them back and verify 83 */ 84 istream = new FileInputStream("piotest5.tmp"); 85 ObjectInputStream q = new ObjectInputStream(istream); 86 87 byte[][] b_u = (byte [][]) (q.readObject()); 88 for (int ix = 0; ix < b_u.length; ix++) { 89 for(int iy = 0; iy < b_u[ix].length; iy++) { 90 if (b[ix][iy] != b_u[ix][iy]) { 91 System.err.println("\nByte array mismatch [" + 92 ix + "][" + iy + "] expected " + b[ix][iy] + 93 " actual = " + b_u[ix][iy]); 94 throw new Error(); 95 } 96 } 97 } 98 99 100 short[][] s_u = (short [][])(q.readObject()); 101 for (int ix = 0; ix < s_u.length; ix++) { 102 for(int iy = 0; iy < s_u[ix].length; iy++) { 103 if (s[ix][iy] != s_u[ix][iy]) { 104 System.err.println("\nshort array mismatch [" + 105 ix + "][" + iy + "] expected " + s[ix][iy] + 106 " actual = " + s_u[ix][iy]); 107 throw new Error(); 108 } 109 } 110 } 111 112 char[][] c_u = (char [][])(q.readObject()); 113 for (int ix = 0; ix < c_u.length; ix++) { 114 for(int iy = 0; iy < c_u[ix].length; iy++) { 115 if (c[ix][iy] != c_u[ix][iy]) { 116 System.err.println("\nchar array mismatch [" + 117 ix + "][" + iy + "] expected " + c[ix][iy] + 118 " actual = " + c_u[ix][iy]); 119 throw new Error(); 120 } 121 } 122 } 123 124 int[][] i_u = (int [][])(q.readObject()); 125 for (int ix = 0; ix < i_u.length; ix++) { 126 for(int iy = 0; iy < i_u[ix].length; iy++) { 127 if (i[ix][iy] != i_u[ix][iy]) { 128 System.err.println("\nint array mismatch [" + 129 ix + "][" + iy + "] expected " + i[ix][iy] + 130 " actual = " + i_u[ix][iy]); 131 throw new Error(); 132 } 133 } 134 } 135 136 long[][] l_u = (long [][])(q.readObject()); 137 for (int ix = 0; ix < l_u.length; ix++) { 138 for(int iy = 0; iy < l_u[ix].length; iy++) { 139 if (l[ix][iy] != l_u[ix][iy]) { 140 System.err.println("\nlong array mismatch [" + 141 ix + "][" + iy + "] expected " + l[ix][iy] + 142 " actual = " + l_u[ix][iy]); 143 throw new Error(); 144 } 145 } 146 } 147 148 boolean[][] z_u = (boolean [][])(q.readObject()); 149 for (int ix = 0; ix < z_u.length; ix++) { 150 for(int iy = 0; iy < z_u[ix].length; iy++) { 151 if (z[ix][iy] != z_u[ix][iy]) { 152 System.err.println("\nboolean array mismatch [" + 153 ix + "][" + iy + "] expected " + z[ix][iy] + 154 " actual = " + z_u[ix][iy]); 155 throw new Error(); 156 } 157 } 158 } 159 160 float[][] f_u = (float [][])(q.readObject()); 161 for (int ix = 0; ix < f_u.length; ix++) { 162 for(int iy = 0; iy < f_u[ix].length; iy++) { 163 if (f[ix][iy] != f_u[ix][iy]) { 164 System.err.println("\nfloat array mismatch [" + 165 ix + "][" + iy + "] expected " + f[ix][iy] + 166 " actual = " + f_u[ix][iy]); 167 throw new Error(); 168 } 169 } 170 } 171 172 double[][] d_u = (double [][])(q.readObject()); 173 for (int ix = 0; ix < d_u.length; ix++) { 174 for(int iy = 0; iy < d_u[ix].length; iy++) { 175 if (d[ix][iy] != d_u[ix][iy]) { 176 System.err.println("\ndouble array mismatch [" + 177 ix + "][" + iy + "] expected " + d[ix][iy] + 178 " actual = " + d_u[ix][iy]); 179 throw new Error(); 180 } 181 } 182 } 183 184 Integer[][] Int_u = (Integer [][])(q.readObject()); 185 for (int ix = 0; ix < Int_u.length; ix++) { 186 for(int iy = 0; iy < Int_u[ix].length; iy++) { 187 if (!Int[ix][iy].equals(Int_u[ix][iy])) { 188 System.err.println("\nInteger array mismatch [" + 189 ix + "][" + iy + "] expected " + Int[ix][iy] + 190 " actual = " + Int_u[ix][iy]); 191 throw new Error(); 192 } 193 } 194 } 195 System.err.println("\nTEST PASSED"); 196 } catch (Exception e) { 197 System.err.print("TEST FAILED: "); 198 e.printStackTrace(); 199 200 System.err.println("\nInput remaining"); 201 int ch; 202 try { 203 while ((ch = istream.read()) != -1) { 204 System.err.print("\n " +Integer.toString(ch, 16) + " "); 205 } 206 System.err.println("\n "); 207 } catch (Exception f) { 208 throw new Error(); 209 } 210 throw new Error(); 211 } finally { 212 if (istream != null) istream.close(); 213 if (ostream != null) ostream.close(); 214 } 215 } 216 } 217