blob: 7de160c09eacf7047c9de98ca8ecf578499de23e [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.stubbing.defaultanswers;
import org.junit.Test;
import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.util.MockUtil;
import org.mockitoutil.TestBase;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeFalse;
public class ReturnsMocksTest extends TestBase {
private ReturnsMocks values = new ReturnsMocks();
interface FooInterface {
}
class BarClass {
}
final class Baz {
}
@Test
public void should_return_mock_value_for_interface() throws Exception {
Object interfaceMock = values.returnValueFor(FooInterface.class);
assertTrue(MockUtil.isMock(interfaceMock));
}
@Test
public void should_return_mock_value_for_class() throws Exception {
Object classMock = values.returnValueFor(BarClass.class);
assertTrue(MockUtil.isMock(classMock));
}
@Test
public void should_return_null_for_final_class_if_unsupported() throws Exception {
assumeFalse(Plugins.getMockMaker().isTypeMockable(Baz.class).mockable());
assertNull(values.returnValueFor(Baz.class));
}
@Test
public void should_return_the_usual_default_values_for_primitives() throws Throwable {
ReturnsMocks answer = new ReturnsMocks();
assertEquals(false, answer.answer(invocationOf(HasPrimitiveMethods.class, "booleanMethod")));
assertEquals((char) 0, answer.answer(invocationOf(HasPrimitiveMethods.class, "charMethod")));
assertEquals((byte) 0, answer.answer(invocationOf(HasPrimitiveMethods.class, "byteMethod")));
assertEquals((short) 0, answer.answer(invocationOf(HasPrimitiveMethods.class, "shortMethod")));
assertEquals(0, answer.answer(invocationOf(HasPrimitiveMethods.class, "intMethod")));
assertEquals(0L, answer.answer(invocationOf(HasPrimitiveMethods.class, "longMethod")));
assertEquals(0f, answer.answer(invocationOf(HasPrimitiveMethods.class, "floatMethod")));
assertEquals(0d, answer.answer(invocationOf(HasPrimitiveMethods.class, "doubleMethod")));
}
@SuppressWarnings("unused")
interface StringMethods {
String stringMethod();
String[] stringArrayMethod();
}
@Test
public void should_return_empty_array() throws Throwable {
String[] ret = (String[]) values.answer(invocationOf(StringMethods.class, "stringArrayMethod"));
assertTrue(ret.getClass().isArray());
assertTrue(ret.length == 0);
}
@Test
public void should_return_empty_string() throws Throwable {
assertEquals("", values.answer(invocationOf(StringMethods.class, "stringMethod")));
}
}