1 package org.djutils.immutablecollections;
2
3 import java.util.Arrays;
4 import java.util.HashSet;
5 import java.util.List;
6 import java.util.Set;
7
8 import org.junit.Assert;
9 import org.junit.Test;
10
11
12
13
14
15
16
17
18
19
20
21 public class TestImmutableHashSet
22 {
23
24
25
26
27 @Test
28 public final void testHashSet()
29 {
30 Set<Integer> intSet = new HashSet<>(Arrays.asList(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}));
31 Set<Integer> set = new HashSet<Integer>(intSet);
32 testIntSet(set, new ImmutableHashSet<Integer>(set, Immutable.WRAP), Immutable.WRAP);
33 set = new HashSet<Integer>(intSet);
34 testIntSet(set, new ImmutableHashSet<Integer>(set, Immutable.COPY), Immutable.COPY);
35 set = new HashSet<Integer>(intSet);
36 testIntSet(set, new ImmutableHashSet<Integer>(set), Immutable.COPY);
37 set = new HashSet<Integer>(intSet);
38 ImmutableHashSet<Integer> ihs = new ImmutableHashSet<Integer>(set);
39 testIntSet(set, new ImmutableHashSet<Integer>(ihs), Immutable.COPY);
40
41 set = new HashSet<Integer>(intSet);
42 List<Integer> il = Arrays.asList(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
43 testIntSet(set, new ImmutableHashSet<Integer>(il), Immutable.COPY);
44 }
45
46
47
48
49
50
51
52 private void testIntSet(final Set<Integer> set, final ImmutableSet<Integer> imSet, final Immutable copyOrWrap)
53 {
54 Assert.assertTrue(set.size() == 10);
55 Assert.assertTrue(imSet.size() == 10);
56 for (int i = 0; i < 10; i++)
57 {
58 Assert.assertTrue(imSet.contains(i + 1));
59 }
60 Assert.assertFalse(imSet.isEmpty());
61 Assert.assertFalse(imSet.contains(15));
62 if (copyOrWrap == Immutable.COPY)
63 {
64 Assert.assertTrue(imSet.isCopy());
65 Assert.assertTrue(imSet.toSet().equals(set));
66 Assert.assertFalse(imSet.toSet() == set);
67 }
68 else
69 {
70 Assert.assertTrue(imSet.isWrap());
71 Assert.assertTrue(imSet.toSet().equals(set));
72 Assert.assertFalse(imSet.toSet() == set);
73 }
74
75 Set<Integer> to = imSet.toSet();
76 Assert.assertTrue(set.equals(to));
77
78 Integer[] arr = imSet.toArray(new Integer[] {});
79 Integer[] sar = set.toArray(new Integer[] {});
80 Assert.assertArrayEquals(arr, sar);
81
82
83 set.add(11);
84 if (copyOrWrap == Immutable.COPY)
85 {
86 Assert.assertTrue(imSet.size() == 10);
87 }
88 else
89 {
90 Assert.assertTrue(imSet.size() == 11);
91 }
92 }
93 }