package nl.tudelft.simulation.immutablecollections; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; 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 TestImmutableLinkedHashSet { @Test public final void testLinkedHashSet() { Set intSet = new LinkedHashSet<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})); Set set = new LinkedHashSet(intSet); testIntSet(set, new ImmutableLinkedHashSet(set, Immutable.WRAP), Immutable.WRAP); set = new LinkedHashSet(intSet); testIntSet(set, new ImmutableLinkedHashSet(set, Immutable.COPY), Immutable.COPY); set = new LinkedHashSet(intSet); testIntSet(set, new ImmutableLinkedHashSet(set), Immutable.COPY); set = new LinkedHashSet(intSet); ImmutableLinkedHashSet ihs = new ImmutableLinkedHashSet(set); testIntSet(set, new ImmutableLinkedHashSet(ihs), Immutable.COPY); set = new LinkedHashSet(intSet); List il = Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}); testIntSet(set, new ImmutableLinkedHashSet(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); } }