11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2009 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.util.concurrent; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for {@link ForwardingListenableFuture}. 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Shardul Deo 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class ForwardingListenableFutureTest extends TestCase { 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private SettableFuture<String> delegate; 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private ListenableFuture<String> forwardingFuture; 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private ListenableFutureTester tester; 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected void setUp() throws Exception { 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert super.setUp(); 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert delegate = SettableFuture.create(); 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forwardingFuture = new ForwardingListenableFuture<String>() { 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected ListenableFuture<String> delegate() { 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return delegate; 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester = new ListenableFutureTester(forwardingFuture); 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.setUp(); 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected void tearDown() throws Exception { 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.tearDown(); 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert super.tearDown(); 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCompletedFuture() throws Exception { 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert delegate.set("foo"); 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testCompletedFuture("foo"); 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCancelledFuture() throws Exception { 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert delegate.cancel(true); // parameter is ignored 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testCancelledFuture(); 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFailedFuture() throws Exception { 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert delegate.setException(new Exception("failed")); 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testFailedFuture("failed"); 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 69