1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package libcore.java.util;
19
20import java.util.ConcurrentModificationException;
21import java.util.Iterator;
22import java.util.LinkedHashMap;
23import junit.framework.TestCase;
24
25public class OldLinkedHashMapTest extends TestCase {
26
27    public void testLinkedHashMap() {
28        // we want to test the LinkedHashMap in access ordering mode.
29        LinkedHashMap map = new LinkedHashMap<String, String>(10, 0.75f, true);
30
31        map.put("key1", "value1");
32        map.put("key2", "value2");
33        map.put("key3", "value3");
34
35        Iterator iterator = map.keySet().iterator();
36        String id = (String) iterator.next();
37        map.get(id);
38        try {
39            iterator.next();
40            // A LinkedHashMap is supposed to throw this Exception when a
41            // iterator.next() Operation takes place after a get
42            // Operation. This is because the get Operation is considered
43            // a structural modification if the LinkedHashMap is in
44            // access order mode.
45            fail("expected ConcurrentModificationException was not thrown.");
46        } catch(ConcurrentModificationException expected) {
47        }
48
49        LinkedHashMap mapClone = (LinkedHashMap) map.clone();
50
51        iterator = map.keySet().iterator();
52        id = (String) iterator.next();
53        mapClone.get(id);
54        iterator.next();
55
56        try {
57            new LinkedHashMap<String, String>(-10, 0.75f, true);
58            fail("IllegalArgumentException expected");
59        } catch (IllegalArgumentException expected) {
60        }
61
62        try {
63            new LinkedHashMap<String, String>(10, -0.75f, true);
64            fail("IllegalArgumentException expected");
65        } catch (IllegalArgumentException expected) {
66        }
67    }
68}
69