MultiTest.java
/***************************************************************************
Copyright 2015 Emily Estes
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
***************************************************************************/
package net.metanotion.util;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
public final class MultiTest {
private static void assertTrue(final boolean result) {
if(!result) { throw new AssertionError("Expected true"); }
}
public static void main(final String[] args) throws Exception {
testChainedIterator();
testPair();
}
public static void testChainedIterator() {
final List<String> testArr = Arrays.asList("A", "B", "C", "D");
final ArrayList<Iterator<String>> itList = new ArrayList<>();
itList.add(testArr.iterator());
itList.add(testArr.iterator());
final ChainedIterator<String> it = new ChainedIterator<>((Iterable<Iterator<String>>) itList);
for(final String val: testArr) {
assertTrue(it.hasNext());
assertTrue(it.hasNext());
try {
it.remove();
throw new AssertionError("Removal is not supported by this iterator.");
} catch (final UnsupportedOperationException uoe) {
// Expected.
}
final String v = it.next();
assertTrue(val.equals(v));
}
for(final String val: testArr) {
final String v = it.next();
assertTrue(val.equals(v));
}
assertTrue(!it.hasNext());
try {
it.next();
throw new AssertionError("Iterated past end of list.");
} catch (final NoSuchElementException nsee) {
// Expected.
}
}
public static void testPair() {
final Pair<String,Integer> p = new Pair<>("A", 1);
final Pair<String,Integer> p2 = new Pair<>("C", 3);
final Pair<String,Integer> p3 = new Pair<>(null, null);
final Pair<String,Integer> p4 = new Pair<>(null, 1);
final Pair<String,Integer> p5 = new Pair<>("A", null);
final Pair<String,Integer> p6 = new Pair<>(null, 6);
final Pair<String,Integer> p7 = new Pair<>(new String("A"), 1);
final Pair<String,Integer> p8 = new Pair<>(new String("A"), new Integer(1));
final Pair<String,Integer> p9 = new Pair<>("A", new Integer(1));
final Pair<String,Integer> p10 = new Pair<>(new String("A"), null);
final Pair<String,Integer> p11 = new Pair<>(null, new Integer(6));
assertTrue(p.equals(p));
assertTrue(p.equals(p7));
assertTrue(p.equals(p8));
assertTrue(p.equals(p9));
assertTrue(p7.equals(p9));
assertTrue(p7.equals(p8));
assertTrue(p7.equals(p));
assertTrue(p8.equals(p));
assertTrue(p8.equals(p7));
assertTrue(p8.equals(p9));
assertTrue(p9.equals(p8));
assertTrue(!p.equals(p10));
assertTrue(!p.equals(p11));
assertTrue(!p3.equals(p10));
assertTrue(!p3.equals(p11));
assertTrue(p6.equals(p11));
assertTrue(!p3.equals(p));
assertTrue(!p3.equals(p7));
assertTrue(!p3.equals(p8));
assertTrue(!p3.equals(p9));
assertTrue(!p4.equals(p3));
assertTrue(!p5.equals(p4));
assertTrue(!p5.equals(p));
assertTrue(!p5.equals(p6));
assertTrue(!p5.equals(p7));
assertTrue(!p5.equals(p8));
assertTrue(!p5.equals(p9));
assertTrue(!p3.equals(p5));
assertTrue(!p3.equals(p4));
assertTrue(!p4.equals(p5));
assertTrue(!p4.equals(p3));
assertTrue(!p6.equals(p4));
assertTrue(!p4.equals(p6));
assertTrue("A".equals(p.getKey()));
assertTrue(Integer.valueOf(1).equals(p.getValue()));
assertTrue(p.setValue(2).equals(1));
assertTrue(Integer.valueOf(2).equals(p.getValue()));
assertTrue(!p.equals(null));
assertTrue(!p.equals(new Object()));
assertTrue(p.equals(new Map.Entry<String,Integer>() {
@Override public String getKey() { return "A"; }
@Override public Integer getValue() { return 2; }
@Override public Integer setValue(final Integer value) { return 2; }
}));
assertTrue(!p.equals(new Map.Entry<String,Integer>() {
@Override public String getKey() { return "B"; }
@Override public Integer getValue() { return 2; }
@Override public Integer setValue(final Integer value) { return 2; }
}));
assertTrue(!p.equals(new Map.Entry<String,Integer>() {
@Override public String getKey() { return "A"; }
@Override public Integer getValue() { return 1; }
@Override public Integer setValue(final Integer value) { return 1; }
}));
final HashSet<Map.Entry<String,Integer>> eSet = new HashSet<>();
assertTrue(!eSet.contains(p));
eSet.add(p);
assertTrue(eSet.contains(p));
assertTrue(!eSet.contains(p2));
assertTrue(!p2.equals(p));
eSet.add(p3);
eSet.add(p4);
eSet.add(p5);
assertTrue(eSet.contains(p3));
assertTrue(eSet.contains(p4));
assertTrue(eSet.contains(p5));
}
}