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