1 /* 2 * Copyright (c) 2005, 2010, 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((Object)b); 47 48 short s[][] = {{ 0, 1, 2}, {3,4,5}}; 49 p.writeObject((Object)s); 50 51 char c[][] = {{ 0, 1, 2, 3}, {4, 5, 6, 7}}; 52 p.writeObject((Object)c); 53 54 int i[][] = {{ 0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}}; 55 p.writeObject((Object)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((Object)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((Object)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((Object)d); 75 76 Integer Int[][] = {{ new Integer(3), new Integer(2)}, 77 { new Integer(1), new Integer(0)}}; 78 p.writeObject((Object)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 < b_u.length; ix++) { 102 for(int iy = 0; iy < b_u[ix].length; iy++) { 103 if (b[ix][iy] != b_u[ix][iy]) { 104 System.err.println("\nshort array mismatch [" + 105 ix + "][" + iy + " expected " + b[ix][iy] + 106 " actual = " + b_u[ix][iy]); 107 throw new Error(); 108 } 109 } 110 } 111 112 char c_u[][] = (char [][])(q.readObject()); 113 for (int ix = 0; ix < b_u.length; ix++) { 114 for(int iy = 0; iy < b_u[ix].length; iy++) { 115 if (b[ix][iy] != b_u[ix][iy]) { 116 System.err.println("\nchar array mismatch [" + 117 ix + "][" + iy + " expected " + b[ix][iy] + 118 " actual = " + b_u[ix][iy]); 119 throw new Error(); 120 } 121 } 122 } 123 124 int i_u[][] = (int [][])(q.readObject()); 125 for (int ix = 0; ix < b_u.length; ix++) { 126 for(int iy = 0; iy < b_u[ix].length; iy++) { 127 if (b[ix][iy] != b_u[ix][iy]) { 128 System.err.println("\nint array mismatch [" + 129 ix + "][" + iy + " expected " + b[ix][iy] + 130 " actual = " + b_u[ix][iy]); 131 throw new Error(); 132 } 133 } 134 } 135 136 long l_u[][] = (long [][])(q.readObject()); 137 for (int ix = 0; ix < b_u.length; ix++) { 138 for(int iy = 0; iy < b_u[ix].length; iy++) { 139 if (b[ix][iy] != b_u[ix][iy]) { 140 System.err.println("\nlong array mismatch [" + 141 ix + "][" + iy + " expected " + b[ix][iy] + 142 " actual = " + b_u[ix][iy]); 143 throw new Error(); 144 } 145 } 146 } 147 148 boolean z_u[][] = (boolean [][])(q.readObject()); 149 for (int ix = 0; ix < b_u.length; ix++) { 150 for(int iy = 0; iy < b_u[ix].length; iy++) { 151 if (b[ix][iy] != b_u[ix][iy]) { 152 System.err.println("\nboolean array mismatch [" + 153 ix + "][" + iy + " expected " + b[ix][iy] + 154 " actual = " + b_u[ix][iy]); 155 throw new Error(); 156 } 157 } 158 } 159 160 float f_u[][] = (float [][])(q.readObject()); 161 for (int ix = 0; ix < b_u.length; ix++) { 162 for(int iy = 0; iy < b_u[ix].length; iy++) { 163 if (b[ix][iy] != b_u[ix][iy]) { 164 System.err.println("\nfloat array mismatch [" + 165 ix + "][" + iy + " expected " + b[ix][iy] + 166 " actual = " + b_u[ix][iy]); 167 throw new Error(); 168 } 169 } 170 } 171 172 double d_u[][] = (double [][])(q.readObject()); 173 for (int ix = 0; ix < b_u.length; ix++) { 174 for(int iy = 0; iy < b_u[ix].length; iy++) { 175 if (b[ix][iy] != b_u[ix][iy]) { 176 System.err.println("\ndouble array mismatch [" + 177 ix + "][" + iy + " expected " + b[ix][iy] + 178 " actual = " + b_u[ix][iy]); 179 throw new Error(); 180 } 181 } 182 } 183 184 Integer Int_u[][] = (Integer [][])(q.readObject()); 185 for (int ix = 0; ix < b_u.length; ix++) { 186 for(int iy = 0; iy < b_u[ix].length; iy++) { 187 if (b[ix][iy] != b_u[ix][iy]) { 188 System.err.println("\nInteger array mismatch [" + 189 ix + "][" + iy + " expected " + b[ix][iy] + 190 " actual = " + b_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