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.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertFalse;
12 import static org.junit.jupiter.api.Assertions.assertNotEquals;
13 import static org.junit.jupiter.api.Assertions.assertNotNull;
14 import static org.junit.jupiter.api.Assertions.assertTrue;
16 import java.util.HashMap;
18 import java.util.Map.Entry;
20 import org.junit.jupiter.api.Test;
21 import tech.pantheon.triemap.TrieMap;
23 class ReadWriteTrieMapTest {
26 void testMethodsOfReadWriteTrieMap() {
27 final var trieMap = TrieMap.<String, String>create();
28 trieMap.put("0", "zero");
29 trieMap.put("1", "one");
31 final var readWriteTrieMap = new ReadWriteTrieMap<>(trieMap, 5);
33 assertNotNull(readWriteTrieMap, "Object readOnlyTrieMap shouldn't be 'null'.");
35 assertEquals(5, readWriteTrieMap.size(), "Size of readOnlyTrieMap should be '5'.");
36 assertFalse(readWriteTrieMap.isEmpty(), "Object readOnlyTrieMap shouldn't be empty.");
38 assertTrue(readWriteTrieMap.containsKey("0"), "Object readOnlyTrieMap should have key '0'.");
39 assertTrue(readWriteTrieMap.containsValue("zero"), "Object readOnlyTrieMap should have value 'zero'.");
40 assertEquals("zero", readWriteTrieMap.get("0"), "Object readOnlyTrieMap should have value 'zero'.");
42 final var rwMap = readWriteTrieMap;
43 rwMap.put("2", "two");
44 rwMap.put("3", "three");
46 assertEquals("one", rwMap.remove("1"), "Removed value from readOnlyTrieMap should be 'one'.");
48 final var trieMapKeySet = readWriteTrieMap.keySet();
49 assertEquals(3, trieMapKeySet.size(), "Size of keySet should be '3'.");
51 final var trieMapValues = readWriteTrieMap.values();
52 assertEquals(3, trieMapValues.size(), "Size of values should be '3'.");
54 assertEquals(convertSetEntryToMap(readWriteTrieMap.entrySet()), trieMap);
56 trieMap.put("2", "two");
57 final var readWriteTrieMap2 = new ReadWriteTrieMap<>(trieMap, 4);
59 assertNotEquals(readWriteTrieMap, readWriteTrieMap2);
60 assertEquals(readWriteTrieMap.hashCode(), readWriteTrieMap2.hashCode());
62 final var readOnlyTrieMap = readWriteTrieMap.toReadOnly();
63 readWriteTrieMap.clear();
64 assertEquals(0, readWriteTrieMap.size());
65 assertEquals(6, readOnlyTrieMap.size());
68 private static Map<String, String> convertSetEntryToMap(final Set<Entry<String, String>> input) {
69 final var resultMap = new HashMap<String, String>();
70 for (var entry : input) {
71 resultMap.put(entry.getKey(), entry.getValue());