package org.test4j.hamcrest.iassert.object.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.test4j.hamcrest.iassert.common.impl.AllAssert; import org.test4j.hamcrest.iassert.object.intf.IMapAssert; import org.test4j.hamcrest.matcher.array.MapMatcher; import org.test4j.hamcrest.matcher.array.MapMatcher.MapMatcherType; import ext.test4j.hamcrest.Matcher; import ext.test4j.hamcrest.collection.IsMapContaining; import ext.test4j.hamcrest.core.AllOf; @SuppressWarnings({ "rawtypes" }) public class MapAssert extends AllAssert<Map<?, ?>, IMapAssert> implements IMapAssert { public MapAssert() { super(IMapAssert.class); this.valueClaz = Map.class; } public MapAssert(Map<?, ?> map) { super(map, IMapAssert.class); this.valueClaz = Map.class; } public IMapAssert hasKeys(Object key, Object... keys) { MapMatcher matcher1 = new MapMatcher(key, MapMatcherType.KEY); if (keys == null || keys.length == 0) { return assertThat(matcher1); } List<Matcher> list = new ArrayList<Matcher>(); list.add(matcher1); for (Object item : keys) { list.add(new MapMatcher(item, MapMatcherType.KEY)); } return assertThat(AllOf.allOf(list)); } public IMapAssert hasValues(Object value, Object... values) { MapMatcher matcher1 = new MapMatcher(value, MapMatcherType.VALUE); if (values == null || values.length == 0) { return assertThat(matcher1); } List<Matcher> list = new ArrayList<Matcher>(); list.add(matcher1); for (Object item : values) { list.add(new MapMatcher(item, MapMatcherType.VALUE)); } return assertThat(AllOf.allOf(list)); } public IMapAssert hasEntry(Object key, Object value, Object... objects) { Matcher<?> matcher = IsMapContaining.hasEntry(key, value); if (objects == null) { return assertThat(matcher); } int size = objects.length; List<Matcher> list = new ArrayList<Matcher>(); list.add(matcher); for (int index = 0; index < size / 2; index++) { Matcher<?> matcher2 = IsMapContaining.hasEntry(objects[index * 2], objects[index * 2 + 1]); list.add(matcher2); } return assertThat(AllOf.allOf(list)); } public IMapAssert hasEntry(Entry<?, ?> entry, Entry<?, ?>... entries) { Matcher<?> matcher = IsMapContaining.hasEntry(entry.getKey(), entry.getValue()); if (entries == null) { return assertThat(matcher); } List<Matcher> list = new ArrayList<Matcher>(); list.add(matcher); for (Map.Entry<?, ?> item : entries) { Matcher<?> matcher2 = IsMapContaining.hasEntry(item.getKey(), item.getValue()); list.add(matcher2); } return assertThat(AllOf.allOf(list)); } }