1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.collections4;
19
20 import java.util.Collections;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.function.Supplier;
24
25 import junit.framework.Test;
26 import junit.framework.TestCase;
27 import junit.framework.TestSuite;
28
29 import org.apache.commons.collections4.list.TreeList;
30 import org.apache.commons.collections4.map.HashedMap;
31 import org.apache.commons.collections4.map.LRUMap;
32 import org.apache.commons.collections4.map.LinkedMap;
33 import org.apache.commons.collections4.map.ReferenceMap;
34
35 import com.google.common.collect.testing.ListTestSuiteBuilder;
36 import com.google.common.collect.testing.MapTestSuiteBuilder;
37 import com.google.common.collect.testing.TestStringListGenerator;
38 import com.google.common.collect.testing.TestStringMapGenerator;
39 import com.google.common.collect.testing.features.CollectionFeature;
40 import com.google.common.collect.testing.features.CollectionSize;
41 import com.google.common.collect.testing.features.Feature;
42 import com.google.common.collect.testing.features.ListFeature;
43 import com.google.common.collect.testing.features.MapFeature;
44
45
46
47
48
49
50
51
52
53 public final class GuavaTestlibTest extends TestCase {
54
55 public static Test suite() {
56 final TestSuite test = new TestSuite();
57
58 test.addTest(suiteMap("HashedMap", HashedMap::new));
59 test.addTest(suiteMap("LinkedMap", LinkedMap::new));
60 test.addTest(suiteMap("LRUMap", LRUMap::new));
61 test.addTest(suiteMap("ReferenceMap", ReferenceMap::new));
62
63 test.addTest(suiteList("TreeList", TreeList::new));
64
65
66
67
68
69 return test;
70 }
71
72
73
74
75
76
77
78
79 private static Test suiteList(final String name, final Supplier<List<String>> factory, final Feature<?>... features) {
80 final ListTestSuiteBuilder<String> suite = ListTestSuiteBuilder.using(new TestStringListGenerator() {
81 @Override
82 protected List<String> create(final String[] elements) {
83 final List<String> list = factory.get();
84 Collections.addAll(list, elements);
85 return list;
86 }
87 })
88 .named(name)
89 .withFeatures(
90 CollectionSize.ANY,
91 ListFeature.GENERAL_PURPOSE,
92 ListFeature.REMOVE_OPERATIONS,
93 CollectionFeature.ALLOWS_NULL_VALUES,
94 CollectionFeature.DESCENDING_VIEW,
95 CollectionFeature.SUBSET_VIEW);
96 suite.withFeatures(features);
97 return suite.createTestSuite();
98 }
99
100
101
102
103
104
105
106 private static Test suiteMap(final String name, final Supplier<Map<String, String>> factory) {
107 return MapTestSuiteBuilder.using(new TestStringMapGenerator() {
108 @Override
109 protected Map<String, String> create(final Map.Entry<String, String>[] entries) {
110 final Map<String, String> map = factory.get();
111 for (final Map.Entry<String, String> entry : entries) {
112 map.put(entry.getKey(), entry.getValue());
113 }
114 return map;
115 }
116 })
117 .named(name)
118 .withFeatures(
119 CollectionSize.ANY, MapFeature.GENERAL_PURPOSE,
120 MapFeature.ALLOWS_ANY_NULL_QUERIES, CollectionFeature.SUPPORTS_ITERATOR_REMOVE)
121 .createTestSuite();
122 }
123 }