| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.reporting; |
| |
| import org.mockito.ArgumentMatcher; |
| import org.mockito.internal.invocation.ArgumentsProcessor; |
| import org.mockito.internal.matchers.text.MatchersPrinter; |
| import org.mockito.internal.util.MockUtil; |
| import org.mockito.invocation.Invocation; |
| import org.mockito.invocation.MatchableInvocation; |
| |
| import java.util.Arrays; |
| import java.util.LinkedList; |
| import java.util.List; |
| |
| public class PrintSettings { |
| |
| public static final int MAX_LINE_LENGTH = 45; |
| private boolean multiline; |
| private List<Integer> withTypeInfo = new LinkedList<Integer>(); |
| |
| public void setMultiline(boolean multiline) { |
| this.multiline = multiline; |
| } |
| |
| public boolean isMultiline() { |
| return multiline; |
| } |
| |
| public static PrintSettings verboseMatchers(Integer ... indexesOfMatchers) { |
| PrintSettings settings = new PrintSettings(); |
| settings.setMatchersToBeDescribedWithExtraTypeInfo(indexesOfMatchers); |
| return settings; |
| } |
| |
| public boolean extraTypeInfoFor(int argumentIndex) { |
| return withTypeInfo.contains(argumentIndex); |
| } |
| |
| public void setMatchersToBeDescribedWithExtraTypeInfo(Integer[] indexesOfMatchers) { |
| this.withTypeInfo = Arrays.asList(indexesOfMatchers); |
| } |
| |
| public String print(List<ArgumentMatcher> matchers, Invocation invocation) { |
| MatchersPrinter matchersPrinter = new MatchersPrinter(); |
| String qualifiedName = MockUtil.getMockName(invocation.getMock()) + "." + invocation.getMethod().getName(); |
| String invocationString = qualifiedName + matchersPrinter.getArgumentsLine(matchers, this); |
| if (isMultiline() || (!matchers.isEmpty() && invocationString.length() > MAX_LINE_LENGTH)) { |
| return qualifiedName + matchersPrinter.getArgumentsBlock(matchers, this); |
| } else { |
| return invocationString; |
| } |
| } |
| |
| public String print(Invocation invocation) { |
| return print(ArgumentsProcessor.argumentsToMatchers(invocation.getArguments()), invocation); |
| } |
| |
| public String print(MatchableInvocation invocation) { |
| return print(invocation.getMatchers(), invocation.getInvocation()); |
| } |
| } |