/* * Copyright 2014 Goldman Sachs. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gs.collections.impl.tuple; import java.util.Map; import com.gs.collections.api.block.function.Function; import com.gs.collections.api.map.MutableMap; import com.gs.collections.api.tuple.Pair; import com.gs.collections.api.tuple.Twin; import com.gs.collections.impl.map.mutable.UnifiedMap; import com.gs.collections.impl.test.Verify; import org.junit.Assert; import org.junit.Test; public class TuplesTest { @Test public void pairFrom() { Pair<String, String> pair = Tuples.pair("1", "2"); Map.Entry<String, String> entry = pair.toEntry(); Pair<String, String> pair2 = Tuples.pairFrom(entry); Assert.assertEquals(pair, pair2); } @Test public void pair() { Pair<String, String> pair = Tuples.pair("1", "2"); Assert.assertEquals("1", pair.getOne()); Assert.assertEquals("2", pair.getTwo()); } @Test public void twin() { Twin<String> twin = Tuples.twin("1", "2"); Assert.assertEquals("1", twin.getOne()); Assert.assertEquals("2", twin.getTwo()); } @Test public void equalsHashCode() { Twin<String> pair1 = Tuples.twin("1", "1"); Pair<String, String> pair1a = Tuples.pair("1", "1"); Pair<String, String> pair2 = Tuples.pair("2", "2"); Verify.assertEqualsAndHashCode(pair1, pair1); Verify.assertEqualsAndHashCode(pair1, pair1a); Assert.assertNotEquals(pair1, pair2); Assert.assertNotEquals(pair1, new Object()); } @Test public void putToMap() { Pair<String, Integer> pair = Tuples.pair("1", 2); MutableMap<String, Integer> map = UnifiedMap.newMap(); pair.put(map); Verify.assertContainsAllKeyValues(map, "1", 2); Verify.assertSize(1, map); } @Test public void testToString() { Pair<String, String> pair1 = Tuples.pair("1", "1"); Assert.assertEquals("1:1", pair1.toString()); } @Test public void pairFunctions() { Integer two = 2; Pair<String, Integer> pair = Tuples.pair("One", two); Assert.assertEquals("One", ((Function<Pair<String, ?>, String>) Pair::getOne).valueOf(pair)); Assert.assertSame(two, ((Function<Pair<?, Integer>, Integer>) Pair::getTwo).valueOf(pair)); } @Test public void swap() { Pair<String, Integer> pair = Tuples.pair("One", 1); Pair<Integer, String> swappedPair = pair.swap(); Pair<Integer, String> expectedPair = Tuples.pair(1, "One"); Assert.assertEquals(Integer.valueOf(1), swappedPair.getOne()); Assert.assertEquals("One", swappedPair.getTwo()); Assert.assertEquals(expectedPair, swappedPair); Twin<String> twin = Tuples.twin("One", "1"); Twin<String> swappedTwin = twin.swap(); Twin<String> expectedTwin = Tuples.twin("1", "One"); Assert.assertEquals("1", swappedTwin.getOne()); Assert.assertEquals("One", swappedTwin.getTwo()); Assert.assertEquals(expectedTwin, swappedTwin); } }