1 /*
2  * Copyright (c) 1997, 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    @bug 4085938
26    @summary Check for the correct behaviour of DataInputStream.skipBytes
27    */
28 
29 import java.io.*;
30 
31 public class SkipBytes{
32 
dotest(DataInputStream dis, int pos, int total, int toskip, int expected)33     private static void dotest(DataInputStream dis, int pos, int total,
34                                int toskip, int expected) {
35 
36         try {
37             System.err.println("\n\nTotal bytes in the stream = " + total);
38             System.err.println("Currently at position = " + pos);
39             System.err.println("Bytes to skip = " + toskip);
40             System.err.println("Expected result = " + expected);
41             int skipped = dis.skipBytes(toskip);
42             System.err.println("Actual skipped = " + skipped);
43             if (skipped != expected) {
44                 throw new RuntimeException
45                     ("DataInputStream.skipBytes does not return expected value");
46             }
47         } catch(EOFException e){
48             throw new RuntimeException
49                 ("DataInputStream.skipBytes throws unexpected EOFException");
50         } catch (IOException e) {
51             System.err.println("IOException is thrown - possible result");
52         }
53 
54 
55     }
56 
57 
58 
main(String args[])59     public static void main(String args[]) throws Exception {
60 
61         DataInputStream dis = new DataInputStream(new MyInputStream());
62         dotest(dis, 0, 11, -1, 0);
63         dotest(dis, 0, 11, 5, 5);
64         System.err.println("\n***CAUTION**** - may go into an infinite loop");
65         dotest(dis, 5, 11, 20, 6);
66     }
67 }
68 
69 
70 class MyInputStream extends InputStream {
71 
72     private int readctr = 0;
73 
read()74     public int read() {
75 
76         if (readctr > 10){
77             return -1;
78         }
79         else{
80             readctr++;
81             return 0;
82         }
83 
84     }
85 
available()86     public int available() { return 0; }
87 }
88