package stream;

import static org.junit.Assert.assertEquals;
import static testutil.TestUtilities.createIOExceptionThrowingInputStream;
import static testutil.TestUtilities.createInputStreamFromString;

import org.junit.Before;
import org.junit.Test;

public class SafeInputStreamTest {

    SafeInputStream safe;
    SafeInputStream safeWithException;

    @Before
    public void setUp() {
        safe = new SafeInputStream(createInputStreamFromString("a"));
        safeWithException = new SafeInputStream(createIOExceptionThrowingInputStream());
    }

    @Test
    public void readWorks() {
        assertEquals('a', (char) safe.read());
        assertEquals(-1, safe.read());
    }

    @Test
    public void closeWorks() {
        safe.close();
    }

    @Test(expected = UncheckedIOException.class)
    public void readThrowsUncheckedException() {
        safeWithException.read();
    }

    @Test(expected = UncheckedIOException.class)
    public void closeThrowsUncheckedException() {
        safeWithException.close();
    }

}
