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.reporting;
6
7
8import org.mockito.internal.invocation.InvocationMatcher;
9import org.mockito.invocation.Invocation;
10
11/**
12 * Makes sure both wanted and actual are printed consistently (single line or multiline)
13 * <p>
14 * Makes arguments printed with types if necessary
15 */
16public class SmartPrinter {
17
18    private final String wanted;
19    private final String actual;
20
21    public SmartPrinter(InvocationMatcher wanted, Invocation actual, Integer ... indexesOfMatchersToBeDescribedWithExtraTypeInfo) {
22        PrintSettings printSettings = new PrintSettings();
23        printSettings.setMultiline(wanted.toString().contains("\n") || actual.toString().contains("\n"));
24        printSettings.setMatchersToBeDescribedWithExtraTypeInfo(indexesOfMatchersToBeDescribedWithExtraTypeInfo);
25
26        this.wanted = printSettings.print(wanted);
27        this.actual = printSettings.print(actual);
28    }
29
30    public String getWanted() {
31        return wanted;
32    }
33
34    public String getActual() {
35        return actual;
36    }
37}