• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2018 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockito.internal.session;
6 
7 import org.mockito.MockitoSession;
8 import org.mockito.internal.framework.DefaultMockitoSession;
9 import org.mockito.internal.util.ConsoleMockitoLogger;
10 import org.mockito.internal.util.MockitoLogger;
11 import org.mockito.quality.Strictness;
12 import org.mockito.session.MockitoSessionBuilder;
13 import org.mockito.session.MockitoSessionLogger;
14 
15 import java.util.ArrayList;
16 import java.util.List;
17 
18 import static java.util.Collections.emptyList;
19 
20 public class DefaultMockitoSessionBuilder implements MockitoSessionBuilder {
21 
22     private List<Object> testClassInstances = new ArrayList<Object>();
23     private String name;
24     private Strictness strictness;
25     private MockitoSessionLogger logger;
26 
27     @Override
initMocks(Object testClassInstance)28     public MockitoSessionBuilder initMocks(Object testClassInstance) {
29         if (testClassInstance != null) {
30             this.testClassInstances.add(testClassInstance);
31         }
32         return this;
33     }
34 
35     @Override
initMocks(Object... testClassInstances)36     public MockitoSessionBuilder initMocks(Object... testClassInstances) {
37         if (testClassInstances != null) {
38             for (Object instance : testClassInstances) {
39                 initMocks(instance);
40             }
41         }
42         return this;
43     }
44 
45     @Override
name(String name)46     public MockitoSessionBuilder name(String name) {
47         this.name = name;
48         return this;
49     }
50 
51     @Override
strictness(Strictness strictness)52     public MockitoSessionBuilder strictness(Strictness strictness) {
53         this.strictness = strictness;
54         return this;
55     }
56 
57     @Override
logger(MockitoSessionLogger logger)58     public MockitoSessionBuilder logger(MockitoSessionLogger logger) {
59         this.logger = logger;
60         return this;
61     }
62 
63     @Override
startMocking()64     public MockitoSession startMocking() {
65         //Configure default values
66         List<Object> effectiveTestClassInstances;
67         String effectiveName;
68         if (testClassInstances.isEmpty()) {
69             effectiveTestClassInstances = emptyList();
70             effectiveName = this.name == null ? "<Unnamed Session>" : this.name;
71         } else {
72             effectiveTestClassInstances = new ArrayList<Object>(testClassInstances);
73             Object lastTestClassInstance = testClassInstances.get(testClassInstances.size() - 1);
74             effectiveName = this.name == null ? lastTestClassInstance.getClass().getName() : this.name;
75         }
76         Strictness effectiveStrictness = this.strictness == null ? Strictness.STRICT_STUBS : this.strictness;
77         MockitoLogger logger = this.logger == null ? new ConsoleMockitoLogger() : new MockitoLoggerAdapter(this.logger);
78         return new DefaultMockitoSession(effectiveTestClassInstances, effectiveName, effectiveStrictness, logger);
79     }
80 }
81