Extracted to outer class

This commit is contained in:
Sander Hautvast 2015-09-26 10:44:36 +02:00
parent d9a3df8277
commit b85037666a
2 changed files with 106 additions and 0 deletions

View file

@ -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<Object> {
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<Object> iterator() {
return asList().iterator();
}
private List<Object> asList() {
List<Object> list = new ArrayList<Object>();
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<Object> 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();
}
}

View file

@ -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());
}
}