diff options
Diffstat (limited to 'guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java')
-rw-r--r-- | guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java | 90 |
1 files changed, 87 insertions, 3 deletions
diff --git a/guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java index 1a642be..b78c287 100644 --- a/guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java +++ b/guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java @@ -16,15 +16,99 @@ package com.google.common.util.concurrent; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.verify; + +import com.google.common.util.concurrent.ForwardingCheckedFuture.SimpleForwardingCheckedFuture; + import junit.framework.TestCase; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + /** * Test for {@link ForwardingCheckedFuture} * - * @author Ben Yu + * @author Anthony Zana */ public class ForwardingCheckedFutureTest extends TestCase { - public void testForwarding() { - ForwardingObjectTester.testForwardingObject(ForwardingCheckedFuture.class); + private static final String VALUE = "delegated"; + private static final TimeUnit TIME_UNIT = TimeUnit.MILLISECONDS; + + @SuppressWarnings("unchecked") + private CheckedFuture<String, IOException> delegate = + createMock(CheckedFuture.class); + + private TestDelegateFuture forwarded = new TestDelegateFuture(); + private TestSimpleFuture simple = new TestSimpleFuture(); + + public void testCheckedGet() throws IOException { + expect(delegate.checkedGet()).andReturn(VALUE).times(2); + replay(delegate); + assertEquals(VALUE, forwarded.checkedGet()); + assertEquals(VALUE, simple.checkedGet()); + verify(delegate); + } + + public void testTimedCheckedGet() throws TimeoutException, IOException { + expect(delegate.checkedGet(100, TIME_UNIT)).andReturn(VALUE).times(2); + replay(delegate); + assertEquals(VALUE, forwarded.checkedGet(100, TIME_UNIT)); + assertEquals(VALUE, simple.checkedGet(100, TIME_UNIT)); + verify(delegate); + } + + public void testTimedCheckedGet_timeout() + throws IOException, TimeoutException { + expect(delegate.checkedGet(100, TIME_UNIT)) + .andThrow(new TimeoutException()).times(2); + replay(delegate); + try { + forwarded.checkedGet(100, TIME_UNIT); + fail(); + } catch (TimeoutException expected) {} + try { + simple.checkedGet(100, TIME_UNIT); + fail(); + } catch (TimeoutException expected) {} + verify(delegate); + } + + public void testCheckedGetException() throws IOException { + IOException expected = new IOException("expected"); + expect(delegate.checkedGet()).andThrow(expected).times(2); + replay(delegate); + try { + delegate.checkedGet(); + fail(); + } catch (IOException e) { + assertEquals(expected.getMessage(), e.getMessage()); + } + try { + simple.checkedGet(); + fail(); + } catch (IOException e) { + assertEquals(expected.getMessage(), e.getMessage()); + } + verify(delegate); + } + + private class TestDelegateFuture + extends ForwardingCheckedFuture<String, IOException> { + @Override + protected CheckedFuture<String, IOException> delegate() { + return delegate; + } + } + + private class TestSimpleFuture + extends SimpleForwardingCheckedFuture<String, IOException> { + public TestSimpleFuture() { + super(delegate); + } } + } |