Path: blob/master/test/jdk/java/util/Base64/Base64GetEncoderTest.java
41149 views
/*1* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/22232425import java.io.ByteArrayOutputStream;26import java.io.IOException;27import java.io.OutputStream;28import java.nio.ByteBuffer;2930import java.util.Base64;3132import static java.nio.charset.StandardCharsets.US_ASCII;3334/**35* @test36* @bug 8007799 817637937* @summary test Encoder with linemax == 0, line separator should not appear in encoded data38*/3940public class Base64GetEncoderTest {4142public static void main(String args[]) throws Throwable {4344for (int maxlen = -4; maxlen < 4; maxlen++) {4546final Base64.Encoder encoder = Base64.getMimeEncoder(maxlen, "$$$".getBytes(US_ASCII));4748testEncodeToString(encoder);49testWrapEncode1(encoder);50testEncodeToStringWithLongInputData(encoder);51testWrapEncode2(encoder);52}53}5455private static void testWrapEncode2(final Base64.Encoder encoder)56throws IOException {57System.err.println("\nEncoder.wrap test II ");58final byte[] secondTestBuffer =59"api/java_util/Base64/index.html#GetEncoderMimeCustom[noLineSeparatorInEncodedString]"60.getBytes(US_ASCII);61String base64EncodedString;62ByteArrayOutputStream secondEncodingStream = new ByteArrayOutputStream();63OutputStream base64EncodingStream = encoder.wrap(secondEncodingStream);64base64EncodingStream.write(secondTestBuffer);65base64EncodingStream.close();6667final byte[] encodedByteArray = secondEncodingStream.toByteArray();6869System.err.print("result = " + new String(encodedByteArray, US_ASCII)70+ " after wrap Base64 encoding of string");7172base64EncodedString = new String(encodedByteArray, US_ASCII);7374if (base64EncodedString.contains("$$$")) {75throw new RuntimeException(76"Base64 encoding contains line separator after wrap 2 invoked ... \n");77}78}7980private static void testEncodeToStringWithLongInputData(81final Base64.Encoder encoder) {82System.err.println("\n\nEncoder.encodeToStringWithLongInputData test ");8384final byte[] secondTestBuffer =85"api/java_util/Base64/index.html#GetEncoderMimeCustom[noLineSeparatorInEncodedString]"86.getBytes(US_ASCII);87String base64EncodedString;88base64EncodedString = encoder.encodeToString(secondTestBuffer);8990System.err.println("Second Base64 encoded string is "91+ base64EncodedString);9293if (base64EncodedString.contains("$$$")) {94throw new RuntimeException(95"Base64 encoding contains line separator after encodeToString invoked ... \n");96}97}9899private static void testWrapEncode1(final Base64.Encoder encoder)100throws IOException {101System.err.println("\nEncoder.wrap test I ");102103final byte[] bytesIn = "fo".getBytes(US_ASCII);104String base64EncodedString;105ByteArrayOutputStream encodingStream = new ByteArrayOutputStream();106OutputStream encoding = encoder.wrap(encodingStream);107encoding.write(bytesIn);108encoding.close();109110final byte[] encodedBytes = encodingStream.toByteArray();111112System.err.print("result = " + new String(encodedBytes, US_ASCII)113+ " after the Base64 encoding \n");114115base64EncodedString = new String(encodedBytes, US_ASCII);116117if (base64EncodedString.contains("$$$")) {118throw new RuntimeException(119"Base64 encoding contains line separator after wrap I test ... \n");120}121}122123private static void testEncodeToString(final Base64.Encoder encoder) {124final byte[] bytesIn = "fo".getBytes(US_ASCII);125126System.err.println("\nEncoder.encodeToString test ");127128String base64EncodedString = encoder.encodeToString(bytesIn);129130System.err.println("Base64 encoded string is " + base64EncodedString);131132if (base64EncodedString.contains("$$$")) {133throw new RuntimeException("Base64 encoding contains line separator after Encoder.encodeToString invoked ... \n");134}135}136}137138139