From e6c542e2816b5cda2491b5cc03309f2cf6772999 Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Fri, 29 Mar 2019 14:21:51 -0400 Subject: [PATCH 1/2] Fix DataActionTest failures due to data settings dockingaction changes. The settings action's behavior changed when there was an active selection. The tests needed to change to reflect that. --- .../plugin/core/data/AbstractDataActionTest.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java index 84b996fa3a..c324bfd1bf 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java @@ -1270,7 +1270,9 @@ public abstract class AbstractDataActionTest extends AbstractGhidraHeadedIntegra checkAction(actions, EDIT_DATA_TYPE, pdata != null && (pdata.isStructure() || pdata.isUnion()), caseName); checkAction(actions, CREATE_ARRAY, true, caseName); - checkAction(actions, DEFAULT_DATA_SETTINGS, !hasSelection && hasSettings, caseName); + checkAction(actions, DEFAULT_DATA_SETTINGS, + (hasSelection == false || isSelectionJustSingleDataInstance(sel, d)) && hasSettings, + caseName); checkAction(actions, DATA_SETTINGS, hasNormalUnitSelection || hasSettings, caseName); checkAction(actions, CYCLE_FLOAT_DOUBLE, onFloatDoubleData, caseName); checkAction(actions, CYCLE_BYTE_WORD_DWORD_QWORD, onByteWordData, caseName); @@ -1332,7 +1334,9 @@ public abstract class AbstractDataActionTest extends AbstractGhidraHeadedIntegra checkAction(actions, EDIT_DATA_TYPE, pdata != null && (pdata.isStructure() || pdata.isUnion()), caseName); checkAction(actions, CREATE_ARRAY, true, caseName); - checkAction(actions, DEFAULT_DATA_SETTINGS, hasSettings && !hasSelection, caseName); + checkAction(actions, DEFAULT_DATA_SETTINGS, + hasSettings && (hasSelection == false || isSelectionJustSingleDataInstance(sel, d)), + caseName); checkAction(actions, DATA_SETTINGS, hasSettings, caseName); checkAction(actions, CYCLE_FLOAT_DOUBLE, true, caseName); checkAction(actions, CYCLE_BYTE_WORD_DWORD_QWORD, true, caseName); @@ -1474,6 +1478,14 @@ public abstract class AbstractDataActionTest extends AbstractGhidraHeadedIntegra return; } + private boolean isSelectionJustSingleDataInstance(ProgramSelection selection, Data data) { + if (selection != null && data != null) { + AddressSet dataAS = new AddressSet(data.getAddress(), data.getMaxAddress()); + return dataAS.hasSameAddresses(selection); + } + return false; + } + protected ActionContext getProgramContext() { cb.updateNow(); ActionContext context = cb.getProvider().getActionContext(null); From 8b67e8f53f3a11112d80f789c0113acb86fec6ff Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Mon, 1 Apr 2019 11:46:07 -0400 Subject: [PATCH 2/2] Codereview fixes --- .../ghidra/app/plugin/core/data/AbstractDataActionTest.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java index c324bfd1bf..0072b10fb9 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java @@ -1271,8 +1271,7 @@ public abstract class AbstractDataActionTest extends AbstractGhidraHeadedIntegra pdata != null && (pdata.isStructure() || pdata.isUnion()), caseName); checkAction(actions, CREATE_ARRAY, true, caseName); checkAction(actions, DEFAULT_DATA_SETTINGS, - (hasSelection == false || isSelectionJustSingleDataInstance(sel, d)) && hasSettings, - caseName); + (!hasSelection || isSelectionJustSingleDataInstance(sel, d)) && hasSettings, caseName); checkAction(actions, DATA_SETTINGS, hasNormalUnitSelection || hasSettings, caseName); checkAction(actions, CYCLE_FLOAT_DOUBLE, onFloatDoubleData, caseName); checkAction(actions, CYCLE_BYTE_WORD_DWORD_QWORD, onByteWordData, caseName); @@ -1335,8 +1334,7 @@ public abstract class AbstractDataActionTest extends AbstractGhidraHeadedIntegra pdata != null && (pdata.isStructure() || pdata.isUnion()), caseName); checkAction(actions, CREATE_ARRAY, true, caseName); checkAction(actions, DEFAULT_DATA_SETTINGS, - hasSettings && (hasSelection == false || isSelectionJustSingleDataInstance(sel, d)), - caseName); + hasSettings && (!hasSelection || isSelectionJustSingleDataInstance(sel, d)), caseName); checkAction(actions, DATA_SETTINGS, hasSettings, caseName); checkAction(actions, CYCLE_FLOAT_DOUBLE, true, caseName); checkAction(actions, CYCLE_BYTE_WORD_DWORD_QWORD, true, caseName);