Files
java-tutorials/java-collections-maps/src/test/java/com/baeldung/guava/GuavaBiMapUnitTest.java
T

120 lines
4.7 KiB
Java
Raw Normal View History

2017-01-16 02:15:46 +05:30
package com.baeldung.guava;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import com.google.common.collect.BiMap;
import com.google.common.collect.EnumHashBiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.ImmutableBiMap;
2017-05-15 18:35:14 +02:00
public class GuavaBiMapUnitTest {
2017-01-16 02:15:46 +05:30
@Test
public void whenQueryByValue_returnsKey() {
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
capitalCountryBiMap.put("New Delhi", "India");
capitalCountryBiMap.put("Washingon, D.C.", "USA");
capitalCountryBiMap.put("Moscow", "Russia");
2017-01-16 02:15:46 +05:30
final String countryCapitalName = capitalCountryBiMap.inverse().get("India");
2017-01-16 02:15:46 +05:30
assertEquals("New Delhi", countryCapitalName);
2017-01-16 02:15:46 +05:30
}
@Test
public void whenCreateBiMapFromExistingMap_returnsKey() {
final Map<String, String> capitalCountryMap = new HashMap<>();
capitalCountryMap.put("New Delhi", "India");
capitalCountryMap.put("Washingon, D.C.", "USA");
capitalCountryMap.put("Moscow", "Russia");
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create(capitalCountryMap);
2017-01-16 02:15:46 +05:30
final String countryCapitalName = capitalCountryBiMap.inverse().get("India");
2017-01-16 02:15:46 +05:30
assertEquals("New Delhi", countryCapitalName);
2017-01-16 02:15:46 +05:30
}
@Test
public void whenQueryByKey_returnsValue() {
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.put("New Delhi", "India");
capitalCountryBiMap.put("Washingon, D.C.", "USA");
capitalCountryBiMap.put("Moscow", "Russia");
2017-01-16 02:15:46 +05:30
assertEquals("USA", capitalCountryBiMap.get("Washingon, D.C."));
2017-01-16 02:15:46 +05:30
}
@Test(expected = IllegalArgumentException.class)
public void whenSameValueIsPresent_throwsException() {
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.put("New Delhi", "India");
capitalCountryBiMap.put("Washingon, D.C.", "USA");
capitalCountryBiMap.put("Moscow", "Russia");
capitalCountryBiMap.put("Trump", "USA");
2017-01-16 02:15:46 +05:30
}
@Test
public void givenSameValueIsPresent_whenForcePut_completesSuccessfully() {
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.put("New Delhi", "India");
capitalCountryBiMap.put("Washingon, D.C.", "USA");
capitalCountryBiMap.put("Moscow", "Russia");
capitalCountryBiMap.forcePut("Trump", "USA");
2017-01-16 02:15:46 +05:30
assertEquals("USA", capitalCountryBiMap.get("Trump"));
assertEquals("Trump", capitalCountryBiMap.inverse().get("USA"));
2017-01-16 02:15:46 +05:30
}
@Test
public void whenSameKeyIsPresent_replacesAlreadyPresent() {
final BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.put("New Delhi", "India");
capitalCountryBiMap.put("Washingon, D.C.", "USA");
capitalCountryBiMap.put("Moscow", "Russia");
capitalCountryBiMap.put("Washingon, D.C.", "HongKong");
2017-01-16 02:15:46 +05:30
assertEquals("HongKong", capitalCountryBiMap.get("Washingon, D.C."));
2017-01-16 02:15:46 +05:30
}
@Test
public void whenUsingImmutableBiMap_allowsPutSuccessfully() {
final BiMap<String, String> capitalCountryBiMap = new ImmutableBiMap.Builder<String, String>().put("New Delhi", "India").put("Washingon, D.C.", "USA").put("Moscow", "Russia").build();
2017-01-16 02:15:46 +05:30
assertEquals("USA", capitalCountryBiMap.get("Washingon, D.C."));
2017-01-16 02:15:46 +05:30
}
@Test(expected = UnsupportedOperationException.class)
public void whenUsingImmutableBiMap_doesntAllowRemove() {
final BiMap<String, String> capitalCountryBiMap = new ImmutableBiMap.Builder<String, String>().put("New Delhi", "India").put("Washingon, D.C.", "USA").put("Moscow", "Russia").build();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.remove("New Delhi");
2017-01-16 02:15:46 +05:30
}
@Test(expected = UnsupportedOperationException.class)
public void whenUsingImmutableBiMap_doesntAllowPut() {
final BiMap<String, String> capitalCountryBiMap = new ImmutableBiMap.Builder<String, String>().put("New Delhi", "India").put("Washingon, D.C.", "USA").put("Moscow", "Russia").build();
2017-01-16 02:15:46 +05:30
capitalCountryBiMap.put("New York", "USA");
2017-01-16 02:15:46 +05:30
}
private enum Operation {
ADD, SUBTRACT, MULTIPLY, DIVIDE
}
@Test
public void whenUsingEnumAsKeyInMap_replacesAlreadyPresent() {
2017-01-16 02:15:46 +05:30
final BiMap<Operation, String> operationStringBiMap = EnumHashBiMap.create(Operation.class);
operationStringBiMap.put(Operation.ADD, "Add");
operationStringBiMap.put(Operation.SUBTRACT, "Subtract");
operationStringBiMap.put(Operation.MULTIPLY, "Multiply");
operationStringBiMap.put(Operation.DIVIDE, "Divide");
assertEquals("Divide", operationStringBiMap.get(Operation.DIVIDE));
}
}