aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-07-31 17:14:35 +0100
committerMichael Williamson <mike@zwobble.org>2016-07-31 17:14:35 +0100
commit879f53add0eb030ba6eee502d11b919d9ae25997 (patch)
treec8f1791d01fd6646ca247408876857b788daa35e /src/main
parent03d1b883a006a3500033ff371077de017efcf039 (diff)
Throw error if iterables are of different lengths
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/util/ExtraLists.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
index 147fe00..aa1f35f 100644
--- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java
+++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
@@ -108,16 +108,23 @@ public class ExtraLists {
Iterable<T2> iterable2,
BiFunction<T1, T2, R> function)
{
- // TODO: error handling when iterables are different lengths
Iterator<T1> iterator1 = iterable1.iterator();
Iterator<T2> iterator2 = iterable2.iterator();
ImmutableList.Builder<R> result = ImmutableList.builder();
- while (iterator1.hasNext()) {
+ while (iterator1.hasNext() && iterator2.hasNext()) {
result.add(function.apply(iterator1.next(), iterator2.next()));
}
+ if (iterator1.hasNext()) {
+ throw new RuntimeException("iterable1 longer than iterable2");
+ }
+
+ if (iterator2.hasNext()) {
+ throw new RuntimeException("iterable2 longer than iterable1");
+ }
+
return result.build();
}