add test use ImmutablePair class with java.util.HashMap and java.util.TreeMap
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
index 260879a..a5b0d9d 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
@@ -26,6 +26,11 @@
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.TreeMap;
import org.junit.jupiter.api.Test;
@@ -136,4 +141,34 @@
assertEquals(origPair, deserializedPair);
assertEquals(origPair.hashCode(), deserializedPair.hashCode());
}
+
+ @Test
+ public void testUseAsKeyOfHashMap() {
+ HashMap<ImmutablePair<Object, Object>, String> map = new HashMap<>();
+ Object o1 = new Object();
+ Object o2 = new Object();
+ ImmutablePair<Object, Object> key1 = ImmutablePair.of(o1, o2);
+ String value1 = "a1";
+ map.put(key1, value1);
+ assertEquals(value1, map.get(key1));
+ assertEquals(value1, map.get(ImmutablePair.of(o1, o2)));
+ }
+
+ @Test
+ public void testUseAsKeyOfTreeMap() {
+ TreeMap<ImmutablePair<Integer, Integer>, String> map = new TreeMap<>();
+ map.put(ImmutablePair.of(1, 2), "12");
+ map.put(ImmutablePair.of(1, 1), "11");
+ map.put(ImmutablePair.of(0, 1), "01");
+ ArrayList<ImmutablePair<Integer, Integer>> expected = new ArrayList<>();
+ expected.add(ImmutablePair.of(0, 1));
+ expected.add(ImmutablePair.of(1, 1));
+ expected.add(ImmutablePair.of(1, 2));
+ Iterator<Entry<ImmutablePair<Integer, Integer>, String>> it = map.entrySet().iterator();
+ for(ImmutablePair<Integer, Integer> item : expected) {
+ Entry<ImmutablePair<Integer, Integer>, String> entry = it.next();
+ assertEquals(item, entry.getKey());
+ assertEquals(item.getLeft() + "" + item.getRight(), entry.getValue());
+ }
+ }
}
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
index 8f76000..fe73930 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
@@ -26,6 +26,11 @@
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.TreeMap;
+import java.util.Map.Entry;
import org.junit.jupiter.api.Test;
@@ -142,5 +147,36 @@
assertEquals(origTriple, deserializedTriple);
assertEquals(origTriple.hashCode(), deserializedTriple.hashCode());
}
+
+ @Test
+ public void testUseAsKeyOfHashMap() {
+ HashMap<ImmutableTriple<Object, Object, Object>, String> map = new HashMap<>();
+ Object o1 = new Object();
+ Object o2 = new Object();
+ Object o3 = new Object();
+ ImmutableTriple<Object, Object, Object> key1 = ImmutableTriple.of(o1, o2, o3);
+ String value1 = "a1";
+ map.put(key1, value1);
+ assertEquals(value1, map.get(key1));
+ assertEquals(value1, map.get(ImmutableTriple.of(o1, o2, o3)));
+ }
+
+ @Test
+ public void testUseAsKeyOfTreeMap() {
+ TreeMap<ImmutableTriple<Integer, Integer, Integer>, String> map = new TreeMap<>();
+ map.put(ImmutableTriple.of(0, 1, 2), "012");
+ map.put(ImmutableTriple.of(0, 1, 1), "011");
+ map.put(ImmutableTriple.of(0, 0, 1), "001");
+ ArrayList<ImmutableTriple<Integer, Integer, Integer>> expected = new ArrayList<>();
+ expected.add(ImmutableTriple.of(0, 0, 1));
+ expected.add(ImmutableTriple.of(0, 1, 1));
+ expected.add(ImmutableTriple.of(0, 1, 2));
+ Iterator<Entry<ImmutableTriple<Integer, Integer, Integer>, String>> it = map.entrySet().iterator();
+ for(ImmutableTriple<Integer, Integer, Integer> item : expected) {
+ Entry<ImmutableTriple<Integer, Integer, Integer>, String> entry = it.next();
+ assertEquals(item, entry.getKey());
+ assertEquals(item.getLeft() + "" + item.getMiddle() + "" + item.getRight(), entry.getValue());
+ }
+ }
}