From 9db49ccb50b1d667caf80f5b09087af88f817b60 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Aug 2016 22:03:18 +0100 Subject: Remove usage of make it easy for building body readers --- .../java/org/zwobble/mammoth/tests/Arguments.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/test/java/org/zwobble/mammoth/tests/Arguments.java (limited to 'src/test/java/org/zwobble/mammoth/tests/Arguments.java') 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 get(Class clazz) { + return only(getAll(clazz)); + } + + public T get(Class clazz, T defaultValue) { + Iterator arguments = getAll(clazz).iterator(); + if (!arguments.hasNext()) { + return defaultValue; + } else { + return only(arguments); + } + } + + private Iterable getAll(Class clazz) { + return Iterables.lazyFilter(asList(arguments), clazz); + } + + + private T only(Iterable iterable) { + return only(iterable.iterator()); + } + + private T only(Iterator iterator) { + T value = iterator.next(); + if (iterator.hasNext()) { + throw new RuntimeException("Expected exactly one element, but had multiple elements"); + } else { + return value; + } + } +} -- cgit v1.2.3