From b85037666ac7456921fa37825d0f23eb2f62e484 Mon Sep 17 00:00:00 2001 From: Sander Hautvast Date: Sat, 26 Sep 2015 10:44:36 +0200 Subject: [PATCH] Extracted to outer class --- src/main/java/nl/jssl/autounit/util/Pair.java | 81 +++++++++++++++++++ .../java/nl/jssl/autounit/util/PairTests.java | 25 ++++++ 2 files changed, 106 insertions(+) create mode 100644 src/main/java/nl/jssl/autounit/util/Pair.java create mode 100644 src/test/java/nl/jssl/autounit/util/PairTests.java diff --git a/src/main/java/nl/jssl/autounit/util/Pair.java b/src/main/java/nl/jssl/autounit/util/Pair.java new file mode 100644 index 0000000..78079d0 --- /dev/null +++ b/src/main/java/nl/jssl/autounit/util/Pair.java @@ -0,0 +1,81 @@ +package nl.jssl.autounit.util; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class Pair implements Iterable { + public final Object element1; + public final Object element2; + + public Pair(Object element1) { + this.element1 = element1; + this.element2 = null; + } + + public Pair(Object element1, Object element2) { + super(); + this.element1 = element1; + this.element2 = element2; + } + + public int depth() { + int d = 0; + if (element2 != null) { + if (element2 instanceof Pair) { + d += 1 + ((Pair) element2).depth(); + } else { + d += 1; + } + } + if (element1 != null) { + if (element1 instanceof Pair) { + d += 1 + ((Pair) element1).depth(); + } else { + d += 1; + } + } + return d; + } + + @Override + public Iterator iterator() { + return asList().iterator(); + } + + private List asList() { + List list = new ArrayList(); + if (element1 != null) { + add(element1, list); + } else { + add("autounit:[NULL]", list); + } + if (element2 != null) { + add(element2, list); + } + return list; + } + + private void add(Object element, List list) { + if (element instanceof Pair) { + Pair pair = (Pair) element; + add(pair.element1, list); + add(pair.element2, list); + } else { + list.add(element); + } + } + + @Override + public String toString() { + String string = ""; + for (Object o : this) { + string += o.toString() + "-"; + } + return string; + } + + public Object[] toArray() { + return asList().toArray(); + } +} \ No newline at end of file diff --git a/src/test/java/nl/jssl/autounit/util/PairTests.java b/src/test/java/nl/jssl/autounit/util/PairTests.java new file mode 100644 index 0000000..35a4cd6 --- /dev/null +++ b/src/test/java/nl/jssl/autounit/util/PairTests.java @@ -0,0 +1,25 @@ +package nl.jssl.autounit.util; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class PairTests { + @Test + public void testDepth1() { + Pair p = new Pair("1"); + assertEquals(1, p.depth()); + } + + @Test + public void testDepth2() { + Pair p = new Pair(new Pair("1")); + assertEquals(2, p.depth()); + } + + @Test + public void testDepth3() { + Pair p = new Pair(new Pair(new Pair("1"))); + assertEquals(3, p.depth()); + } +}