• Home
  • History
  • Annotate
  • 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