1package org.mockito.internal.creation.bytebuddy;
2
3import org.junit.Test;
4import org.mockito.plugins.MockMaker;
5
6import java.util.Observable;
7import java.util.Observer;
8
9import static org.assertj.core.api.Assertions.assertThat;
10
11public class SubclassByteBuddyMockMakerTest extends AbstractByteBuddyMockMakerTest<SubclassByteBuddyMockMaker> {
12
13    public SubclassByteBuddyMockMakerTest() {
14        super(new SubclassByteBuddyMockMaker());
15    }
16
17    @Test
18    public void is_type_mockable_excludes_primitive_wrapper_classes() {
19        MockMaker.TypeMockability mockable = mockMaker.isTypeMockable(Integer.class);
20        assertThat(mockable.mockable()).isFalse();
21        assertThat(mockable.nonMockableReason()).contains("final");
22    }
23
24    @Test
25    public void is_type_mockable_excludes_primitive_classes() {
26        MockMaker.TypeMockability mockable = mockMaker.isTypeMockable(int.class);
27        assertThat(mockable.mockable()).isFalse();
28        assertThat(mockable.nonMockableReason()).contains("primitive");
29    }
30
31    @Test
32    public void is_type_mockable_allow_anonymous() {
33        Observer anonymous = new Observer() {
34            @Override public void update(Observable o, Object arg) { }
35        };
36        MockMaker.TypeMockability mockable = mockMaker.isTypeMockable(anonymous.getClass());
37        assertThat(mockable.mockable()).isTrue();
38        assertThat(mockable.nonMockableReason()).contains("");
39    }
40
41    @Test
42    public void is_type_mockable_give_empty_reason_if_type_is_mockable() {
43        MockMaker.TypeMockability mockable = mockMaker.isTypeMockable(SomeClass.class);
44        assertThat(mockable.mockable()).isTrue();
45        assertThat(mockable.nonMockableReason()).isEqualTo("");
46    }
47
48
49    @Override
50    protected Class<?> mockTypeOf(Class<?> type) {
51        return type.getSuperclass();
52    }
53}
54