package nl.tudelft.simulation.immutablecollections; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; 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 TestImmutableHashMap { @Test public final void testHashMap() { Map isMap = new HashMap<>(); for (int i=1; i<=10; i++) isMap.put(i, 100 * i); Map map = new HashMap(isMap); testIntMap(map, new ImmutableHashMap(map, Immutable.WRAP), Immutable.WRAP); map = new HashMap(isMap); testIntMap(map, new ImmutableHashMap(map, Immutable.COPY), Immutable.COPY); map = new HashMap(isMap); testIntMap(map, new ImmutableHashMap(map), Immutable.COPY); map = new HashMap(isMap); ImmutableHashMap ihs = new ImmutableHashMap(map); testIntMap(map, new ImmutableHashMap(ihs), Immutable.COPY); } private void testIntMap(final Map map, final ImmutableMap imMap, final Immutable copyOrWrap) { Assert.assertTrue(map.size() == 10); Assert.assertTrue(imMap.size() == 10); for (int i=0; i<10; i++) Assert.assertTrue(imMap.containsKey(i+1)); for (int i=0; i<10; i++) Assert.assertTrue(imMap.containsValue(100 * (i+1))); Assert.assertFalse(imMap.isEmpty()); Assert.assertFalse(imMap.containsKey(15)); Assert.assertFalse(imMap.containsValue(1500)); Assert.assertTrue(imMap.keySet().size() == 10); Assert.assertTrue(imMap.values().size() == 10); if (copyOrWrap == Immutable.COPY) { Assert.assertTrue(imMap.isCopy()); Assert.assertTrue(imMap.toMap().equals(map)); Assert.assertFalse(imMap.toMap() == map); } else { Assert.assertTrue(imMap.isWrap()); Assert.assertTrue(imMap.toMap().equals(map)); Assert.assertFalse(imMap.toMap() == map); // this WRAP method returns a NEW list } Map to = imMap.toMap(); Assert.assertTrue(map.equals(to)); // modify the underlying data structure map.put(11, 1100); if (copyOrWrap == Immutable.COPY) Assert.assertTrue(imMap.size() == 10); else Assert.assertTrue(imMap.size() == 11); } }