/* * Copyright (c) 1997, 2018, 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. * * 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 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 4016710 6516099 * @summary check for correct implementation of InputStream.skip{NBytes}
*/
privatestaticvoid dotest(InputStream in, int curpos, long total, long toskip, long expected) throws Exception { try {
System.err.println("\n\nCurrently at pos = " + curpos + "\nTotal bytes in the Stream = " + total + "\nNumber of bytes to skip = " + toskip + "\nNumber of bytes that should be skipped = " +
expected);
long skipped = in.skip(toskip);
System.err.println("actual number skipped: "+ skipped);
/* * check for skip larger than Integer.MAX_VALUE * (Takes about 2 hrs on a sparc ultra-1) * long total = (long)Integer.MAX_VALUE + (long)10; * long toskip = total - (long)6; * in = new MyInputStream(total); * dotest(in, 0, total, toskip, toskip);
*/
// tests for skipping an exact number of bytes
finallong streamLength = Long.MAX_VALUE;
in = new MyInputStream(streamLength);
// negative skip: OK
dotestExact(in, 0, streamLength, -1, false, false);
// negative skip at EOF: OK
in.position(streamLength);
dotestExact(in, streamLength, streamLength, -1, false, false);
in.position(0);
// zero skip: OK
dotestExact(in, 0, streamLength, 0, false, false);
// zero skip at EOF: OK
in.position(streamLength);
dotestExact(in, streamLength, streamLength, 0, false, false);
public MyInputStream(long endoffile) { this.endoffile = endoffile;
}
/** * Limits the behavior of skip() and read(). * * @param skipReturn the value to be returned by skip() * @param maxReads the maximum number of reads past the current position * before EOF is reached
*/ publicvoid setState(long skipReturn, long maxReads) { this.skipReturn = skipReturn; this.readLimit = readctr + maxReads;
isStateSet = true;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.