diff options
author | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 00:25:19 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 00:25:19 +1000 |
commit | 7e1182355d54f0dc8461ce7df7c4aca8c40d2a92 (patch) | |
tree | 49f864ec8f584dd5a4cfb3d03e6201fad20e653c /src/main/java/au/id/zancanaro/PropertyError.java | |
parent | a4b5a5f904fe9f21697cd8fc8998c7e6e86306af (diff) |
Just some rearranging, renaming and clean-up
Diffstat (limited to 'src/main/java/au/id/zancanaro/PropertyError.java')
-rw-r--r-- | src/main/java/au/id/zancanaro/PropertyError.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/au/id/zancanaro/PropertyError.java b/src/main/java/au/id/zancanaro/PropertyError.java new file mode 100644 index 0000000..b2fb589 --- /dev/null +++ b/src/main/java/au/id/zancanaro/PropertyError.java @@ -0,0 +1,45 @@ +package au.id.zancanaro; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; + +public class PropertyError extends AssertionError { + public PropertyError(String methodName, long seed, ShrinkResult shrunk) { + super(String.format("%s(%s)\n\tSeed: %s\n%s", + methodName, join(", ", shrunk.args), + seed, + shrunk.thrown.getMessage())); + initCause(shrunk.thrown); + } + + + public static String join(String delimiter, Object... params) { + return join(delimiter, Arrays.asList(params)); + } + + public static String join(String delimiter, Collection<Object> values) { + StringBuilder sb = new StringBuilder(); + Iterator<Object> iter = values.iterator(); + while (iter.hasNext()) { + Object next = iter.next(); + sb.append(stringValueOf(next)); + if (iter.hasNext()) { + sb.append(delimiter); + } + } + return sb.toString(); + } + + private static String stringValueOf(Object next) { + if (next instanceof String) { + return '"' + ((String) next).replace("\"", "\\\"") + '"'; + } else { + try { + return String.valueOf(next); + } catch (Throwable e) { + return "[toString failed]"; + } + } + } +} |