GP-0 fixing tests

This commit is contained in:
ghidravore 2021-08-04 11:41:40 -04:00
parent c186cafe01
commit f839d34fa9
2 changed files with 43 additions and 36 deletions

View file

@ -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<Options> combo = (GhidraComboBox<Options>) getInstanceField("defaultOptionsCombo", panel);
assertEquals(name, ((Options)combo.getSelectedItem()).getName());
GhidraComboBox<Options> combo =
(GhidraComboBox<Options>) getInstanceField("defaultOptionsCombo", panel);
assertEquals(name, ((Options) combo.getSelectedItem()).getName());
}
private void setCombobox(String name) {
runSwing(() -> {
AnalysisPanel panel = (AnalysisPanel) getInstanceField("panel", optionsDialog);
@SuppressWarnings("unchecked")
GhidraComboBox<Options> combo = (GhidraComboBox<Options>) getInstanceField("defaultOptionsCombo", panel);
GhidraComboBox<Options> combo =
(GhidraComboBox<Options>) getInstanceField("defaultOptionsCombo", panel);
ComboBoxModel<Options> 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 {
}
}

View file

@ -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