package games.strategy.util; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsNull.nullValue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import java.util.Map; import org.hamcrest.core.IsNot; import org.junit.Test; import com.google.common.collect.Maps; public class TupleTest { Tuple<String, Integer> testObj = Tuple.of("hi", 123); @Test public void basicUsage() { assertThat(testObj.getFirst(), is("hi")); assertThat(testObj.getSecond(), is(123)); } @Test public void verifyEquality() { assertThat(testObj, is(testObj)); final Tuple<String, Integer> copyObj = Tuple.of(testObj.getFirst(), testObj.getSecond()); assertThat(testObj, is(copyObj)); assertThat(copyObj, is(testObj)); assertThat("check equals against null case", copyObj.equals(null), is(false)); } @Test public void verifyToString() { assertThat(testObj.toString(), containsString(testObj.getFirst())); assertThat(testObj.toString(), containsString(String.valueOf(testObj.getSecond()))); } @Test public void checkStoringNullCase() { final Tuple<String, String> nullTuple = Tuple.of((String) null, (String) null); assertThat(nullTuple.getFirst(), nullValue()); assertThat(nullTuple.getSecond(), nullValue()); assertThat(nullTuple, IsNot.not(Tuple.of("something else", (String) null))); } @Test public void checkUsingTupleAsMapKey() { final Map<Tuple<String, String>, String> map = Maps.newHashMap(); final Tuple<String, String> tuple = Tuple.of("This is a bad idea using tuples this much", "another value"); final String value = "some value"; assertFalse(map.containsKey(tuple)); map.put(tuple, value); assertTrue(map.containsKey(tuple)); assertThat(map.get(tuple), is(value)); } }