1/** 2 * 3 */ 4package org.junit.experimental.theories.internal; 5 6import java.util.Arrays; 7import java.util.Collection; 8import java.util.Iterator; 9 10 11public class ParameterizedAssertionError extends RuntimeException { 12 private static final long serialVersionUID = 1L; 13 14 public ParameterizedAssertionError(Throwable targetException, 15 String methodName, Object... params) { 16 super(String.format("%s(%s)", methodName, join(", ", params)), 17 targetException); 18 } 19 20 @Override public boolean equals(Object obj) { 21 return toString().equals(obj.toString()); 22 } 23 24 public static String join(String delimiter, Object... params) { 25 return join(delimiter, Arrays.asList(params)); 26 } 27 28 public static String join(String delimiter, 29 Collection<Object> values) { 30 StringBuffer buffer = new StringBuffer(); 31 Iterator<Object> iter = values.iterator(); 32 while (iter.hasNext()) { 33 Object next = iter.next(); 34 buffer.append(stringValueOf(next)); 35 if (iter.hasNext()) { 36 buffer.append(delimiter); 37 } 38 } 39 return buffer.toString(); 40 } 41 42 private static String stringValueOf(Object next) { 43 try { 44 return String.valueOf(next); 45 } catch (Throwable e) { 46 return "[toString failed]"; 47 } 48 } 49}