1/*
2 * Copyright (c) 2007 Mockito contributors
3 * This program is made available under the terms of the MIT License.
4 */
5package org.mockito.internal.debugging;
6
7import org.mockito.internal.invocation.InvocationMatcher;
8import org.mockito.internal.util.MockitoLogger;
9import org.mockito.invocation.Invocation;
10
11import static org.mockito.internal.util.StringJoiner.join;
12
13public class LoggingListener implements FindingsListener {
14    private boolean warnAboutUnstubbed;
15    private final MockitoLogger logger;
16
17    public LoggingListener(boolean warnAboutUnstubbed, MockitoLogger logger) {
18        this.warnAboutUnstubbed = warnAboutUnstubbed;
19        this.logger = logger;
20    }
21
22    public void foundStubCalledWithDifferentArgs(Invocation unused, InvocationMatcher unstubbed) {
23        logger.log(join(
24                " *** Stubbing warnings from Mockito: *** ",
25                "",
26                "stubbed with those args here   " + unused.getLocation(),
27                "BUT called with different args " + unstubbed.getInvocation().getLocation(),
28                ""));
29    }
30
31    public void foundUnusedStub(Invocation unused) {
32        logger.log("This stubbing was never used   " + unused.getLocation() + "\n");
33    }
34
35    public void foundUnstubbed(InvocationMatcher unstubbed) {
36        if (warnAboutUnstubbed) {
37            logger.log(join(
38                    "This method was not stubbed ",
39                    unstubbed,
40                    unstubbed.getInvocation().getLocation(),
41                    ""));
42        }
43    }
44
45    public boolean isWarnAboutUnstubbed() {
46        return warnAboutUnstubbed;
47    }
48
49    public MockitoLogger getLogger() {
50        return logger;
51    }
52}