/* * 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.factory; import com.gs.collections.api.multimap.bag.ImmutableBagMultimap; import com.gs.collections.api.multimap.bag.MutableBagMultimap; import com.gs.collections.api.multimap.list.ImmutableListMultimap; import com.gs.collections.api.multimap.list.MutableListMultimap; import com.gs.collections.api.multimap.set.ImmutableSetMultimap; import com.gs.collections.api.multimap.set.MutableSetMultimap; import com.gs.collections.api.multimap.sortedset.ImmutableSortedSetMultimap; import com.gs.collections.api.multimap.sortedset.MutableSortedSetMultimap; import com.gs.collections.impl.multimap.bag.HashBagMultimap; import com.gs.collections.impl.multimap.list.FastListMultimap; import com.gs.collections.impl.multimap.set.UnifiedSetMultimap; import com.gs.collections.impl.multimap.set.sorted.TreeSortedSetMultimap; import com.gs.collections.impl.test.Verify; import com.gs.collections.impl.tuple.Tuples; import org.junit.Assert; import org.junit.Test; public class MultimapsTest { @Test public void immutableList() { ImmutableListMultimap<Integer, Integer> empty = Multimaps.immutable.list.with(); Assert.assertEquals(0, empty.size()); ImmutableListMultimap<Integer, Integer> one = Multimaps.immutable.list.with(1, 1); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1)), one); ImmutableListMultimap<Integer, Integer> two = Multimaps.immutable.list.with(1, 1, 2, 2); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); ImmutableListMultimap<Integer, Integer> three = Multimaps.immutable.list.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void immutableSet() { ImmutableSetMultimap<Integer, Integer> empty = Multimaps.immutable.set.with(); Assert.assertEquals(0, empty.size()); ImmutableSetMultimap<Integer, Integer> one = Multimaps.immutable.set.with(1, 1); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1)), one); ImmutableSetMultimap<Integer, Integer> two = Multimaps.immutable.set.with(1, 1, 2, 2); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); ImmutableSetMultimap<Integer, Integer> three = Multimaps.immutable.set.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void immutableSortedSet() { ImmutableSortedSetMultimap<Integer, Integer> empty = Multimaps.immutable.sortedSet.with(Integer::compareTo); Assert.assertEquals(0, empty.size()); ImmutableSortedSetMultimap<Integer, Integer> one = Multimaps.immutable.sortedSet.with(Integer::compareTo, 1, 1); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1)), one); ImmutableSortedSetMultimap<Integer, Integer> two = Multimaps.immutable.sortedSet.with(Integer::compareTo, 1, 1, 2, 2); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); ImmutableSortedSetMultimap<Integer, Integer> three = Multimaps.immutable.sortedSet.with(Integer::compareTo, 1, 1, 2, 2, 3, 3); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void immutableBag() { ImmutableBagMultimap<Integer, Integer> empty = Multimaps.immutable.bag.with(); Assert.assertEquals(0, empty.size()); ImmutableBagMultimap<Integer, Integer> one = Multimaps.immutable.bag.with(1, 1); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1)), one); ImmutableBagMultimap<Integer, Integer> two = Multimaps.immutable.bag.with(1, 1, 2, 2); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); ImmutableBagMultimap<Integer, Integer> three = Multimaps.immutable.bag.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void mutableList() { MutableListMultimap<Integer, Integer> empty = Multimaps.mutable.list.with(); Assert.assertEquals(0, empty.size()); MutableListMultimap<Integer, Integer> one = Multimaps.mutable.list.with(1, 1); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1)), one); MutableListMultimap<Integer, Integer> two = Multimaps.mutable.list.with(1, 1, 2, 2); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); MutableListMultimap<Integer, Integer> three = Multimaps.mutable.list.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(FastListMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void mutableSet() { MutableSetMultimap<Integer, Integer> empty = Multimaps.mutable.set.with(); Assert.assertEquals(0, empty.size()); MutableSetMultimap<Integer, Integer> one = Multimaps.mutable.set.with(1, 1); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1)), one); MutableSetMultimap<Integer, Integer> two = Multimaps.mutable.set.with(1, 1, 2, 2); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); MutableSetMultimap<Integer, Integer> three = Multimaps.mutable.set.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(UnifiedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void mutableSortedSet() { MutableSortedSetMultimap<Integer, Integer> empty = Multimaps.mutable.sortedSet.with(Integer::compareTo); Assert.assertEquals(0, empty.size()); MutableSortedSetMultimap<Integer, Integer> one = Multimaps.mutable.sortedSet.with(Integer::compareTo, 1, 1); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1)), one); MutableSortedSetMultimap<Integer, Integer> two = Multimaps.mutable.sortedSet.with(Integer::compareTo, 1, 1, 2, 2); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); MutableSortedSetMultimap<Integer, Integer> three = Multimaps.mutable.sortedSet.with(Integer::compareTo, 1, 1, 2, 2, 3, 3); Assert.assertEquals(TreeSortedSetMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void mutableBag() { MutableBagMultimap<Integer, Integer> empty = Multimaps.mutable.bag.with(); Assert.assertEquals(0, empty.size()); MutableBagMultimap<Integer, Integer> one = Multimaps.mutable.bag.with(1, 1); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1)), one); MutableBagMultimap<Integer, Integer> two = Multimaps.mutable.bag.with(1, 1, 2, 2); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2)), two); MutableBagMultimap<Integer, Integer> three = Multimaps.mutable.bag.with(1, 1, 2, 2, 3, 3); Assert.assertEquals(HashBagMultimap.newMultimap(Tuples.pair(1, 1), Tuples.pair(2, 2), Tuples.pair(3, 3)), three); } @Test public void classIsNonInstantiable() { Verify.assertClassNonInstantiable(Multimaps.class); } }