/*
* Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* 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://aws.amazon.com/apache2.0
*
* This file 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.amazonaws.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Test;
import java.util.Collections;
import java.util.Map;
/**
* Unit tests for the ImmutableMapParameterTest class.
*/
public class ImmutableMapParameterTest {
@Test
public void testMapBuilder() {
Map<Integer, String> builtMap = new ImmutableMapParameter.Builder<Integer, String>()
.put(1, "one")
.put(2, "two")
.put(3, "three")
.build();
assertEquals(3, builtMap.size());
assertEquals("one", builtMap.get(1));
assertEquals("two", builtMap.get(2));
assertEquals("three", builtMap.get(3));
}
@Test
public void testOfBuilder() {
Map<Integer, String> builtMap = ImmutableMapParameter.of(1, "one");
assertEquals(1, builtMap.size());
assertEquals("one", builtMap.get(1));
builtMap = ImmutableMapParameter.of(1, "one", 2, "two");
assertEquals(2, builtMap.size());
assertEquals("one", builtMap.get(1));
assertEquals("two", builtMap.get(2));
builtMap = ImmutableMapParameter.of(1, "one", 2, "two", 3, "three");
assertEquals(3, builtMap.size());
assertEquals("one", builtMap.get(1));
assertEquals("two", builtMap.get(2));
assertEquals("three", builtMap.get(3));
builtMap = ImmutableMapParameter.of(1, "one", 2, "two", 3, "three", 4, "four");
assertEquals(4, builtMap.size());
assertEquals("one", builtMap.get(1));
assertEquals("two", builtMap.get(2));
assertEquals("three", builtMap.get(3));
assertEquals("four", builtMap.get(4));
builtMap = ImmutableMapParameter.of(1, "one", 2, "two", 3, "three", 4, "four", 5, "five");
assertEquals(5, builtMap.size());
assertEquals("one", builtMap.get(1));
assertEquals("two", builtMap.get(2));
assertEquals("three", builtMap.get(3));
assertEquals("four", builtMap.get(4));
assertEquals("five", builtMap.get(5));
}
@Test
public void testErrorOnDuplicateKeys() {
try {
Map<Integer, String> builtMap = new ImmutableMapParameter.Builder<Integer, String>()
.put(1, "one")
.put(1, "two")
.build();
fail("IllegalArgumentException expected.");
} catch (IllegalArgumentException iae) {
} catch (Exception e) {
fail("IllegalArgumentException expected.");
}
}
@Test
public void testMapOperations() {
Map<Integer, String> builtMap = new ImmutableMapParameter.Builder<Integer, String>()
.put(1, "one")
.put(2, "two")
.put(3, "three")
.build();
assertTrue(builtMap.containsKey(1));
assertTrue(builtMap.containsValue("one"));
assertTrue(builtMap.values().contains("one"));
assertEquals("one", builtMap.get(1));
assertEquals(3, builtMap.entrySet().size());
assertEquals(3, builtMap.values().size());
assertEquals(3, builtMap.size());
/** Unsupported methods **/
try {
builtMap.clear();
fail("UnsupportedOperationException expected.");
} catch (UnsupportedOperationException iae) {
} catch (Exception e) {
fail("UnsupportedOperationException expected.");
}
try {
builtMap.put(4, "four");
fail("UnsupportedOperationException expected.");
} catch (UnsupportedOperationException iae) {
} catch (Exception e) {
fail("UnsupportedOperationException expected.");
}
try {
builtMap.putAll(Collections.singletonMap(4, "four"));
fail("UnsupportedOperationException expected.");
} catch (UnsupportedOperationException iae) {
} catch (Exception e) {
fail("UnsupportedOperationException expected.");
}
try {
builtMap.remove(1);
fail("UnsupportedOperationException expected.");
} catch (UnsupportedOperationException iae) {
} catch (Exception e) {
fail("UnsupportedOperationException expected.");
}
}
}