• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.junit.internal;
2 
3 import java.util.ArrayList;
4 import java.util.List;
5 
6 import org.junit.Assert;
7 
8 /**
9  * Thrown when two array elements differ
10  * @see Assert#assertArrayEquals(String, Object[], Object[])
11  */
12 public class ArrayComparisonFailure extends AssertionError {
13 
14 	private static final long serialVersionUID= 1L;
15 
16 	private List<Integer> fIndices= new ArrayList<Integer>();
17 	private final String fMessage;
18 	private final AssertionError fCause;
19 
20 	/**
21 	 * Construct a new <code>ArrayComparisonFailure</code> with an error text and the array's
22 	 * dimension that was not equal
23 	 * @param cause the exception that caused the array's content to fail the assertion test
24 	 * @param index the array position of the objects that are not equal.
25 	 * @see Assert#assertArrayEquals(String, Object[], Object[])
26 	 */
ArrayComparisonFailure(String message, AssertionError cause, int index)27 	public ArrayComparisonFailure(String message, AssertionError cause, int index) {
28 		fMessage= message;
29 		fCause= cause;
30 		addDimension(index);
31 	}
32 
addDimension(int index)33 	public void addDimension(int index) {
34 		fIndices.add(0, index);
35 	}
36 
37 	@Override
getMessage()38 	public String getMessage() {
39 		StringBuilder builder= new StringBuilder();
40 		if (fMessage != null)
41 			builder.append(fMessage);
42 		builder.append("arrays first differed at element ");
43 		for (int each : fIndices) {
44 			builder.append("[");
45 			builder.append(each);
46 			builder.append("]");
47 		}
48 		builder.append("; ");
49 		builder.append(fCause.getMessage());
50 		return builder.toString();
51 	}
52 
53 	/**
54 	 * {@inheritDoc}
55 	 */
toString()56 	@Override public String toString() {
57 		return getMessage();
58 	}
59 }
60