griffinjm commented on code in PR #672:
URL:
https://github.com/apache/commons-collections/pull/672#discussion_r2978501597
##########
src/test/java/org/apache/commons/collections4/trie/PatriciaTrieTest.java:
##########
@@ -437,6 +445,229 @@ void testPrefixMapSizes2() {
assertTrue(trie.prefixMap(prefixString).containsKey(longerString));
}
+ @Test
+ void testSubmap() {
+ final PatriciaTrie<String> trie = new PatriciaTrie<>();
+ trie.put("ga", "ga");
+ trie.put("gb", "gb");
+ trie.put("gc", "gc");
+ trie.put("gd", "gd");
+ trie.put("ge", "ge");
+
+ // subMap should be entire trie
+ SortedMap<String, String> subMap = trie.subMap("a", "z");
+ assertEquals(5, subMap.size());
+ assertEquals("ga", subMap.get("ga"));
+ assertEquals("gb", subMap.get("gb"));
+ assertEquals("gc", subMap.get("gc"));
+ assertEquals("gd", subMap.get("gd"));
+ assertEquals("ge", subMap.get("ge"));
+
+ // subMap should be empty
+ subMap = trie.subMap("a", "a");
+ assertEquals(0, subMap.size());
+
+ // subMap() is not inclusive of the second key
+ // subMap should be 4 entries only - "ge" excluded
+ subMap = trie.subMap("ga", "ge");
+ assertEquals(4, subMap.size());
+ assertEquals("ga", subMap.get("ga"));
+ assertEquals("gb", subMap.get("gb"));
+ assertEquals("gc", subMap.get("gc"));
+ assertEquals("gd", subMap.get("gd"));
+ assertNull(subMap.get("ge"));
+
+ // subMap should be 5 entries
+ subMap = trie.subMap("ga", "gf");
+ assertEquals(5, subMap.size());
+ assertEquals("ga", subMap.get("ga"));
+ assertEquals("gb", subMap.get("gb"));
+ assertEquals("gc", subMap.get("gc"));
+ assertEquals("gd", subMap.get("gd"));
+ assertEquals("ge", subMap.get("ge"));
+
+ // subMap should be 4 entries - "ga" excluded
+ subMap = trie.subMap("gb", "z");
+ assertEquals(4, subMap.size());
+ assertNull(subMap.get("ga"));
+ assertEquals("gb", subMap.get("gb"));
+ assertEquals("gc", subMap.get("gc"));
+ assertEquals("gd", subMap.get("gd"));
+ assertEquals("ge", subMap.get("ge"));
+
+
+ // subMap should be 1 entry - "gc" only
+ subMap = trie.subMap("gc", "gd");
+ assertEquals(1, subMap.size());
+ assertNull(subMap.get("ga"));
+ assertNull(subMap.get("gb"));
+ assertEquals("gc", subMap.get("gc"));
+ assertNull(subMap.get("gd"));
+ assertNull(subMap.get("ge"));
+ }
+
+ @Test
+ void testTailMap() {
+ final PatriciaTrie<String> trie = new PatriciaTrie<>();
+ trie.put("ga", "ga");
+ trie.put("gb", "gb");
+ trie.put("gc", "gc");
+ trie.put("gd", "gd");
+ trie.put("ge", "ge");
+
+ // tailMap should be entire trie
+ SortedMap<String, String> tailMap = trie.tailMap("a");
+ assertEquals(5, tailMap.size());
+ assertEquals("ga", tailMap.get("ga"));
+ assertEquals("gb", tailMap.get("gb"));
+ assertEquals("gc", tailMap.get("gc"));
+ assertEquals("gd", tailMap.get("gd"));
+ assertEquals("ge", tailMap.get("ge"));
+
+ // tailMap should be empty
+ tailMap = trie.tailMap("z");
+ assertEquals(0, tailMap.size());
+
+ // tailMap is inclusive of the search key
+ // tailMap should be the entire trie
+ tailMap = trie.tailMap("ga");
+ assertEquals(5, tailMap.size());
+ assertEquals("ga", tailMap.get("ga"));
+ assertEquals("gb", tailMap.get("gb"));
+ assertEquals("gc", tailMap.get("gc"));
+ assertEquals("gd", tailMap.get("gd"));
+ assertEquals("ge", tailMap.get("ge"));
+
+ // tailMap should be single entry "ge"
+ tailMap = trie.tailMap("ge");
+ assertEquals(1, tailMap.size());
+ assertNull(tailMap.get("ga"));
+ assertNull(tailMap.get("gb"));
+ assertNull(tailMap.get("gc"));
+ assertNull(tailMap.get("gd"));
+ assertEquals("ge", tailMap.get("ge"));
+ }
+
+ @Test
+ void testHeadMap() {
+ final PatriciaTrie<String> trie = new PatriciaTrie<>();
+ trie.put("ga", "ga");
+ trie.put("gb", "gb");
+ trie.put("gc", "gc");
+ trie.put("gd", "gd");
+ trie.put("ge", "ge");
+
+ // headMap should be entire trie
+ SortedMap<String, String> headMap = trie.headMap("z");
+ assertEquals(5, headMap.size());
+ assertEquals("ga", headMap.get("ga"));
+ assertEquals("gb", headMap.get("gb"));
+ assertEquals("gc", headMap.get("gc"));
+ assertEquals("gd", headMap.get("gd"));
+ assertEquals("ge", headMap.get("ge"));
+
+ // headMap should be empty
+ headMap = trie.headMap("a");
+ assertEquals(0, headMap.size());
+
+ // headMap() is not inclusive of the key
+ // headMap should be 4 entries only - "ge" excluded
+ headMap = trie.headMap("ge");
+ assertEquals(4, headMap.size());
+ assertEquals("ga", headMap.get("ga"));
+ assertEquals("gb", headMap.get("gb"));
+ assertEquals("gc", headMap.get("gc"));
+ assertEquals("gd", headMap.get("gd"));
+ assertNull(headMap.get("ge"));
+
+ // headMap should be 5 entries
+ headMap = trie.headMap("gf");
+ assertEquals(5, headMap.size());
+ assertEquals("ga", headMap.get("ga"));
+ assertEquals("gb", headMap.get("gb"));
+ assertEquals("gc", headMap.get("gc"));
+ assertEquals("gd", headMap.get("gd"));
+ assertEquals("ge", headMap.get("ge"));
+
+ // headMap should be 1 entry - "ga" only
+ headMap = trie.headMap("gb");
+ assertEquals(1, headMap.size());
+ assertEquals("ga", headMap.get("ga"));
+ assertNull(headMap.get("gb"));
+ assertNull(headMap.get("gc"));
+ assertNull(headMap.get("gd"));
+ assertNull(headMap.get("ge"));
+ }
+
+
+ @Test
+ void verifyNoConcurrentModificationExceptionOnConcurrentSubmapIteration()
throws InterruptedException, ExecutionException, TimeoutException {
Review Comment:
Sure, I renamed it and pushed. Thanks.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]