diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalysisOptionsTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalysisOptionsTest.java index 00f5619b65..cafd0f387b 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalysisOptionsTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalysisOptionsTest.java @@ -48,7 +48,7 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { private PluginTool tool; private Program program; private AnalysisOptionsDialog optionsDialog; - + @Before public void setUp() throws Exception { cleanUpStoredPreferences(); @@ -91,7 +91,7 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { setAnalyzerEnabled("Stack", false); setAnalyzerEnabled("Reference", false); setAnalyzerEnabled("ASCII Strings", false); - + assertFalse(isAnalyzerEnabled("Stack")); assertFalse(isAnalyzerEnabled("Reference")); assertFalse(isAnalyzerEnabled("ASCII Strings")); @@ -102,13 +102,14 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(isAnalyzerEnabled("Reference")); assertTrue(isAnalyzerEnabled("ASCII Strings")); } + @Test public void testDeselectAll() throws Exception { setAnalyzerEnabled("Stack", true); setAnalyzerEnabled("Reference", true); - setAnalyzerEnabled("ASCII Strings",true); - + setAnalyzerEnabled("ASCII Strings", true); + assertTrue(isAnalyzerEnabled("Stack")); assertTrue(isAnalyzerEnabled("Reference")); assertTrue(isAnalyzerEnabled("ASCII Strings")); @@ -129,7 +130,7 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { setAnalyzerEnabled("Stack", false); setAnalyzerEnabled("Reference", false); setAnalyzerEnabled("ASCII Strings", false); - + assertFalse(isAnalyzerEnabled("Stack")); assertFalse(isAnalyzerEnabled("Reference")); assertFalse(isAnalyzerEnabled("ASCII Strings")); @@ -140,6 +141,7 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(isAnalyzerEnabled("Reference")); assertTrue(isAnalyzerEnabled("ASCII Strings")); } + @Test public void testSaveConfiguration() { assertComboboxEquals("Current Program Options"); @@ -149,10 +151,11 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { pressButtonByText(optionsDialog, "Save...", false); saveConfig("foo"); - + assertComboboxEquals("foo"); - + } + @Test public void testDeleteConfiguration() { assertComboboxEquals("Current Program Options"); @@ -164,15 +167,15 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { assertComboboxEquals("Current Program Options"); } - - @Test + + @Test public void testSwitchCombo() { createConfig("a", false, false, false); createConfig("b", false, true, false); createConfig("c", true, false, true); assertComboboxEquals("c"); - + assertTrue(isAnalyzerEnabled("Stack")); assertFalse(isAnalyzerEnabled("Reference")); assertTrue(isAnalyzerEnabled("ASCII Strings")); @@ -188,8 +191,8 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { assertFalse(isAnalyzerEnabled("ASCII Strings")); } - - @Test + + @Test public void testCancelDialogDoesntSaveChanges() { assertComboboxEquals("Current Program Options"); @@ -200,19 +203,21 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { setAnalyzerEnabled("Stack", false); setAnalyzerEnabled("Reference", false); - + assertTrue(isAnalyzerEnabledInProgramOptions("Stack")); assertTrue(isAnalyzerEnabledInProgramOptions("Reference")); assertFalse(isAnalyzerEnabled("Stack")); assertFalse(isAnalyzerEnabled("Reference")); - pressButtonByText(optionsDialog, "Cancel"); - + pressButtonByText(optionsDialog, "Cancel", false); + OptionDialog yesNoDialog = waitForDialogComponent(OptionDialog.class); + pressButtonByText(yesNoDialog.getComponent(), "No"); + assertTrue(isAnalyzerEnabledInProgramOptions("Stack")); assertTrue(isAnalyzerEnabledInProgramOptions("Reference")); } - - @Test + + @Test public void testAnalyzeSavesChangesToProgram() { assertComboboxEquals("Current Program Options"); @@ -223,14 +228,14 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { setAnalyzerEnabled("Stack", false); setAnalyzerEnabled("Reference", false); - + assertTrue(isAnalyzerEnabledInProgramOptions("Stack")); assertTrue(isAnalyzerEnabledInProgramOptions("Reference")); assertFalse(isAnalyzerEnabled("Stack")); assertFalse(isAnalyzerEnabled("Reference")); pressButtonByText(optionsDialog, "Analyze"); - + waitForBusyTool(tool); assertFalse(isAnalyzerEnabledInProgramOptions("Stack")); @@ -245,24 +250,26 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { setAnalyzerEnabled("Stack", stackOn); setAnalyzerEnabled("Reference", refOn); setAnalyzerEnabled("ASCII Strings", stringOn); - + pressButtonByText(optionsDialog, "Save...", false); saveConfig(name); - + } private void assertComboboxEquals(String name) { AnalysisPanel panel = (AnalysisPanel) getInstanceField("panel", optionsDialog); @SuppressWarnings("unchecked") - GhidraComboBox combo = (GhidraComboBox) getInstanceField("defaultOptionsCombo", panel); - assertEquals(name, ((Options)combo.getSelectedItem()).getName()); + GhidraComboBox combo = + (GhidraComboBox) getInstanceField("defaultOptionsCombo", panel); + assertEquals(name, ((Options) combo.getSelectedItem()).getName()); } - + private void setCombobox(String name) { runSwing(() -> { AnalysisPanel panel = (AnalysisPanel) getInstanceField("panel", optionsDialog); @SuppressWarnings("unchecked") - GhidraComboBox combo = (GhidraComboBox) getInstanceField("defaultOptionsCombo", panel); + GhidraComboBox combo = + (GhidraComboBox) getInstanceField("defaultOptionsCombo", panel); ComboBoxModel model = combo.getModel(); for (int i = 0; i < model.getSize(); i++) { Options elementAt = model.getElementAt(i); @@ -280,8 +287,9 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { runSwing(() -> dialog.setValue(name)); pressButtonByText(dialog, "OK"); waitForSwing(); - + } + private void confirmDelete() { OptionDialog dialog = waitForDialogComponent(OptionDialog.class); pressButtonByText(dialog, "Yes"); @@ -293,11 +301,10 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { performAction(action, false); return waitForDialogComponent(AnalysisOptionsDialog.class); } - + private void apply() { pressButtonByText(optionsDialog, "Analyze"); } - private boolean isAnalyzerEnabledInProgramOptions(String analyzerName) { Options options = program.getOptions(Program.ANALYSIS_PROPERTIES); @@ -324,15 +331,15 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { } }); } - + private boolean isAnalyzerEnabled(String name) { TableModel model = getAnalyzerTableModel(); int analyzerRow = getRowForAnalyzer(name, model); - AtomicBoolean result = new AtomicBoolean(); + AtomicBoolean result = new AtomicBoolean(); runSwing(new Runnable() { @Override public void run() { - result.set((Boolean)model.getValueAt(analyzerRow, 0)); + result.set((Boolean) model.getValueAt(analyzerRow, 0)); } }); return result.get(); @@ -363,4 +370,3 @@ public class AnalysisOptionsTest extends AbstractGhidraHeadedIntegrationTest { } } - diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java index 285aa5ec23..c50d7efd02 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java @@ -38,6 +38,7 @@ import docking.actions.KeyBindingUtils; import docking.options.editor.*; import docking.tool.ToolConstants; import docking.widgets.MultiLineLabel; +import docking.widgets.OptionDialog; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.table.RowObjectFilterModel; import docking.widgets.tree.GTree; @@ -554,9 +555,9 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { // change to "LEFT" runSwing(() -> ps.setSelectedIndex(0)); - final JButton cancelButton = findButtonByText(dialog.getComponent(), "Cancel"); - assertTrue(cancelButton.isEnabled()); - runSwing(() -> cancelButton.getActionListeners()[0].actionPerformed(null)); + pressButtonByText(dialog, "Cancel", false); + OptionDialog yesNoDialog = waitForDialogComponent(OptionDialog.class); + pressButtonByText(yesNoDialog.getComponent(), "No"); Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES mouseButton = @@ -564,7 +565,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { (GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES) null); assertEquals("MIDDLE", mouseButton.toString()); - assertTrue(!dialog.isShowing()); + assertFalse(runSwing(() -> dialog.isShowing())); } @Test