diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-28 22:03:18 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-28 22:03:18 +0100 |
| commit | 9db49ccb50b1d667caf80f5b09087af88f817b60 (patch) | |
| tree | e82112a7e546bcf733adad3551b0018e092e257d /src/test/java/org/zwobble/mammoth/tests/Arguments.java | |
| parent | db23f095a273ab3715083122b21e446f8d0715dd (diff) | |
Remove usage of make it easy for building body readers
Diffstat (limited to 'src/test/java/org/zwobble/mammoth/tests/Arguments.java')
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/Arguments.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/mammoth/tests/Arguments.java b/src/test/java/org/zwobble/mammoth/tests/Arguments.java new file mode 100644 index 0000000..afb20bb --- /dev/null +++ b/src/test/java/org/zwobble/mammoth/tests/Arguments.java @@ -0,0 +1,46 @@ +package org.zwobble.mammoth.tests; + +import org.zwobble.mammoth.internal.util.Iterables; + +import java.util.Iterator; + +import static java.util.Arrays.asList; + +public class Arguments { + private final Object[] arguments; + + public Arguments(Object[] arguments) { + this.arguments = arguments; + } + + public <T> T get(Class<T> clazz) { + return only(getAll(clazz)); + } + + public <T> T get(Class<T> clazz, T defaultValue) { + Iterator<T> arguments = getAll(clazz).iterator(); + if (!arguments.hasNext()) { + return defaultValue; + } else { + return only(arguments); + } + } + + private <T> Iterable<T> getAll(Class<T> clazz) { + return Iterables.lazyFilter(asList(arguments), clazz); + } + + + private <T> T only(Iterable<T> iterable) { + return only(iterable.iterator()); + } + + private <T> T only(Iterator<T> iterator) { + T value = iterator.next(); + if (iterator.hasNext()) { + throw new RuntimeException("Expected exactly one element, but had multiple elements"); + } else { + return value; + } + } +} |
