Initial load
diff --git a/test/java/io/RandomAccessFile/ReadWritePrimitives.java b/test/java/io/RandomAccessFile/ReadWritePrimitives.java
new file mode 100644
index 0000000..2fafcba
--- /dev/null
+++ b/test/java/io/RandomAccessFile/ReadWritePrimitives.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright 1998 Sun Microsystems, Inc. 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.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ @bug 4092350
+ @summary Verify that reads and writes of primitives are correct
+ */
+
+// The bug mentioned is actually a performance bug that prompted
+// changes in the methods to write primitives
+import java.io.*;
+
+import java.io.*;
+
+public class ReadWritePrimitives {
+
+ public static void main(String args[]) throws IOException {
+ long start, finish;
+ start = System.currentTimeMillis();
+ testShort();
+ finish = System.currentTimeMillis();
+ // System.err.println("Time taken="+(finish-start));
+ start = System.currentTimeMillis();
+ testChar();
+ finish = System.currentTimeMillis();
+ // System.err.println("Time taken="+(finish-start));
+ start = System.currentTimeMillis();
+ testInt();
+ finish = System.currentTimeMillis();
+ // System.err.println("Time taken="+(finish-start));
+ start = System.currentTimeMillis();
+ testLong();
+ finish = System.currentTimeMillis();
+ // System.err.println("Time taken="+(finish-start));
+ }
+
+ private static void testShort() throws IOException {
+ File fh = new File(System.getProperty("test.dir", "."),
+ "x.ReadWriteGenerated");
+ RandomAccessFile f = new RandomAccessFile(fh,"rw");
+ for(int i = 0; i < 10000; i++){
+ f.writeShort((short)i);
+ }
+ f.writeShort((short)65535);
+ f.close();
+ f = new RandomAccessFile(fh,"r");
+ for(int i = 0; i < 10000; i++) {
+ short r = f.readShort();
+ if (r != ((short)i)) {
+ System.err.println("An error occurred. Read:" + r
+ + " i:" + ((short)i));
+ throw new IOException("Bad read from a writeShort");
+ }
+ }
+ short rmax = f.readShort();
+ if (rmax != ((short)65535)) {
+ System.err.println("An error occurred. Read:" + rmax);
+ throw new IOException("Bad read from a writeShort");
+ }
+ f.close();
+ }
+
+ private static void testChar() throws IOException {
+ File fh = new File(System.getProperty("test.dir", "."),
+ "x.ReadWriteGenerated");
+ RandomAccessFile f = new RandomAccessFile(fh,"rw");
+ for(int i = 0; i < 10000; i++){
+ f.writeChar((char)i);
+ }
+ f.close();
+ f = new RandomAccessFile(fh,"r");
+ for(int i = 0; i < 10000; i++) {
+ char r = f.readChar();
+ if (r != ((char)i)){
+ System.err.println("An error occurred. Read:" + r
+ + " i:" + ((char) i));
+ throw new IOException("Bad read from a writeChar");
+ }
+ }
+ f.close();
+ }
+
+
+ private static void testInt() throws IOException {
+ File fh = new File(System.getProperty("test.dir", "."),
+ "x.ReadWriteGenerated");
+ RandomAccessFile f = new RandomAccessFile(fh,"rw");
+ for(int i = 0; i < 10000; i++){
+ f.writeInt((short)i);
+ }
+ f.writeInt(Integer.MAX_VALUE);
+ f.close();
+ f = new RandomAccessFile(fh, "r");
+ for(int i = 0; i < 10000; i++) {
+ int r = f.readInt();
+ if (r != i){
+ System.err.println("An error occurred. Read:" + r
+ + " i:" + i);
+ throw new IOException("Bad read from a writeInt");
+ }
+ }
+ int rmax = f.readInt();
+ if (rmax != Integer.MAX_VALUE){
+ System.err.println("An error occurred. Read:" + rmax);
+ throw new IOException("Bad read from a writeInt");
+ }
+ f.close();
+ }
+
+ private static void testLong() throws IOException {
+ File fh = new File(System.getProperty("test.dir", "."),
+ "x.ReadWriteGenerated");
+ RandomAccessFile f = new RandomAccessFile(fh,"rw");
+ for(int i = 0; i < 10000; i++){
+ f.writeLong(123456789L * (long)i);
+ }
+ f.close();
+ f = new RandomAccessFile(fh,"r");
+ for(int i = 0; i < 10000; i++){
+ long r = f.readLong();
+ if (r != (((long) i) * 123456789L) ) {
+ System.err.println("An error occurred. Read:" + r
+ + " i" + ((long) i));
+
+ throw new IOException("Bad read from a writeInt");
+ }
+ }
+ f.close();
+
+ }
+
+}