/* * Copyright (c) 2010, 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 6227608 * @summary Test proper handling of flush() * @modules jdk.charsets * @author Martin Buchholz
*/
privatestaticvoid realMain(String[] args) throws Throwable { // A japanese character should decode as a 3-byte // switch-to-japanese escape sequence, followed by a 2-byte // encoding of the char itself, followed by a 3-byte return to // ASCII escape sequence. char[] jis0208 = {'\u3001'};
CharBuffer cb = CharBuffer.wrap(jis0208);
ByteBuffer bb = ByteBuffer.allocate(6);
CharsetEncoder enc = Charset.forName("ISO-2022-JP").newEncoder();
//---------------------------------------------------------------- // We must be able to recover if flush() returns OVERFLOW //----------------------------------------------------------------
check(enc.flush(bb).isOverflow());
check(enc.flush(bb).isOverflow());
equal(contents(bb).length, 3 + 2);
//---------------------------------------------------------------- // A final redundant flush() is a no-op //----------------------------------------------------------------
check(enc.flush(bb).isUnderflow());
check(enc.flush(bb).isUnderflow());
equal(contents(bb).length, 3 + 2 + 3);
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 und die Messung sind noch experimentell.