| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.emultest.java.io; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.io.IOException; |
| import java.io.OutputStream; |
| import java.util.Arrays; |
| |
| /** |
| * Unit test for the {@link java.io.ByteArrayOutputStream} emulated class. |
| */ |
| public class ByteArrayOutputStreamTest extends OutputStreamBaseTest { |
| |
| private static ByteArrayOutputStream outputStream; |
| |
| @Override |
| protected OutputStream createDefaultOutputStream() { |
| outputStream = new ByteArrayOutputStream(); |
| return outputStream; |
| } |
| |
| @Override |
| protected byte[] getBytesWritten() { |
| return outputStream != null ? outputStream.toByteArray() : null; |
| } |
| |
| public void testClose() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); |
| // should do nothing (including not throwing an exception). |
| outputStream.close(); |
| } |
| |
| public void testFlush() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); |
| // should do nothing (including not throwing an exception). |
| outputStream.flush(); |
| } |
| |
| public void testReset() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(2); |
| |
| outputStream.write(TEST_ARRAY); |
| |
| byte[] actualBytes = outputStream.toByteArray(); |
| assertTrue(Arrays.equals(TEST_ARRAY, actualBytes)); |
| |
| outputStream.reset(); |
| |
| final byte[] expectedBytes = new byte[] { 101, 102 }; |
| outputStream.write(expectedBytes); |
| |
| actualBytes = outputStream.toByteArray(); |
| assertTrue(Arrays.equals(expectedBytes, actualBytes)); |
| } |
| |
| public void testSize() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| assertEquals(0, outputStream.size()); |
| |
| outputStream.write(128); |
| assertEquals(1, outputStream.size()); |
| |
| outputStream.write(TEST_ARRAY); |
| assertEquals(1 + TEST_ARRAY.length, outputStream.size()); |
| |
| outputStream.write(TEST_ARRAY, 1, 2); |
| assertEquals(3 + TEST_ARRAY.length, outputStream.size()); |
| |
| outputStream.reset(); |
| assertEquals(0, outputStream.size()); |
| |
| outputStream.write(128); |
| assertEquals(1, outputStream.size()); |
| } |
| |
| public void testToStringUsingEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final String actualString = outputStream.toString(); |
| assertTrue(actualString.isEmpty()); |
| } |
| |
| public void testToStringUsingNonEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final byte[] values = new byte[] { |
| (byte) 0x48, (byte) 0x65, (byte) 0x6c, (byte) 0x6c, (byte) 0x6f |
| }; |
| outputStream.write(values); |
| final String actualString = outputStream.toString(); |
| assertEquals("Hello", actualString); |
| } |
| |
| public void testToStringWithHighByteAndEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final String actualString = outputStream.toString(0x01); |
| assertTrue(actualString.isEmpty()); |
| } |
| |
| public void testToStringWithHighByteAndNonEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final byte[] values = new byte[] { |
| (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04 |
| }; |
| outputStream.write(values); |
| final String actualString = outputStream.toString(0x01); |
| final String expectedString = new String(new char[] { |
| (char) 0x0100, (char) 0x0101, (char) 0x0102, (char) 0x0103, (char) 0x0104 |
| }); |
| assertEquals(expectedString, actualString); |
| } |
| |
| public void testToStringWithCharsetNameAndEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final String actualString = outputStream.toString("UTF-8"); |
| assertTrue(actualString.isEmpty()); |
| } |
| |
| public void testToStringWithCharsetNameAndNonEmptyStream() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1); |
| final String expectedString = "Hello"; |
| |
| outputStream.write(expectedString.getBytes("UTF-8")); |
| final String actualString = outputStream.toString("UTF-8"); |
| assertEquals(expectedString, actualString); |
| } |
| |
| public void testWriteSingleValues() throws IOException { |
| final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(2); |
| assertEquals(0, outputStream.size()); |
| |
| for (int i = 0; i < 3; i++) { |
| outputStream.write(TEST_ARRAY[i]); |
| assertEquals(i + 1, outputStream.size()); |
| } |
| final byte[] expectedBytes = Arrays.copyOf(TEST_ARRAY, 3); |
| final byte[] actualBytes = outputStream.toByteArray(); |
| assertTrue(Arrays.equals(expectedBytes, actualBytes)); |
| } |
| } |