package org.javersion.util;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import com.google.common.collect.Maps;
public abstract class AbstractMutableMapTest extends AbstractCollectionTest {
@Test
public void Ascending_Keys() {
assertInsertAndDelete(emptyMap(), ascending(500));
}
@Test
public void Descending_Keys() {
assertInsertAndDelete(emptyMap(), descending(500));
}
@Test
public void Random_Keys() {
try {
assertInsertAndDelete(emptyMap(), randoms(500));
} catch (Exception e) {
throw new AssertionError(DESC, e);
}
}
protected void assertInsertAndDelete(MutableMap<Integer, Integer> map, List<Integer> ints) {
Map<Integer, Integer> refmap = Maps.newHashMap();
for (Integer kv : ints) {
assertThat(map.put(kv, kv), equalTo(refmap.put(kv, kv)));
assertMapProperties(map);
assertThat(map.put(kv, kv), equalTo(refmap.put(kv, kv)));
}
assertThat(map, equalTo(refmap));
for (Integer kv : ints) {
assertThat(map.remove(kv), equalTo(refmap.remove(kv)));
assertMapProperties(map);
}
assertThat(map.isEmpty(), equalTo(true));
assertThat(map, equalTo(refmap));
}
protected abstract MutableMap<Integer, Integer> emptyMap();
abstract void assertMapProperties(MutableMap<Integer, Integer> map);
}