package nl.tudelft.simulation.immutablecollections; import java.util.Vector; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Vector; 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 TestImmutableVector { @Test public final void testVector() { Vector intVector = new Vector(Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})); Vector vector = new Vector(intVector); testIntVector(vector, new ImmutableVector(vector, Immutable.WRAP), Immutable.WRAP); vector = new Vector(intVector); testIntVector(vector, new ImmutableVector(vector, Immutable.COPY), Immutable.COPY); vector = new Vector(intVector); testIntVector(vector, new ImmutableVector(vector), Immutable.COPY); vector = new Vector(intVector); ImmutableVector ial = new ImmutableVector(vector); testIntVector(vector, new ImmutableVector(ial), Immutable.COPY); vector = new Vector(intVector); Set intSet = new HashSet<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})); testIntVector(vector, new ImmutableVector(intSet), Immutable.COPY); } private void testIntVector(final Vector vector, final ImmutableVector imVector, final Immutable copyOrWrap) { Assert.assertTrue(vector.size() == 10); Assert.assertTrue(imVector.size() == 10); for (int i = 0; i < 10; i++) Assert.assertTrue(imVector.get(i) == vector.get(i)); Assert.assertFalse(imVector.isEmpty()); Assert.assertTrue(imVector.contains(5)); Assert.assertFalse(imVector.contains(15)); if (copyOrWrap == Immutable.COPY) { Assert.assertTrue(imVector.isCopy()); Assert.assertTrue(imVector.toList().equals(vector)); Assert.assertFalse(imVector.toList() == vector); } else { Assert.assertTrue(imVector.isWrap()); Assert.assertTrue(imVector.toList().equals(vector)); Assert.assertFalse(imVector.toList() == vector); // this WRAP method returns a NEW list } Vector to = imVector.toVector(); Assert.assertTrue(vector.equals(to)); Integer[] arr = (Integer[]) imVector.toArray(new Integer[]{}); Integer[] sar = (Integer[]) vector.toArray(new Integer[]{}); Assert.assertArrayEquals(arr, sar); // modify the underlying data structure vector.add(11); if (copyOrWrap == Immutable.COPY) Assert.assertTrue(imVector.size() == 10); else Assert.assertTrue(imVector.size() == 11); } }