< prev index next >
test/jdk/java/util/Collection/SetFactories.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
*** 38,47 ****
--- 38,50 ----
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
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
*** 273,288 ****
@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);
}
}
}
--- 276,340 ----
@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);
}
}
+
+ Set<Integer> genSet() {
+ return new HashSet<>(Arrays.asList(1, 2, 3));
+ }
+
+ @Test
+ public void copyOfResultsEqual() {
+ Set<Integer> orig = genSet();
+ Set<Integer> copy = Set.copyOf(orig);
+
+ assertEquals(orig, copy);
+ assertEquals(copy, orig);
+ }
+
+ @Test
+ public void copyOfModifiedUnequal() {
+ Set<Integer> orig = genSet();
+ Set<Integer> copy = Set.copyOf(orig);
+ orig.add(4);
+
+ assertNotEquals(orig, copy);
+ assertNotEquals(copy, orig);
+ }
+
+ @Test
+ public void copyOfIdentity() {
+ Set<Integer> orig = genSet();
+ Set<Integer> copy1 = Set.copyOf(orig);
+ Set<Integer> copy2 = Set.copyOf(copy1);
+
+ assertNotSame(orig, copy1);
+ assertSame(copy1, copy2);
+ }
+
+ @Test(expectedExceptions=NullPointerException.class)
+ public void copyOfRejectsNullCollection() {
+ Set<Integer> set = Set.copyOf(null);
+ }
+
+ @Test(expectedExceptions=NullPointerException.class)
+ public void copyOfRejectsNullElements() {
+ Set<Integer> set = Set.copyOf(Arrays.asList(1, null, 3));
+ }
+
+ @Test
+ public void copyOfAcceptsDuplicates() {
+ Set<Integer> set = Set.copyOf(Arrays.asList(1, 1, 2, 3, 3, 3));
+ assertEquals(set, Set.of(1, 2, 3));
+ }
}
< prev index next >