blob: 13f067c8725cd516977fa3f39966e89c81c371d0 [file] [log] [blame]
package org.hamcrest.collection;
import org.hamcrest.AbstractMatcherTest;
import org.hamcrest.Matcher;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsMapContaining.hasKey;
public class IsMapContainingKeyTest extends AbstractMatcherTest {
@Override
protected Matcher<?> createMatcher() {
return hasKey("foo");
}
public void testMatchesSingletonMapContainingKey() {
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
assertMatches("Matches single key", hasKey("a"), map);
}
public void testMatchesMapContainingKey() {
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
assertMatches("Matches a", hasKey("a"), map);
assertMatches("Matches c", hasKey("c"), map);
}
// No longer compiles
// public void testMatchesMapContainingKeyWithNoGenerics() {
// Map map = new HashMap();
// map.put("a", 1);
// map.put("b", 2);
// map.put("c", 3);
//
// assertMatches("Matches a", hasKey("a"), map);
// assertMatches("Matches c", hasKey("c"), map);
// }
public void testMatchesMapContainingKeyWithIntegerKeys() throws Exception {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "A");
map.put(2, "B");
assertThat(map, hasKey(1));
}
public void testMatchesMapContainingKeyWithNumberKeys() throws Exception {
Map<Number, String> map = new HashMap<Number, String>();
map.put(1, "A");
map.put(2, "B");
assertThat(map, hasKey((Number)1));
// TODO: work out the correct sprinkling of wildcards to get this to work!
// assertThat(map, hasKey(1));
}
public void testHasReadableDescription() {
assertDescription("map containing [\"a\"->ANYTHING]", hasKey("a"));
}
public void testDoesNotMatchEmptyMap() {
assertMismatchDescription("map was []", hasKey("Foo"), new HashMap<String,Integer>());
}
public void testDoesNotMatchMapMissingKey() {
Map<String,Integer> map = new TreeMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
assertMismatchDescription("map was [<a=1>, <b=2>, <c=3>]", hasKey("d"), map);
}
}