1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.bag;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import org.apache.commons.collections4.Bag;
24 import org.apache.commons.collections4.Transformer;
25 import org.apache.commons.collections4.collection.TransformedCollectionTest;
26 import org.junit.jupiter.api.Test;
27
28
29
30
31
32 public class TransformedBagTest<T> extends AbstractBagTest<T> {
33
34 @Override
35 public String getCompatibilityVersion() {
36 return "4";
37 }
38
39 @Override
40 protected int getIterationBehaviour() {
41 return UNORDERED;
42 }
43
44 @Override
45 @SuppressWarnings("unchecked")
46 public Bag<T> makeObject() {
47 return TransformedBag.transformingBag(new HashBag<>(),
48 (Transformer<T, T>) TransformedCollectionTest.NOOP_TRANSFORMER);
49 }
50
51 @Test
52 @SuppressWarnings("unchecked")
53 public void testTransformedBag() {
54
55 final Bag<T> bag = TransformedBag.transformingBag(new HashBag<>(),
56 (Transformer<T, T>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER);
57 assertTrue(bag.isEmpty());
58 final Object[] els = {"1", "3", "5", "7", "2", "4", "6"};
59 for (int i = 0; i < els.length; i++) {
60 bag.add((T) els[i]);
61 assertEquals(i + 1, bag.size());
62 assertTrue(bag.contains(Integer.valueOf((String) els[i])));
63 assertFalse(bag.contains(els[i]));
64 }
65
66 assertFalse(bag.remove(els[0]));
67 assertTrue(bag.remove(Integer.valueOf((String) els[0])));
68 }
69
70 @Test
71 @SuppressWarnings("unchecked")
72 public void testTransformedBag_decorateTransform() {
73 final Bag<T> originalBag = new HashBag<>();
74 final Object[] els = {"1", "3", "5", "7", "2", "4", "6"};
75 for (final Object el : els) {
76 originalBag.add((T) el);
77 }
78 final Bag<T> bag = TransformedBag.transformedBag(originalBag,
79 (Transformer<T, T>) TransformedCollectionTest.STRING_TO_INTEGER_TRANSFORMER);
80 assertEquals(els.length, bag.size());
81 for (final Object el : els) {
82 assertTrue(bag.contains(Integer.valueOf((String) el)));
83 assertFalse(bag.contains(el));
84 }
85
86 assertFalse(bag.remove(els[0]));
87 assertTrue(bag.remove(Integer.valueOf((String) els[0])));
88 }
89
90
91
92
93
94
95
96
97 }