aboutsummaryrefslogtreecommitdiffstats
path: root/guava-tests/test/com/google/common/util/concurrent/ForwardingCheckedFutureTest.java
diff options
context:
space:
mode:
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.java90
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);
+ }
}
+
}