/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.invocation;
import org.junit.Before;
import org.junit.Test;
import org.mockitoutil.TestBase;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Method;
import static org.junit.Assert.*;
public class SerializableMethodTest extends TestBase {
private MockitoMethod method;
private Method toStringMethod;
private Class<?>[] args;
@Before
public void createMethodToTestWith() throws SecurityException, NoSuchMethodException {
args = new Class<?>[0];
toStringMethod = this.getClass().getMethod("toString", args);
method = new SerializableMethod(toStringMethod);
}
@Test
public void shouldBeSerializable() throws Exception {
ByteArrayOutputStream serialized = new ByteArrayOutputStream();
new ObjectOutputStream(serialized).writeObject(method);
}
@Test
public void shouldBeAbleToRetrieveMethodExceptionTypes() throws Exception {
assertArrayEquals(toStringMethod.getExceptionTypes(), method.getExceptionTypes());
}
@Test
public void shouldBeAbleToRetrieveMethodName() throws Exception {
assertEquals(toStringMethod.getName(), method.getName());
}
@Test
public void shouldBeAbleToCheckIsArgVargs() throws Exception {
assertEquals(toStringMethod.isVarArgs(), method.isVarArgs());
}
@Test
public void shouldBeAbleToGetParameterTypes() throws Exception {
assertArrayEquals(toStringMethod.getParameterTypes(), method.getParameterTypes());
}
@Test
public void shouldBeAbleToGetReturnType() throws Exception {
assertEquals(toStringMethod.getReturnType(), method.getReturnType());
}
@Test
public void shouldBeEqualForTwoInstances() throws Exception {
assertTrue(new SerializableMethod(toStringMethod).equals(method));
}
@Test
public void shouldNotBeEqualForSameMethodFromTwoDifferentClasses() throws Exception {
Method testBaseToStringMethod = String.class.getMethod("toString", args);
assertFalse(new SerializableMethod(testBaseToStringMethod).equals(method));
}
//TODO: add tests for generated equals() method
}