| /* |
| * 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 com.google.gwt.junit.client.GWTTestCase; |
| |
| import java.io.IOException; |
| import java.io.OutputStream; |
| import java.util.Arrays; |
| |
| /** |
| * Class for reusing tests that are commong to {@link java.io.OutputStream} and its subclasses. |
| */ |
| public abstract class OutputStreamBaseTest extends GWTTestCase { |
| |
| protected static final byte[] TEST_ARRAY = new byte[] { 10, 20, 30, 40, 50 }; |
| |
| /** |
| * Factory method for creating a stream object. |
| * |
| * @return output stream object to be tested. |
| */ |
| protected abstract OutputStream createDefaultOutputStream(); |
| |
| /** |
| * Retrieves the array of bytes written by the seam. |
| * |
| * @return bytes written by the stream. |
| */ |
| protected abstract byte[] getBytesWritten(); |
| |
| /** |
| * Sets module name so that javascript compiler can operate. |
| */ |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.emultest.EmulSuite"; |
| } |
| |
| public void testWriteArrayUsingNullArrayObject() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| try { |
| outputStream.write(null, 0, 1); |
| fail("should have thrown NullPointerException"); |
| } catch (NullPointerException expected) { |
| } |
| } |
| |
| public void testWriteArrayUsingNegativeOffsetValue() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| try { |
| outputStream.write(TEST_ARRAY, -1, 1); |
| fail("should have thrown IndexOutOfBoundsException"); |
| } catch (IndexOutOfBoundsException expected) { |
| } |
| } |
| |
| public void testWriteArrayUsingNegativeLengthValue() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| try { |
| outputStream.write(TEST_ARRAY, 0, -1); |
| fail("should have thrown IndexOutOfBoundsException"); |
| } catch (IndexOutOfBoundsException expected) { |
| } |
| } |
| |
| public void testWriteArrayUsingAnInvalidRange() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| try { |
| outputStream.write(TEST_ARRAY, 1, TEST_ARRAY.length); |
| fail("should have thrown IndexOutOfBoundsException"); |
| } catch (IndexOutOfBoundsException expected) { |
| } |
| } |
| |
| public void testWriteArrayZeroLength() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY, 0, 0); |
| assertEquals(0, getBytesWritten().length); |
| } |
| |
| public void testWriteArrayZeroOffset() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY, 0, TEST_ARRAY.length); |
| assertTrue(Arrays.equals(TEST_ARRAY, getBytesWritten())); |
| } |
| |
| public void testWriteArrayFirstBytesOnly() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY, 0, TEST_ARRAY.length - 2); |
| |
| final byte[] expected = Arrays.copyOf(TEST_ARRAY, TEST_ARRAY.length - 2); |
| assertTrue(Arrays.equals(expected, getBytesWritten())); |
| } |
| |
| public void testWriteArrayLastBytesOnly() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY, 2, TEST_ARRAY.length - 2); |
| |
| final byte[] expected = Arrays.copyOfRange(TEST_ARRAY, 2, TEST_ARRAY.length); |
| assertTrue(Arrays.equals(expected, getBytesWritten())); |
| } |
| |
| public void testWriteArrayMiddleBytesOnly() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY, 2, TEST_ARRAY.length - 4); |
| |
| final byte[] expected = Arrays.copyOfRange(TEST_ARRAY, 2, TEST_ARRAY.length - 2); |
| assertTrue(Arrays.equals(expected, getBytesWritten())); |
| } |
| |
| public void testWriteArrayUsingNullArrayObjectAndNoOffset() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| try { |
| outputStream.write(null); |
| fail("should have thrown NullPointerException"); |
| } catch (NullPointerException expected) { |
| } |
| } |
| |
| public void testWriteArrayZeroBytesNoOffset() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(new byte[0]); |
| assertEquals(0, getBytesWritten().length); |
| } |
| |
| public void testWriteArrayNoOffset() throws IOException { |
| final OutputStream outputStream = createDefaultOutputStream(); |
| outputStream.write(TEST_ARRAY); |
| assertTrue(Arrays.equals(TEST_ARRAY, getBytesWritten())); |
| } |
| } |