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