ui: extract test data parsing

This commit is contained in:
Aleksey Pivovarov
2017-05-24 20:04:06 +03:00
parent ee42214b99
commit 603a1620fe
2 changed files with 32 additions and 29 deletions
@@ -19,29 +19,13 @@ import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NonNls;
import java.util.List;
import java.util.Map;
import java.util.Set;
public abstract class KeymapsTestCase extends KeymapsTestCaseBase {
@Override
protected void collectKnownDuplicates(Map<String, Map<String, List<String>>> result) {
appendKnownDuplicates(result, DEFAULT_DUPLICATES);
}
@Override
protected void collectUnknownActions(Set<String> result) {
result.addAll(UNCNOWN_ACTION_IDS);
}
@Override
protected Set<String> getBoundActions() {
return DEFAULT_BOUND_ACTIONS;
}
// @formatter:off
@NonNls @SuppressWarnings({"HardCodedStringLiteral"})
private static final Map<String, String[][]> DEFAULT_DUPLICATES = new THashMap<String, String[][]>(){{
protected static final Map<String, String[][]> DEFAULT_DUPLICATES = new THashMap<String, String[][]>(){{
put("$default", new String[][] {
{ "ADD", "ExpandTreeNode", "Graph.ZoomIn"},
{ "BACK_SPACE", "EditorBackSpace", "Images.Thumbnails.UpFolder"},
@@ -357,7 +341,7 @@ public abstract class KeymapsTestCase extends KeymapsTestCaseBase {
}};
// @formatter:on
@NonNls private static final Set<String> UNCNOWN_ACTION_IDS = ContainerUtil.set(
@NonNls protected static final Set<String> DEFAULT_UNKNOWN_ACTION_IDS = ContainerUtil.set(
"ActivateVersionControlToolWindow", "ActivateFavoritesToolWindow", "ActivateCommanderToolWindow", "ActivateDebugToolWindow",
"ActivateFindToolWindow",
"ActivateHierarchyToolWindow", "ActivateMessagesToolWindow", "ActivateProjectToolWindow", "ActivateRunToolWindow",
@@ -49,13 +49,17 @@ public abstract class KeymapsTestCaseBase extends PlatformTestCase {
private static final Set<String> LINUX_KEYMAPS = ContainerUtil.newHashSet("Default for XWin", "Default for GNOME", "Default for KDE");
protected abstract void collectKnownDuplicates(Map<String, Map<String, List<String>>> result);
/**
* @return Keymap -> Shortcut -> [ActionId]
*/
protected abstract Map<String, Map<String, List<String>>> getKnownDuplicates();
protected abstract void collectUnknownActions(Set<String> result);
protected abstract Set<String> getUnknownActions();
protected abstract Set<String> getBoundActions();
protected static void appendKnownDuplicates(Map<String, Map<String, List<String>>> result, Map<String, String[][]> duplicates) {
protected static Map<String, Map<String, List<String>>> parseKnownDuplicates(Map<String, String[][]> duplicates) {
HashMap<String, Map<String, List<String>>> result = new HashMap<>();
for (Map.Entry<String, String[][]> eachKeymap : duplicates.entrySet()) {
String keymapName = eachKeymap.getKey();
@@ -73,15 +77,31 @@ public abstract class KeymapsTestCaseBase extends PlatformTestCase {
mapping.put(shortcuts[0], ContainerUtil.newArrayList(shortcuts, 1, shortcuts.length));
}
}
}
private Map<String, Map<String, List<String>>> getKnownDuplicates() {
Map<String, Map<String, List<String>>> result = new LinkedHashMap<>();
collectKnownDuplicates(result);
return result;
}
protected static Map<String, Map<String, List<String>>> parseKnownDuplicates(Map<String, String[][]> baseDuplicates,
Map<String, String[][]> ideDuplicates) {
Map<String, Map<String, List<String>>> baseMap = parseKnownDuplicates(baseDuplicates);
baseMap.keySet().retainAll(ContainerUtil.map(KeymapManagerEx.getInstanceEx().getAllKeymaps(), Keymap::getName));
Map<String, Map<String, List<String>>> ideMap = parseKnownDuplicates(ideDuplicates);
Map<String, Map<String, List<String>>> result = new HashMap<>();
for (String keymap : ContainerUtil.union(baseMap.keySet(), ideMap.keySet())) {
Map<String, List<String>> mapping = new HashMap<>();
result.put(keymap, mapping);
Map<String, List<String>> baseMapping = baseMap.get(keymap);
Map<String, List<String>> ideMapping = ideMap.get(keymap);
if (baseMapping != null) mapping.putAll(baseMapping);
if (ideMapping != null) mapping.putAll(ideMapping);
}
return result;
}
public void testDuplicateShortcuts() {
StringBuilder failMessage = new StringBuilder();
Map<String, Map<String, List<String>>> knownDuplicates = getKnownDuplicates();
@@ -202,8 +222,7 @@ public abstract class KeymapsTestCaseBase extends PlatformTestCase {
}
public void testValidActionIds() {
THashSet<String> unknownActions = new THashSet<>();
collectUnknownActions(unknownActions);
Set<String> unknownActions = getUnknownActions();
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
Map<String, List<String>> missingActions = new FactoryMap<String, List<String>>() {