| 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; |
| } |