/* * Copyright (c) 2015, 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 @key headful @bug 8055197 7186036 @summary TextField should replace EOL character with space character @run main EOLTest
*/
privatevoid testDeserialization() {
TextField textFieldToSerialize = new TextField(testStrEOL);
textFieldToSerialize.setSize(200, 100);
mainFrame.add(textFieldToSerialize); try { // Serialize TextField object "textFieldToSerialize".
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutput outStream = new ObjectOutputStream(baos);
outStream.writeObject(textFieldToSerialize);
// Search the text variable data through serialized object stream. byte[] streamedBytes = baos.toByteArray(); int foundLoc = 0; for (int i = 0; i < streamedBytes.length; ++i) { if (streamedBytes[i] == expectedString.charAt(0)) {
foundLoc = i; int j = 1; for (; j < expectedString.length(); ++j) { if (streamedBytes[i+j] != expectedString.charAt(j)) { break;
}
} if (j == expectedString.length()) { break;
}
}
foundLoc = -1;
}
if (foundLoc == -1) { // Could not find text data in serialized object stream. thrownew Exception("Could not find text data in serialized "
+ "object stream.");
} // Replace space character from serialized stream with // EOL character for testing de-serialization.
String EOLChar = System.lineSeparator();
String newExpectedString = ""; for (int i = foundLoc, j = 0; j < expectedString.length(); ++i, ++j) {
newExpectedString += (char)(streamedBytes[i]); if (streamedBytes[i] == ' ') { int k = 0; for (; k < EOLChar.length(); ++k) {
streamedBytes[i + k] = (byte) EOLChar.charAt(k);
}
i += k-1;
j += k-1;
}
} // New line character varies with platform, // ex. For windows '\r\n', for linux '\n'. // While replacing space from serialized object stream, the length // of EOL character will affect the expected string as well.
expectedString = newExpectedString;
// De-serialize TextField object stream.
ByteArrayInputStream bais = new ByteArrayInputStream(streamedBytes);
ObjectInput inStream = new ObjectInputStream(bais);
textField = (TextField) inStream.readObject();
} catch (Exception ex) { // Serialization or De-serialization failed. // Create textField with empty string to show failure.
ex.printStackTrace();
textField = new TextField();
}
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.