< prev index next >

test/jdk/java/util/Map/MapFactories.java

Print this page
rev 47953 : 8177290: add copy factory methods for unmodifiable List, Set, Map
8184690: add Collectors for collecting into unmodifiable List, Set, and Map
Reviewed-by: alanb, briangoetz, dholmes, jrose, rriggs, scolebourne

*** 40,49 **** --- 40,52 ---- import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; + import static org.testng.Assert.assertNotEquals; + import static org.testng.Assert.assertNotSame; + import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; /* * @test
*** 68,77 **** --- 71,86 ---- } return result; } // for varargs Map.Entry methods + + @SuppressWarnings("unchecked") + Map.Entry<Integer,String>[] genEmptyEntryArray1() { + return (Map.Entry<Integer,String>[])new Map.Entry<?,?>[1]; + } + @SuppressWarnings("unchecked") Map.Entry<Integer,String>[] genEntries(int n) { return IntStream.range(0, n) .mapToObj(i -> Map.entry(i, valueFor(i))) .toArray(Map.Entry[]::new);
*** 320,352 **** Map<Integer, String> map = Map.of(0, "a", 1, "b", 2, "c", 3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8, "i", 9, null); } @Test(expectedExceptions=NullPointerException.class) ! public void nullKeyDisallowedN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); ! entries[0] = new AbstractMap.SimpleImmutableEntry(null, "a"); Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) ! public void nullValueDisallowedN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); ! entries[0] = new AbstractMap.SimpleImmutableEntry(0, null); Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) ! public void nullEntryDisallowedN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); entries[5] = null; Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) public void nullArrayDisallowed() { ! Map.ofEntries(null); } @Test(dataProvider="all") public void serialEquality(Map<Integer, String> act, Map<Integer, String> exp) { // assume that act.equals(exp) tested elsewhere --- 329,381 ---- Map<Integer, String> map = Map.of(0, "a", 1, "b", 2, "c", 3, "d", 4, "e", 5, "f", 6, "g", 7, "h", 8, "i", 9, null); } @Test(expectedExceptions=NullPointerException.class) ! public void nullKeyDisallowedVar1() { ! Map.Entry<Integer,String>[] entries = genEmptyEntryArray1(); ! entries[0] = new AbstractMap.SimpleImmutableEntry<>(null, "a"); ! Map<Integer, String> map = Map.ofEntries(entries); ! } ! ! @Test(expectedExceptions=NullPointerException.class) ! public void nullValueDisallowedVar1() { ! Map.Entry<Integer,String>[] entries = genEmptyEntryArray1(); ! entries[0] = new AbstractMap.SimpleImmutableEntry<>(0, null); ! Map<Integer, String> map = Map.ofEntries(entries); ! } ! ! @Test(expectedExceptions=NullPointerException.class) ! public void nullEntryDisallowedVar1() { ! Map.Entry<Integer,String>[] entries = genEmptyEntryArray1(); ! Map<Integer, String> map = Map.ofEntries(entries); ! } ! ! @Test(expectedExceptions=NullPointerException.class) ! public void nullKeyDisallowedVarN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); ! entries[0] = new AbstractMap.SimpleImmutableEntry<>(null, "a"); Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) ! public void nullValueDisallowedVarN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); ! entries[0] = new AbstractMap.SimpleImmutableEntry<>(0, null); Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) ! public void nullEntryDisallowedVarN() { Map.Entry<Integer,String>[] entries = genEntries(MAX_ENTRIES); entries[5] = null; Map<Integer, String> map = Map.ofEntries(entries); } @Test(expectedExceptions=NullPointerException.class) public void nullArrayDisallowed() { ! Map.ofEntries((Map.Entry<?,?>[])null); } @Test(dataProvider="all") public void serialEquality(Map<Integer, String> act, Map<Integer, String> exp) { // assume that act.equals(exp) tested elsewhere
*** 357,377 **** @SuppressWarnings("unchecked") static <T> T serialClone(T obj) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ! ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(obj); ! oos.close(); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); return (T) ois.readObject(); } catch (IOException | ClassNotFoundException e) { throw new AssertionError(e); } } // Map.entry() tests @Test(expectedExceptions=NullPointerException.class) public void entryWithNullKeyDisallowed() { Map.Entry<Integer,String> e = Map.entry(null, "x"); --- 386,462 ---- @SuppressWarnings("unchecked") static <T> T serialClone(T obj) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ! try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { oos.writeObject(obj); ! } ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); return (T) ois.readObject(); } catch (IOException | ClassNotFoundException e) { throw new AssertionError(e); } } + Map<Integer, String> genMap() { + Map<Integer, String> map = new HashMap<>(); + map.put(1, "a"); + map.put(2, "b"); + map.put(3, "c"); + return map; + } + + @Test + public void copyOfResultsEqual() { + Map<Integer, String> orig = genMap(); + Map<Integer, String> copy = Map.copyOf(orig); + + assertEquals(orig, copy); + assertEquals(copy, orig); + } + + @Test + public void copyOfModifiedUnequal() { + Map<Integer, String> orig = genMap(); + Map<Integer, String> copy = Map.copyOf(orig); + orig.put(4, "d"); + + assertNotEquals(orig, copy); + assertNotEquals(copy, orig); + } + + @Test + public void copyOfIdentity() { + Map<Integer, String> orig = genMap(); + Map<Integer, String> copy1 = Map.copyOf(orig); + Map<Integer, String> copy2 = Map.copyOf(copy1); + + assertNotSame(orig, copy1); + assertSame(copy1, copy2); + } + + @Test(expectedExceptions=NullPointerException.class) + public void copyOfRejectsNullMap() { + Map<Integer, String> map = Map.copyOf(null); + } + + @Test(expectedExceptions=NullPointerException.class) + public void copyOfRejectsNullKey() { + Map<Integer, String> map = genMap(); + map.put(null, "x"); + Map<Integer, String> copy = Map.copyOf(map); + } + + @Test(expectedExceptions=NullPointerException.class) + public void copyOfRejectsNullValue() { + Map<Integer, String> map = genMap(); + map.put(-1, null); + Map<Integer, String> copy = Map.copyOf(map); + } + // Map.entry() tests @Test(expectedExceptions=NullPointerException.class) public void entryWithNullKeyDisallowed() { Map.Entry<Integer,String> e = Map.entry(null, "x");
*** 384,394 **** @Test public void entryBasicTests() { Map.Entry<String,String> kvh1 = Map.entry("xyzzy", "plugh"); Map.Entry<String,String> kvh2 = Map.entry("foobar", "blurfl"); ! Map.Entry<String,String> sie = new AbstractMap.SimpleImmutableEntry("xyzzy", "plugh"); assertTrue(kvh1.equals(sie)); assertTrue(sie.equals(kvh1)); assertFalse(kvh2.equals(sie)); assertFalse(sie.equals(kvh2)); --- 469,479 ---- @Test public void entryBasicTests() { Map.Entry<String,String> kvh1 = Map.entry("xyzzy", "plugh"); Map.Entry<String,String> kvh2 = Map.entry("foobar", "blurfl"); ! Map.Entry<String,String> sie = new AbstractMap.SimpleImmutableEntry<>("xyzzy", "plugh"); assertTrue(kvh1.equals(sie)); assertTrue(sie.equals(kvh1)); assertFalse(kvh2.equals(sie)); assertFalse(sie.equals(kvh2));
*** 402,408 **** Map.Entry<Integer,Double> e1 = Map.entry(1, 2.0); Map.Entry<Float,Long> e2 = Map.entry(3.0f, 4L); Map<Number,Number> map = Map.ofEntries(e1, e2); assertEquals(map.size(), 2); } - } --- 487,492 ----
< prev index next >