2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.util;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotEquals;
13 import static org.junit.Assert.assertNotNull;
14 import static org.junit.Assert.assertTrue;
16 import java.util.Collection;
17 import java.util.HashMap;
19 import java.util.Map.Entry;
21 import org.junit.Test;
22 import org.opendaylight.yangtools.triemap.MutableTrieMap;
23 import org.opendaylight.yangtools.triemap.TrieMap;
25 public class ReadWriteTrieMapTest {
28 public void testMethodsOfReadWriteTrieMap() {
29 final MutableTrieMap<String, String> trieMap = TrieMap.create();
30 trieMap.put("0", "zero");
31 trieMap.put("1", "one");
33 final ReadWriteTrieMap<String, String> readWriteTrieMap = new ReadWriteTrieMap<>(trieMap, 5);
35 assertNotNull("Object readOnlyTrieMap shouldn't be 'null'.", readWriteTrieMap);
37 assertEquals("Size of readOnlyTrieMap should be '5'.", 5, readWriteTrieMap.size());
38 assertFalse("Object readOnlyTrieMap shouldn't be empty.", readWriteTrieMap.isEmpty());
40 assertTrue("Object readOnlyTrieMap should have key '0'.", readWriteTrieMap.containsKey("0"));
41 assertTrue("Object readOnlyTrieMap should have value 'zero'.", readWriteTrieMap.containsValue("zero"));
42 assertEquals("Object readOnlyTrieMap should have value 'zero'.", "zero", readWriteTrieMap.get("0"));
44 final Map<String, String> rwMap = readWriteTrieMap;
45 rwMap.put("2", "two");
46 rwMap.put("3", "three");
48 assertEquals("Removed value from readOnlyTrieMap should be 'one'.", "one", rwMap.remove("1"));
50 final Set<String> trieMapKeySet = readWriteTrieMap.keySet();
51 assertEquals("Size of keySet should be '3'.", 3, trieMapKeySet.size());
53 final Collection<String> trieMapValues = readWriteTrieMap.values();
54 assertEquals("Size of values should be '3'.", 3, trieMapValues.size());
56 assertEquals(convertSetEntryToMap(readWriteTrieMap.entrySet()), trieMap);
58 trieMap.put("2", "two");
59 final ReadWriteTrieMap<String, String> readWriteTrieMap2 = new ReadWriteTrieMap<>(trieMap, 4);
61 assertNotEquals(readWriteTrieMap, readWriteTrieMap2);
62 assertEquals(readWriteTrieMap.hashCode(), readWriteTrieMap2.hashCode());
64 final Map<String, String> readOnlyTrieMap = readWriteTrieMap.toReadOnly();
65 readWriteTrieMap.clear();
66 assertEquals(0, readWriteTrieMap.size());
67 assertEquals(6, readOnlyTrieMap.size());
70 private static Map<String, String> convertSetEntryToMap(final Set<Entry<String, String>> input) {
71 Map<String, String> resultMap = new HashMap<>();
72 for (Entry<String, String> entry : input) {
73 resultMap.put(entry.getKey(), entry.getValue());