package nl.tudelft.simulation.immutablecollections; import java.util.HashSet; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.util.Set; import org.junit.Assert; import org.junit.Test; /** * TestImmutable.java.
*
* Copyright (c) 2003-2018 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights * reserved. See for project information * www.simulation.tudelft.nl. The source code and * binary code of this software is proprietary information of Delft University of Technology. * @author Alexander Verbraeck */ public class TestImmutableHashSet { @Test public final void testHashSet() { Set intSet = new HashSet<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})); Set set = new HashSet(intSet); testIntSet(set, new ImmutableHashSet(set, Immutable.WRAP), Immutable.WRAP); set = new HashSet(intSet); testIntSet(set, new ImmutableHashSet(set, Immutable.COPY), Immutable.COPY); set = new HashSet(intSet); testIntSet(set, new ImmutableHashSet(set), Immutable.COPY); set = new HashSet(intSet); ImmutableHashSet ihs = new ImmutableHashSet(set); testIntSet(set, new ImmutableHashSet(ihs), Immutable.COPY); set = new HashSet(intSet); List il = Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}); testIntSet(set, new ImmutableHashSet(il), Immutable.COPY); } private void testIntSet(final Set set, final ImmutableSet imSet, final Immutable copyOrWrap) { Assert.assertTrue(set.size() == 10); Assert.assertTrue(imSet.size() == 10); for (int i=0; i<10; i++) Assert.assertTrue(imSet.contains(i+1)); Assert.assertFalse(imSet.isEmpty()); Assert.assertFalse(imSet.contains(15)); if (copyOrWrap == Immutable.COPY) { Assert.assertTrue(imSet.isCopy()); Assert.assertTrue(imSet.toSet().equals(set)); Assert.assertFalse(imSet.toSet() == set); } else { Assert.assertTrue(imSet.isWrap()); Assert.assertTrue(imSet.toSet().equals(set)); Assert.assertFalse(imSet.toSet() == set); // this WRAP method returns a NEW list } Set to = imSet.toSet(); Assert.assertTrue(set.equals(to)); Integer[] arr = (Integer[]) imSet.toArray(new Integer[]{}); Integer[] sar = (Integer[]) set.toArray(new Integer[]{}); Assert.assertArrayEquals(arr, sar); // modify the underlying data structure set.add(11); if (copyOrWrap == Immutable.COPY) Assert.assertTrue(imSet.size() == 10); else Assert.assertTrue(imSet.size() == 11); } }