package org.test4j.hamcrest.matcher.property.report; import static org.test4j.hamcrest.matcher.property.report.DefaultDifferenceReport.MAX_LINE_SIZE; import org.test4j.hamcrest.matcher.property.difference.Difference; public class SimpleDifferenceView implements DifferenceView { private ObjectFormatter objectFormatter = new ObjectFormatter(); /** * Creates a string representation of the given difference tree. * * @param difference * The root difference, not null * @return The string representation, not null */ public String createView(Difference difference) { String expectedStr = objectFormatter.format(difference.getLeftValue()); String actualStr = objectFormatter.format(difference.getRightValue()); String formattedOnOneLine = formatOnOneLine(expectedStr, actualStr); if (AssertionError.class.getName().length() + 2 + formattedOnOneLine.length() < MAX_LINE_SIZE) { return formattedOnOneLine; } else { return formatOnTwoLines(expectedStr, actualStr); } } protected String formatOnOneLine(String expectedStr, String actualStr) { return new StringBuilder().append("Expected: ").append(expectedStr).append(", actual: ").append(actualStr) .toString(); } protected String formatOnTwoLines(String expectedStr, String actualStr) { StringBuilder result = new StringBuilder(); result.append("\nExpected: ").append(expectedStr); result.append("\n Actual: ").append(actualStr); return result.toString(); } }