• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Guava Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.common.util.concurrent;
18 
19 import static org.easymock.EasyMock.createMock;
20 import static org.easymock.EasyMock.expect;
21 import static org.easymock.EasyMock.replay;
22 import static org.easymock.EasyMock.verify;
23 
24 import com.google.common.util.concurrent.ForwardingCheckedFuture.SimpleForwardingCheckedFuture;
25 
26 import junit.framework.TestCase;
27 
28 import java.io.IOException;
29 import java.util.concurrent.TimeUnit;
30 import java.util.concurrent.TimeoutException;
31 
32 /**
33  * Test for {@link ForwardingCheckedFuture}
34  *
35  * @author Anthony Zana
36  */
37 public class ForwardingCheckedFutureTest extends TestCase {
38   private static final String VALUE = "delegated";
39   private static final TimeUnit TIME_UNIT = TimeUnit.MILLISECONDS;
40 
41   @SuppressWarnings("unchecked")
42   private CheckedFuture<String, IOException> delegate =
43       createMock(CheckedFuture.class);
44 
45   private TestDelegateFuture forwarded = new TestDelegateFuture();
46   private TestSimpleFuture simple = new TestSimpleFuture();
47 
testCheckedGet()48   public void testCheckedGet() throws IOException {
49     expect(delegate.checkedGet()).andReturn(VALUE).times(2);
50     replay(delegate);
51     assertEquals(VALUE, forwarded.checkedGet());
52     assertEquals(VALUE, simple.checkedGet());
53     verify(delegate);
54   }
55 
testTimedCheckedGet()56   public void testTimedCheckedGet() throws TimeoutException, IOException {
57     expect(delegate.checkedGet(100, TIME_UNIT)).andReturn(VALUE).times(2);
58     replay(delegate);
59     assertEquals(VALUE, forwarded.checkedGet(100, TIME_UNIT));
60     assertEquals(VALUE, simple.checkedGet(100, TIME_UNIT));
61     verify(delegate);
62   }
63 
testTimedCheckedGet_timeout()64   public void testTimedCheckedGet_timeout()
65       throws IOException, TimeoutException {
66     expect(delegate.checkedGet(100, TIME_UNIT))
67         .andThrow(new TimeoutException()).times(2);
68     replay(delegate);
69     try {
70       forwarded.checkedGet(100, TIME_UNIT);
71       fail();
72     } catch (TimeoutException expected) {}
73     try {
74       simple.checkedGet(100, TIME_UNIT);
75       fail();
76     } catch (TimeoutException expected) {}
77     verify(delegate);
78   }
79 
testCheckedGetException()80   public void testCheckedGetException() throws IOException {
81     IOException expected = new IOException("expected");
82     expect(delegate.checkedGet()).andThrow(expected).times(2);
83     replay(delegate);
84     try {
85       delegate.checkedGet();
86       fail();
87     } catch (IOException e) {
88       assertEquals(expected.getMessage(), e.getMessage());
89     }
90     try {
91       simple.checkedGet();
92       fail();
93     } catch (IOException e) {
94       assertEquals(expected.getMessage(), e.getMessage());
95     }
96     verify(delegate);
97   }
98 
99   private class TestDelegateFuture
100       extends ForwardingCheckedFuture<String, IOException> {
101     @Override
delegate()102     protected CheckedFuture<String, IOException> delegate() {
103       return delegate;
104     }
105   }
106 
107   private class TestSimpleFuture
108       extends SimpleForwardingCheckedFuture<String, IOException> {
TestSimpleFuture()109     public TestSimpleFuture() {
110       super(delegate);
111     }
112   }
113 
114 }
115