1
2
3
4
5
6 package mockit.internal.expectations;
7
8 import static java.lang.reflect.Modifier.isNative;
9 import static java.lang.reflect.Modifier.isStatic;
10
11 import edu.umd.cs.findbugs.annotations.NonNull;
12 import edu.umd.cs.findbugs.annotations.Nullable;
13
14 import mockit.internal.state.TestRun;
15
16 public enum ExecutionMode {
17 Regular {
18 @Override
19 boolean isNativeMethodToBeIgnored(int access) {
20 return false;
21 }
22
23 @Override
24 boolean isToExecuteRealImplementation(@Nullable Object instance) {
25 return instance != null && !TestRun.mockFixture().isInstanceOfMockedClass(instance);
26 }
27 },
28
29 Partial {
30 @Override
31 boolean isToExecuteRealImplementation(@Nullable Object instance) {
32 return instance != null && !TestRun.mockFixture().isInstanceOfMockedClass(instance);
33 }
34
35 @Override
36 boolean isWithRealImplementation(@Nullable Object instance) {
37 return instance == null || !TestRun.getExecutingTest().isInjectableMock(instance);
38 }
39
40 @Override
41 boolean isToExecuteRealObjectOverride(@NonNull Object instance) {
42 return true;
43 }
44 },
45
46 PerInstance {
47 @Override
48 boolean isStaticMethodToBeIgnored(int access) {
49 return isStatic(access);
50 }
51
52 @Override
53 boolean isToExecuteRealImplementation(@Nullable Object instance) {
54 return instance == null || TestRun.getExecutingTest().isUnmockedInstance(instance);
55 }
56
57 @Override
58 boolean isToExecuteRealObjectOverride(@NonNull Object instance) {
59 return TestRun.getExecutingTest().isUnmockedInstance(instance);
60 }
61 };
62
63 public final boolean isMethodToBeIgnored(int access) {
64 return isStaticMethodToBeIgnored(access) || isNativeMethodToBeIgnored(access);
65 }
66
67 boolean isStaticMethodToBeIgnored(int access) {
68 return false;
69 }
70
71 boolean isNativeMethodToBeIgnored(int access) {
72 return isNative(access);
73 }
74
75 boolean isToExecuteRealImplementation(@Nullable Object instance) {
76 return false;
77 }
78
79 boolean isWithRealImplementation(@Nullable Object instance) {
80 return false;
81 }
82
83 boolean isToExecuteRealObjectOverride(@NonNull Object instance) {
84 return false;
85 }
86 }