mirror of
https://github.com/corda/corda.git
synced 2024-12-30 17:57:02 +00:00
9bb3d6b972
git-subtree-dir: sgx-jvm/avian git-subtree-mainline:f978eab8d1
git-subtree-split:09e4fe60d0
162 lines
4.4 KiB
Java
162 lines
4.4 KiB
Java
import java.util.ArrayDeque;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedList;
|
|
import java.util.NoSuchElementException;
|
|
|
|
public class ArrayDequeTest {
|
|
private static void verify(boolean val) {
|
|
if (! val) {
|
|
throw new RuntimeException();
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) throws InterruptedException {
|
|
QueueHelper.sizeTest(new ArrayDeque<Object>());
|
|
QueueHelper.isEmptyTest(new ArrayDeque<Object>());
|
|
QueueHelper.addTest(new ArrayDeque<Object>());
|
|
QueueHelper.addAllTest(new ArrayDeque<Object>());
|
|
QueueHelper.elementTest(new ArrayDeque<Object>());
|
|
QueueHelper.elementFail(new ArrayDeque<Object>());
|
|
QueueHelper.removeEmptyFail(new ArrayDeque<Object>());
|
|
QueueHelper.removeTest(new ArrayDeque<Object>());
|
|
QueueHelper.containsTest(new ArrayDeque<Object>());
|
|
QueueHelper.containsAllTest(new ArrayDeque<Object>());
|
|
QueueHelper.removeObjectTest(new ArrayDeque<Object>());
|
|
QueueHelper.removeAllTest(new ArrayDeque<Object>());
|
|
QueueHelper.clearTest(new ArrayDeque<Object>());
|
|
QueueHelper.toArrayTest(new ArrayDeque<Object>());
|
|
|
|
DequeHelper.addFirstTest(new ArrayDeque<Object>());
|
|
DequeHelper.addLastTest(new ArrayDeque<Object>());
|
|
DequeHelper.removeFirstTest(new ArrayDeque<Object>());
|
|
DequeHelper.removeLastTest(new ArrayDeque<Object>());
|
|
|
|
iterateTest(false);
|
|
iterateTest(true);
|
|
iteratorRemoveTest(false);
|
|
iteratorRemoveTest(true);
|
|
iteratorNoElementFail(false);
|
|
iteratorNoElementFail(true);
|
|
}
|
|
|
|
private static void iterateTest(boolean desc) {
|
|
int testQty = 10;
|
|
LinkedList<Object> compareList = new LinkedList<Object>();
|
|
ArrayDeque<Object> ad = new ArrayDeque<Object>();
|
|
|
|
for (int i = 0; i < testQty; i++) {
|
|
Object o = new Object();
|
|
compareList.add(o);
|
|
ad.add(o);
|
|
}
|
|
|
|
Iterator<Object> compIt;
|
|
Iterator<Object> testIt;
|
|
if (desc) {
|
|
compIt = compareList.descendingIterator();
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
compIt = compareList.iterator();
|
|
testIt = ad.iterator();
|
|
}
|
|
while (testIt.hasNext()) {
|
|
verify(testIt.next() == compIt.next());
|
|
}
|
|
|
|
// remove from the front
|
|
compareList.removeFirst();
|
|
ad.removeFirst();
|
|
|
|
if (desc) {
|
|
compIt = compareList.descendingIterator();
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
compIt = compareList.iterator();
|
|
testIt = ad.iterator();
|
|
}
|
|
while (testIt.hasNext()) {
|
|
verify(testIt.next() == compIt.next());
|
|
}
|
|
|
|
// remove from the end
|
|
compareList.removeLast();
|
|
ad.removeLast();
|
|
|
|
if (desc) {
|
|
compIt = compareList.descendingIterator();
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
compIt = compareList.iterator();
|
|
testIt = ad.iterator();
|
|
}
|
|
while (testIt.hasNext()) {
|
|
verify(testIt.next() == compIt.next());
|
|
}
|
|
}
|
|
|
|
private static void iteratorRemoveTest(boolean desc) {
|
|
int testQty = 20;
|
|
LinkedList<Object> compareList = new LinkedList<Object>();
|
|
ArrayDeque<Object> ad = new ArrayDeque<Object>();
|
|
|
|
for (int i = 0; i < testQty; i++) {
|
|
Object o = new Object();
|
|
compareList.add(o);
|
|
ad.add(o);
|
|
}
|
|
|
|
Iterator<Object> compIt;
|
|
Iterator<Object> testIt;
|
|
if (desc) {
|
|
compIt = compareList.descendingIterator();
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
compIt = compareList.iterator();
|
|
testIt = ad.iterator();
|
|
}
|
|
boolean flip = true; // start with true to ensure first is removed
|
|
while (testIt.hasNext()) {
|
|
// advance iterators
|
|
testIt.next();
|
|
compIt.next();
|
|
|
|
if (flip || ! testIt.hasNext()) {
|
|
compIt.remove();
|
|
testIt.remove();
|
|
flip = false;
|
|
} else {
|
|
flip = true;
|
|
}
|
|
}
|
|
|
|
if (desc) {
|
|
compIt = compareList.descendingIterator();
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
compIt = compareList.iterator();
|
|
testIt = ad.iterator();
|
|
}
|
|
while (testIt.hasNext()) {
|
|
verify(testIt.next() == compIt.next());
|
|
}
|
|
}
|
|
|
|
private static void iteratorNoElementFail(boolean desc) {
|
|
ArrayDeque<Object> ad = new ArrayDeque<Object>();
|
|
|
|
Iterator<Object> testIt;
|
|
if (desc) {
|
|
testIt = ad.descendingIterator();
|
|
} else {
|
|
testIt = ad.iterator();
|
|
}
|
|
|
|
try {
|
|
testIt.next();
|
|
throw new RuntimeException("Exception should have thrown");
|
|
} catch (NoSuchElementException e) {
|
|
// expected
|
|
}
|
|
}
|
|
}
|