package games.strategy.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class IntegerMapTest {
private final Object v1 = new Object();
private final Object v2 = new Object();
private final Object v3 = new Object();
@Test
public void testAdd() {
final IntegerMap<Object> map = new IntegerMap<>();
map.add(v1, 5);
assertEquals(map.getInt(v1), 5);
map.add(v1, 10);
assertEquals(map.getInt(v1), 15);
map.add(v1, -20);
assertEquals(map.getInt(v1), -5);
map.add(v1, 5);
assertEquals(map.getInt(v1), 0);
}
@Test
public void testPositive() {
IntegerMap<Object> map = new IntegerMap<>();
map.add(v1, 5);
map.add(v2, 3);
map.add(v3, 0);
assertTrue(map.isPositive());
map = new IntegerMap<>();
map.add(v1, 5);
map.add(v2, -3);
map.add(v3, 1);
assertTrue(!map.isPositive());
}
@Test
public void testAddMap() {
final IntegerMap<Object> map1 = new IntegerMap<>();
map1.add(v1, 5);
map1.add(v2, 3);
final IntegerMap<Object> map2 = new IntegerMap<>();
map2.add(v1, 5);
map2.add(v2, -3);
map2.add(v3, 1);
map1.add(map2);
assertEquals(10, map1.getInt(v1));
assertEquals(0, map1.getInt(v2));
assertEquals(1, map1.getInt(v3));
}
@Test
public void testGreaterThan() {
final IntegerMap<Object> map1 = new IntegerMap<>();
map1.add(v1, 5);
map1.add(v2, 3);
final IntegerMap<Object> map2 = new IntegerMap<>();
map2.add(v1, 5);
map2.add(v2, 3);
map2.add(v3, 1);
assertTrue(!map1.greaterThanOrEqualTo(map2));
assertTrue(map2.greaterThanOrEqualTo(map2));
map1.add(v3, 3);
assertTrue(map1.greaterThanOrEqualTo(map2));
}
}