blob: 18ca07a4044d59edcd6fefdfa20378b2b8c05ea5 [file] [log] [blame]
package org.junit.experimental.theories;
import static java.lang.String.format;
public abstract class PotentialAssignment {
public static class CouldNotGenerateValueException extends Exception {
private static final long serialVersionUID = 1L;
public CouldNotGenerateValueException() {
}
public CouldNotGenerateValueException(Throwable e) {
super(e);
}
}
public static PotentialAssignment forValue(final String name, final Object value) {
return new PotentialAssignment() {
@Override
public Object getValue() {
return value;
}
@Override
public String toString() {
return format("[%s]", value);
}
@Override
public String getDescription() {
String valueString;
if (value == null) {
valueString = "null";
} else {
try {
valueString = format("\"%s\"", value);
} catch (Throwable e) {
valueString = format("[toString() threw %s: %s]",
e.getClass().getSimpleName(), e.getMessage());
}
}
return format("%s <from %s>", valueString, name);
}
};
}
public abstract Object getValue() throws CouldNotGenerateValueException;
public abstract String getDescription() throws CouldNotGenerateValueException;
}