/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.stubbing.answers; import org.junit.Test; import org.mockito.exceptions.base.MockitoException; import org.mockito.internal.invocation.InvocationBuilder; import static java.lang.Boolean.TRUE; import static org.assertj.core.api.Assertions.assertThat; public class ReturnsTest { @Test public void should_return_value() throws Throwable { assertThat(new Returns("value").answer(new InvocationBuilder().method("oneArg").arg("A").toInvocation())).isEqualTo("value"); } @Test(expected = MockitoException.class) public void should_fail_when_return_Value_is_set_for_void_method() throws Throwable { new Returns("one").validateFor(new InvocationBuilder().method("voidMethod").toInvocation()); } @Test public void should_allow_correct_type_of_return_value() throws Throwable { new Returns("one").validateFor(new InvocationBuilder().simpleMethod().toInvocation()); new Returns(false).validateFor(new InvocationBuilder().method("booleanReturningMethod").toInvocation()); new Returns(TRUE).validateFor(new InvocationBuilder().method("booleanObjectReturningMethod").toInvocation()); new Returns(1).validateFor(new InvocationBuilder().method("integerReturningMethod").toInvocation()); new Returns(1L).validateFor(new InvocationBuilder().method("longReturningMethod").toInvocation()); new Returns(1L).validateFor(new InvocationBuilder().method("longObjectReturningMethod").toInvocation()); new Returns(null).validateFor(new InvocationBuilder().method("objectReturningMethodNoArgs").toInvocation()); new Returns(1).validateFor(new InvocationBuilder().method("objectReturningMethodNoArgs").toInvocation()); } @Test(expected = MockitoException.class) public void should_fail_on_return_type_mismatch() throws Throwable { new Returns("String").validateFor(new InvocationBuilder().method("booleanReturningMethod").toInvocation()); } @Test(expected = MockitoException.class) public void should_fail_on_wrong_primitive() throws Throwable { new Returns(1).validateFor(new InvocationBuilder().method("doubleReturningMethod").toInvocation()); } @Test(expected = MockitoException.class) public void should_fail_on_null_with_primitive() throws Throwable { new Returns(null).validateFor(new InvocationBuilder().method("booleanReturningMethod").toInvocation()); } }