/* * Copyright 2012 LinkedIn, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.linkedin.parseq.promise; import org.testng.annotations.Test; import static org.testng.AssertJUnit.*; /** * @author Chris Pettitt (cpettitt@linkedin.com) */ public class TestPromises { @Test public void testValue() { final String value = "value"; final Promise<String> promise = Promises.value(value); assertTrue(promise.isDone()); assertFalse(promise.isFailed()); assertEquals(value, promise.get()); } @Test public void testError() { final Exception error = new Exception(); final Promise<?> promise = Promises.error(error); assertTrue(promise.isDone()); assertTrue(promise.isFailed()); assertEquals(error, promise.getError()); } @Test public void testPropagateValue() { final String value = "value"; final SettablePromise<String> source = Promises.settable(); final SettablePromise<String> dest = Promises.settable(); Promises.propagateResult(source, dest); assertFalse(dest.isDone()); source.done(value); assertTrue(dest.isDone()); assertFalse(dest.isFailed()); assertEquals(value, dest.get()); } @Test public void testPropagateError() { final Exception error = new Exception(); final SettablePromise<String> source = Promises.settable(); final SettablePromise<String> dest = Promises.settable(); Promises.propagateResult(source, dest); assertFalse(dest.isDone()); source.fail(error); assertTrue(dest.isDone()); assertTrue(dest.isFailed()); assertEquals(error, dest.getError()); } }