From 657cc69457e1524c4f8c0d98649b84795525ab6e Mon Sep 17 00:00:00 2001 From: Laugh <2636697181@qq.com> Date: Sat, 27 Apr 2024 12:01:41 +0800 Subject: [PATCH] Add two methods in class VisitorMap for debug purposes --- .../github/javaparser/utils/VisitorMapTest.java | 15 +++++++++++++++ .../com/github/javaparser/utils/VisitorMap.java | 17 +++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/utils/VisitorMapTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/utils/VisitorMapTest.java index 4874525791..e82c577709 100644 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/utils/VisitorMapTest.java +++ b/javaparser-core-testing/src/test/java/com/github/javaparser/utils/VisitorMapTest.java @@ -96,4 +96,19 @@ void remove(){ assertFalse(map.containsKey(x1)); } + + @Test + void completeKeySetTest(){ + CompilationUnit x1 = parse("class X{}"); + CompilationUnit x2 = parse("class X{}"); + + VisitorMap map = new VisitorMap<>(new ObjectIdentityHashCodeVisitor(), new ObjectIdentityEqualsVisitor()); + map.put(x1, 1); + map.put(x2, 1); + assertEquals(1, map.keySet().size()); + assertEquals(2, map.allKeys().size()); + + assertEquals(1, map.entrySet().size()); + assertEquals(2, map.allEntries().size()); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/VisitorMap.java b/javaparser-core/src/main/java/com/github/javaparser/utils/VisitorMap.java index 110338e1b5..9daac6e8be 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/VisitorMap.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/VisitorMap.java @@ -25,10 +25,7 @@ import com.github.javaparser.ast.visitor.Visitable; import com.github.javaparser.ast.visitor.VoidVisitor; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -142,4 +139,16 @@ public Collection values() { public Set> entrySet() { return innerMap.entrySet().stream().map(e -> new HashMap.SimpleEntry<>(e.getKey().overridden, e.getValue())).collect(Collectors.toSet()); } + + public Set allKeys(){ + VisitorSet keySet = new VisitorSet<>(hashcodeVisitor, equalsVisitor); + innerMap.keySet().forEach(key -> keySet.add(key.overridden)); + return keySet; + } + + public List> allEntries(){ + return allKeys().stream() + .map(key -> new AbstractMap.SimpleEntry<>(key, innerMap.get(new EqualsHashcodeOverridingFacade(key)))) + .collect(Collectors.toList()); + } }