1+ package com .bugsnag .util ;
2+
3+ import static org .junit .Assert .assertEquals ;
4+ import static org .junit .Assert .assertFalse ;
5+ import static org .junit .Assert .assertTrue ;
6+
7+ import org .junit .Before ;
8+ import org .junit .Test ;
9+
10+ import java .util .Collection ;
11+ import java .util .Collections ;
12+ import java .util .HashMap ;
13+ import java .util .Map ;
14+ import java .util .Set ;
15+
16+ public class FilteredMapTest {
17+
18+ private static final String KEY_UNFILTERED = "unfiltered" ;
19+ private static final String KEY_FILTERED = "auth" ;
20+ private static final String KEY_NESTED = "nested" ;
21+ private static final String VAL_UNFILTERED = "Foo" ;
22+ private static final String VAL_FILTERED = "Bar" ;
23+ private static final String PLACEHOLDER_FILTERED = "[FILTERED]" ;
24+
25+ private Map <String , Object > filteredMap ;
26+
27+ /**
28+ * Creates a map with filtered, unfiltered, and nested values
29+ * @throws Exception an exception
30+ */
31+ @ Before
32+ public void setUp () throws Exception {
33+ HashMap <String , Object > map = new HashMap <String , Object >();
34+ map .put (KEY_UNFILTERED , VAL_UNFILTERED );
35+ map .put (KEY_FILTERED , VAL_FILTERED );
36+
37+ HashMap <String , Object > nestedMap = new HashMap <String , Object >();
38+ nestedMap .put (KEY_UNFILTERED , VAL_UNFILTERED );
39+ nestedMap .put (KEY_FILTERED , VAL_FILTERED );
40+ map .put (KEY_NESTED , nestedMap );
41+
42+ this .filteredMap = new FilteredMap (map , Collections .singleton (KEY_FILTERED ));
43+ }
44+
45+ @ Test
46+ public void testSize () {
47+ assertEquals (3 , filteredMap .size ());
48+ }
49+
50+ @ Test
51+ public void testIsEmpty () throws Exception {
52+ assertFalse (filteredMap .isEmpty ());
53+ Map <String , Object > map = Collections .emptyMap ();
54+ FilteredMap emptyMap = new FilteredMap (map , Collections .<String >emptyList ());
55+ assertTrue (emptyMap .isEmpty ());
56+ }
57+
58+ @ Test
59+ public void testClear () throws Exception {
60+ assertEquals (3 , filteredMap .size ());
61+ filteredMap .clear ();
62+ assertTrue (filteredMap .isEmpty ());
63+ }
64+
65+ @ Test
66+ public void testContainsKey () throws Exception {
67+ assertTrue (filteredMap .containsKey (KEY_FILTERED ));
68+ assertTrue (filteredMap .containsKey (KEY_UNFILTERED ));
69+ assertTrue (filteredMap .containsKey (KEY_NESTED ));
70+ assertFalse (filteredMap .containsKey ("fake" ));
71+ }
72+
73+ @ Test
74+ public void testRemove () throws Exception {
75+ HashMap <String , Object > map = new HashMap <String , Object >();
76+ map .put (KEY_UNFILTERED , VAL_UNFILTERED );
77+ map .put (KEY_FILTERED , VAL_FILTERED );
78+
79+ HashMap <String , Object > emptyMap = new HashMap <String , Object >();
80+ Set <String > filters = Collections .singleton (KEY_FILTERED );
81+ Map <String , Object > removeMap = new FilteredMap (emptyMap , filters );
82+ removeMap .putAll (map );
83+
84+ assertEquals (2 , removeMap .size ());
85+ removeMap .remove (KEY_FILTERED );
86+ assertEquals (1 , removeMap .size ());
87+ removeMap .remove (KEY_UNFILTERED );
88+ assertEquals (0 , removeMap .size ());
89+ }
90+
91+ @ Test
92+ public void testGet () throws Exception {
93+ assertEquals (PLACEHOLDER_FILTERED , filteredMap .get (KEY_FILTERED ));
94+ assertEquals (VAL_UNFILTERED , filteredMap .get (KEY_UNFILTERED ));
95+
96+ Object actual = filteredMap .get (KEY_NESTED );
97+ assertTrue (actual instanceof FilteredMap );
98+
99+ Map <String , Object > nestedMap = (Map <String , Object >) actual ;
100+ assertEquals (VAL_UNFILTERED , nestedMap .get (KEY_UNFILTERED ));
101+ assertEquals (PLACEHOLDER_FILTERED , nestedMap .get (KEY_FILTERED ));
102+ }
103+
104+ @ Test
105+ public void testKeySet () throws Exception {
106+ Set <String > keySet = filteredMap .keySet ();
107+ assertEquals (3 , keySet .size ());
108+ assertTrue (keySet .contains (KEY_FILTERED ));
109+ assertTrue (keySet .contains (KEY_UNFILTERED ));
110+ assertTrue (keySet .contains (KEY_NESTED ));
111+ }
112+
113+ @ Test
114+ public void testValues () throws Exception {
115+ Collection <Object > values = filteredMap .values ();
116+ assertEquals (3 , values .size ());
117+ assertTrue (values .contains (VAL_UNFILTERED ));
118+ assertTrue (values .contains (PLACEHOLDER_FILTERED ));
119+
120+ values .remove (PLACEHOLDER_FILTERED );
121+ values .remove (VAL_UNFILTERED );
122+
123+ Object nestedObj = values .toArray (new Object [1 ])[0 ];
124+ assertTrue (nestedObj instanceof FilteredMap );
125+ Map <String , Object > nestedMap = (Map <String , Object >) nestedObj ;
126+ values = nestedMap .values ();
127+
128+ assertEquals (2 , values .size ());
129+ assertTrue (values .contains (VAL_UNFILTERED ));
130+ assertTrue (values .contains (PLACEHOLDER_FILTERED ));
131+ }
132+
133+ @ Test
134+ public void testEntrySet () throws Exception {
135+ Set <Map .Entry <String , Object >> entries = filteredMap .entrySet ();
136+ assertEquals (3 , entries .size ());
137+
138+ int expectedCount = 0 ;
139+
140+ for (Map .Entry <String , Object > entry : entries ) {
141+ String key = entry .getKey ();
142+
143+ if (key .equals (KEY_FILTERED )) {
144+ expectedCount ++;
145+ assertEquals (PLACEHOLDER_FILTERED , entry .getValue ());
146+
147+ } else if (key .equals (KEY_UNFILTERED )) {
148+ expectedCount ++;
149+ assertEquals (VAL_UNFILTERED , entry .getValue ());
150+
151+ } else if (key .equals (KEY_NESTED )) {
152+ expectedCount ++;
153+ Object value = entry .getValue ();
154+ assertTrue (value instanceof FilteredMap );
155+ }
156+ }
157+ assertEquals (3 , expectedCount );
158+ }
159+
160+ }
0 commit comments