• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 
6 package org.mockitousage.basicapi;
7 
8 import static org.assertj.core.api.Assertions.assertThat;
9 
10 import org.assertj.core.api.Assertions;
11 import org.junit.Test;
12 import org.mockito.Mockito;
13 import org.mockitoutil.TestBase;
14 
15 import static junit.framework.TestCase.assertEquals;
16 
17 public class ReplacingObjectMethodsTest extends TestBase {
18 
19     private interface DummyInterface {}
20     private class DummyClass {}
21 
22     @Test
shouldProvideMockyImplementationOfToString()23     public void shouldProvideMockyImplementationOfToString() {
24         DummyClass dummyClass = Mockito.mock(DummyClass.class);
25         assertEquals("Mock for DummyClass, hashCode: " + dummyClass.hashCode(), dummyClass.toString());
26         DummyInterface dummyInterface = Mockito.mock(DummyInterface.class);
27         assertEquals("Mock for DummyInterface, hashCode: " + dummyInterface.hashCode(), dummyInterface.toString());
28     }
29 
30     @Test
shouldReplaceObjectMethods()31     public void shouldReplaceObjectMethods() {
32         Object mock = Mockito.mock(ObjectMethodsOverridden.class);
33         Object otherMock = Mockito.mock(ObjectMethodsOverridden.class);
34 
35         assertThat(mock).isEqualTo(mock);
36         assertThat(mock).isNotEqualTo(otherMock);
37         assertThat(mock.hashCode()).isNotEqualTo(otherMock.hashCode());
38 
39         assertThat(mock.toString()).contains("Mock for ObjectMethodsOverridden");
40     }
41 
42     @Test
shouldReplaceObjectMethodsWhenOverridden()43     public void shouldReplaceObjectMethodsWhenOverridden() {
44         Object mock = Mockito.mock(ObjectMethodsOverriddenSubclass.class);
45         Object otherMock = Mockito.mock(ObjectMethodsOverriddenSubclass.class);
46 
47         assertThat(mock).isEqualTo(mock);
48         assertThat(mock).isNotEqualTo(otherMock);
49         assertThat(mock.hashCode()).isNotEqualTo(otherMock.hashCode());
50 
51         assertThat(mock.toString()).contains("Mock for ObjectMethodsOverriddenSubclass");
52     }
53 
54     public static class ObjectMethodsOverridden {
equals(Object o)55         public boolean equals(Object o) {
56             throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
57         }
hashCode()58         public int hashCode() {
59             throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
60         }
toString()61         public String toString() {
62             throw new RuntimeException("Should not be called. MethodInterceptorFilter provides implementation");
63         }
64     }
65 
66     public static class ObjectMethodsOverriddenSubclass extends ObjectMethodsOverridden {
67     }
68 }
69