Migrate common/util to JUnit5
[yangtools.git] / common / util / src / test / java / org / opendaylight / yangtools / util / ReadWriteTrieMapTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.util;
9
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;
15
16 import java.util.HashMap;
17 import java.util.Map;
18 import java.util.Map.Entry;
19 import java.util.Set;
20 import org.junit.jupiter.api.Test;
21 import tech.pantheon.triemap.TrieMap;
22
23 class ReadWriteTrieMapTest {
24
25     @Test
26     void testMethodsOfReadWriteTrieMap() {
27         final var trieMap = TrieMap.<String, String>create();
28         trieMap.put("0", "zero");
29         trieMap.put("1", "one");
30
31         final var readWriteTrieMap = new ReadWriteTrieMap<>(trieMap, 5);
32
33         assertNotNull(readWriteTrieMap, "Object readOnlyTrieMap shouldn't be 'null'.");
34
35         assertEquals(5, readWriteTrieMap.size(), "Size of readOnlyTrieMap should be '5'.");
36         assertFalse(readWriteTrieMap.isEmpty(), "Object readOnlyTrieMap shouldn't be empty.");
37
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'.");
41
42         final var rwMap = readWriteTrieMap;
43         rwMap.put("2", "two");
44         rwMap.put("3", "three");
45
46         assertEquals("one", rwMap.remove("1"), "Removed value from readOnlyTrieMap should be 'one'.");
47
48         final var trieMapKeySet = readWriteTrieMap.keySet();
49         assertEquals(3, trieMapKeySet.size(), "Size of keySet should be '3'.");
50
51         final var trieMapValues = readWriteTrieMap.values();
52         assertEquals(3, trieMapValues.size(), "Size of values should be '3'.");
53
54         assertEquals(convertSetEntryToMap(readWriteTrieMap.entrySet()), trieMap);
55
56         trieMap.put("2", "two");
57         final var readWriteTrieMap2 = new ReadWriteTrieMap<>(trieMap, 4);
58
59         assertNotEquals(readWriteTrieMap, readWriteTrieMap2);
60         assertEquals(readWriteTrieMap.hashCode(), readWriteTrieMap2.hashCode());
61
62         final var readOnlyTrieMap = readWriteTrieMap.toReadOnly();
63         readWriteTrieMap.clear();
64         assertEquals(0, readWriteTrieMap.size());
65         assertEquals(6, readOnlyTrieMap.size());
66     }
67
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());
72         }
73         return resultMap;
74     }
75 }