/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.basicapi;
import static org.assertj.core.api.Assertions.assertThat;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockitoutil.TestBase;
import static junit.framework.TestCase.assertEquals;
public class ReplacingObjectMethodsTest extends TestBase {
private interface DummyInterface {}
private class DummyClass {}
@Test
public void shouldProvideMockyImplementationOfToString() {
DummyClass dummyClass = Mockito.mock(DummyClass.class);
assertEquals("Mock for DummyClass, hashCode: " + dummyClass.hashCode(), dummyClass.toString());
DummyInterface dummyInterface = Mockito.mock(DummyInterface.class);
assertEquals("Mock for DummyInterface, hashCode: " + dummyInterface.hashCode(), dummyInterface.toString());
}
@Test
public void shouldReplaceObjectMethods() {
Object mock = Mockito.mock(ObjectMethodsOverridden.class);
Object otherMock = Mockito.mock(ObjectMethodsOverridden.class);
assertThat(mock).isEqualTo(mock);
assertThat(mock).isNotEqualTo(otherMock);
assertThat(mock.hashCode()).isNotEqualTo(otherMock.hashCode());
assertThat(mock.toString()).contains("Mock for ObjectMethodsOverridden");
}
@Test
public void shouldReplaceObjectMethodsWhenOverridden() {
Object mock = Mockito.mock(ObjectMethodsOverriddenSubclass.class);
Object otherMock = Mockito.mock(ObjectMethodsOverriddenSubclass.class);
assertThat(mock).isEqualTo(mock);
assertThat(mock).isNotEqualTo(otherMock);
assertThat(mock.hashCode()).isNotEqualTo(otherMock.hashCode());
assertThat(mock.toString()).contains("Mock for ObjectMethodsOverriddenSubclass");
}
public static class ObjectMethodsOverridden {
public boolean equals(Object o) {
throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
}
public int hashCode() {
throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
}
public String toString() {
throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
}
}
public static class ObjectMethodsOverriddenSubclass extends ObjectMethodsOverridden {
}
}