1 /*
   2  * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * The Universal Permissive License (UPL), Version 1.0
   6  *
   7  * Subject to the condition set forth below, permission is hereby granted to any
   8  * person obtaining a copy of this software, associated documentation and/or
   9  * data (collectively the "Software"), free of charge and under any and all
  10  * copyright rights in the Software, and any and all patent rights owned or
  11  * freely licensable by each licensor hereunder covering either (i) the
  12  * unmodified Software as contributed to or provided by such licensor, or (ii)
  13  * the Larger Works (as defined below), to deal in both
  14  *
  15  * (a) the Software, and
  16  *
  17  * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
  18  * one is included with the Software each a "Larger Work" to which the Software
  19  * is contributed by such licensors),
  20  *
  21  * without restriction, including without limitation the rights to copy, create
  22  * derivative works of, display, perform, and distribute the Software and make,
  23  * use, sell, offer for sale, import, export, have made, and have sold the
  24  * Software and the Larger Work(s), and to sublicense the foregoing rights on
  25  * either these or other terms.
  26  *
  27  * This license is subject to the following condition:
  28  *
  29  * The above copyright notice and either this complete permission notice or at a
  30  * minimum a reference to the UPL must be included in all copies or substantial
  31  * portions of the Software.
  32  *
  33  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  34  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  35  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  36  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  37  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  38  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  39  * SOFTWARE.
  40  */
  41 package jdk.internal.vm.compiler.collections.test;
  42 
  43 import java.util.LinkedHashMap;
  44 
  45 import jdk.internal.vm.compiler.collections.EconomicMap;
  46 import jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap;
  47 import org.junit.Assert;
  48 import org.junit.Test;
  49 
  50 public class EconomicMapTest {
  51 
  52     @Test
  53     public void testMapGetDefault() {
  54         EconomicMap<Integer, Integer> map = EconomicMap.create();
  55         map.put(0, 1);
  56         Assert.assertEquals(map.get(0, 2), Integer.valueOf(1));
  57         Assert.assertEquals(map.get(1, 2), Integer.valueOf(2));
  58     }
  59 
  60     @Test
  61     public void testMapPutAll() {
  62         EconomicMap<Integer, Integer> map = EconomicMap.create();
  63         EconomicMap<Integer, Integer> newMap = EconomicMap.wrapMap(new LinkedHashMap<>());
  64         newMap.put(1, 1);
  65         newMap.put(2, 4);
  66         map.putAll(newMap);
  67         Assert.assertEquals(map.size(), 2);
  68 
  69         UnmodifiableEconomicMap<Integer, Integer> unmodifiableEconomicMap = EconomicMap.create(newMap);
  70 
  71         map.removeKey(1);
  72         map.put(2, 2);
  73         map.put(3, 9);
  74 
  75         map.putAll(unmodifiableEconomicMap);
  76         Assert.assertEquals(map.size(), 3);
  77         Assert.assertEquals(map.get(2), Integer.valueOf(4));
  78     }
  79 
  80     @Test
  81     public void testToString() {
  82         EconomicMap<Integer, Integer> map = EconomicMap.create();
  83         map.put(0, 0);
  84         map.put(1, 1);
  85         Assert.assertEquals(map.toString(), "map(size=2, {(0,0),(1,1)})");
  86     }
  87 
  88 }