Merge remote-tracking branch 'origin/patch'

Conflicts:
	Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/disassembler/ClearTest.java
	Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/select/qualified/QualifiedSelectionPluginTest.java
This commit is contained in:
Ryan Kurtz 2022-03-17 18:01:59 -04:00
commit 2d7c8d5055
8 changed files with 105 additions and 81 deletions

View file

@ -177,8 +177,9 @@ public class ClearTest extends AbstractGhidraHeadedIntegrationTest {
public void testClearActionEnablement() throws Exception { public void testClearActionEnablement() throws Exception {
closeProgram(); closeProgram();
ActionContext context = cb.getProvider().getActionContext(null);
assertFalse(clearAction.isEnabledForContext(context)); assertFalse(isEnabled(clearAction, cb.getProvider()));
assertFalse(clearAction.isEnabledForContext(new ActionContext()));
showTool(tool); showTool(tool);
loadProgram("notepad"); loadProgram("notepad");
@ -186,12 +187,10 @@ public class ClearTest extends AbstractGhidraHeadedIntegrationTest {
waitForSwing(); waitForSwing();
assertTrue(cb.goToField(addr("0x10026f0"), "Address", 0, 0)); assertTrue(cb.goToField(addr("0x10026f0"), "Address", 0, 0));
context = cb.getProvider().getActionContext(null); assertTrue(isEnabled(clearAction, cb.getProvider()));
assertTrue(clearAction.isEnabledForContext(context));
closeProgram(); closeProgram();
context = cb.getProvider().getActionContext(null); assertFalse(isEnabled(clearAction, cb.getProvider()));
assertFalse(clearAction.isEnabledForContext(context));
} }
@Test @Test
@ -204,7 +203,6 @@ public class ClearTest extends AbstractGhidraHeadedIntegrationTest {
doClearAction(true); doClearAction(true);
assertEquals(numInstructions, program.getListing().getNumInstructions()); assertEquals(numInstructions, program.getListing().getNumInstructions());
} }
@Test @Test

View file

@ -97,7 +97,8 @@ public class TableChooserDialogTest extends AbstractGhidraHeadedIntegrationTest
Program program = builder.getProgram(); Program program = builder.getProgram();
Navigatable navigatable = null; Navigatable navigatable = null;
dialog = new TableChooserDialog(tool, executor, program, "Dialog Title", navigatable); runSwing(() -> dialog =
new TableChooserDialog(tool, executor, program, "Dialog Title", navigatable));
testAction = new TestAction(); testAction = new TestAction();
dialog.addAction(testAction); dialog.addAction(testAction);

View file

@ -43,7 +43,6 @@ public class CloseToolTest extends AbstractGhidraHeadedIntegrationTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
env = new TestEnv(); env = new TestEnv();
} }
@ -62,7 +61,6 @@ public class CloseToolTest extends AbstractGhidraHeadedIntegrationTest {
assertNotNull(tool.getToolFrame()); assertNotNull(tool.getToolFrame());
closeTool(tool); closeTool(tool);
assertNull("Tool did not close after task", tool.getToolFrame()); assertNull("Tool did not close after task", tool.getToolFrame());
} }
@Test @Test

View file

@ -60,10 +60,11 @@ public class DefaultGraphDisplayProvider implements GraphDisplayProvider {
return visibleGraph; return visibleGraph;
} }
DefaultGraphDisplay display = return Swing.runNow(() -> {
Swing.runNow(() -> new DefaultGraphDisplay(this, displayCounter++)); DefaultGraphDisplay display = new DefaultGraphDisplay(this, displayCounter++);
displays.add(display); displays.add(display);
return display; return display;
});
} }
@Override @Override
@ -76,10 +77,11 @@ public class DefaultGraphDisplayProvider implements GraphDisplayProvider {
@Override @Override
public List<GraphDisplay> getAllGraphDisplays() { public List<GraphDisplay> getAllGraphDisplays() {
return displays.stream() return Swing.runNow(() -> {
.filter(d -> d.getComponent().isShowing()) return displays.stream()
.sorted((d1, d2) -> -(d1.getId() - d2.getId())) // largest/newest IDs come first .sorted((d1, d2) -> -(d1.getId() - d2.getId())) // largest/newest IDs come first
.collect(Collectors.toList()); .collect(Collectors.toList());
});
} }
@Override @Override

View file

@ -38,8 +38,7 @@ import org.apache.commons.lang3.StringUtils;
import org.junit.*; import org.junit.*;
import docking.*; import docking.*;
import docking.action.DockingActionIf; import docking.action.*;
import docking.action.ToggleDockingActionIf;
import docking.actions.DockingToolActions; import docking.actions.DockingToolActions;
import docking.dnd.GClipboard; import docking.dnd.GClipboard;
import docking.framework.DockingApplicationConfiguration; import docking.framework.DockingApplicationConfiguration;
@ -2142,6 +2141,11 @@ public abstract class AbstractDockingTest extends AbstractGenericTest {
return runSwing(() -> action.isEnabledForContext(new ActionContext())); return runSwing(() -> action.isEnabledForContext(new ActionContext()));
} }
public static boolean isEnabled(DockingActionIf action,
ActionContextProvider contextProvider) {
return runSwing(() -> action.isEnabledForContext(contextProvider.getActionContext(null)));
}
public static boolean isEnabled(AbstractButton button) { public static boolean isEnabled(AbstractButton button) {
return runSwing(() -> button.isEnabled()); return runSwing(() -> button.isEnabled());
} }

View file

@ -127,6 +127,7 @@ public class ImagePanel extends JPanel {
/** /**
* Create an NavigableImagePanel with the specified image * Create an NavigableImagePanel with the specified image
* @param image the image
*/ */
public ImagePanel(Image image) { public ImagePanel(Image image) {
initUI(); initUI();
@ -202,12 +203,24 @@ public class ImagePanel extends JPanel {
return imagePanel.getBackground(); return imagePanel.getBackground();
} }
/**
* Unused
* @param text unused
* @deprecated unused
*/
@Deprecated(since = "10.2", forRemoval = true) // unused
public void setText(String text) { public void setText(String text) {
label.setText(text); // unused
} }
/**
* Unused
* @return unused
* @deprecated unused
*/
@Deprecated(since = "10.2", forRemoval = true) // unused
public String getText() { public String getText() {
return label.getText(); return null;
} }
/** /**
@ -223,7 +236,7 @@ public class ImagePanel extends JPanel {
* nearest pre-configured magnification factor, rounding down for zoom factors less than * nearest pre-configured magnification factor, rounding down for zoom factors less than
* 1.0, and up for factors greater than 1.0. Zoom factors outside the pre-configured range * 1.0, and up for factors greater than 1.0. Zoom factors outside the pre-configured range
* are limited to the nearest range extent. * are limited to the nearest range extent.
* @param zoom * @param zoom the zoom
*/ */
public void setZoomFactor(float zoom) { public void setZoomFactor(float zoom) {
@ -270,8 +283,8 @@ public class ImagePanel extends JPanel {
} }
/** /**
* Get the default zoom level * Get the default zoom factory
* @return * @return the zoom factor
*/ */
public float getDefaultZoomFactor() { public float getDefaultZoomFactor() {
return defaultZoomFactor; return defaultZoomFactor;
@ -279,7 +292,7 @@ public class ImagePanel extends JPanel {
/** /**
* Set the default zoom level, adhering to the same set of constrains as {@link #setZoomFactor(float)} * Set the default zoom level, adhering to the same set of constrains as {@link #setZoomFactor(float)}
* @param zoom * @param zoom the zoom
* @see #setZoomFactor(float) * @see #setZoomFactor(float)
* @see #resetZoom() * @see #resetZoom()
*/ */

View file

@ -15,7 +15,7 @@
*/ */
package docking.widgets.imagepanel; package docking.widgets.imagepanel;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.*;
import java.awt.Image; import java.awt.Image;
@ -39,84 +39,92 @@ public class ImagePanelTest extends AbstractDockingTest {
Image emptyImage = ResourceManager.getImageIcon(emptyIcon).getImage(); Image emptyImage = ResourceManager.getImageIcon(emptyIcon).getImage();
imagePanel = new ImagePanel(emptyImage); imagePanel = new ImagePanel(emptyImage);
frame = new JFrame("ImagePanel Test"); runSwing(() -> {
frame.getContentPane().add(imagePanel); frame = new JFrame("ImagePanel Test");
frame.setSize(400, 400); frame.getContentPane().add(imagePanel);
frame.setSize(400, 400);
frame.setVisible(true); frame.setVisible(true);
});
} }
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
frame.dispose(); runSwing(() -> frame.dispose());
} }
private void reset() { private void reset() {
imagePanel.setZoomFactor(1.0f); setZoom(1.0f);
assertTrue("Unable to reset zoom factor", assertTrue("Unable to reset zoom factor",
Float.compare(imagePanel.getZoomFactor(), 1.0f) == 0); Float.compare(getZoom(), 1.0f) == 0);
} }
@Test @Test
public void testZoom_Neutral() { public void testZoom_Neutral() {
reset(); reset();
imagePanel.setZoomFactor(1.0f); setZoom(1.0f);
assertTrue("Zoom factor not set to 1.0x", assertTrue("Zoom factor not set to 1.0x",
Float.compare(imagePanel.getZoomFactor(), 1.0f) == 0); Float.compare(getZoom(), 1.0f) == 0);
} }
@Test @Test
public void testZoom_10Point0f() { public void testZoom_10Point0f() {
reset(); reset();
imagePanel.setZoomFactor(10.0f); setZoom(10.0f);
assertTrue("Zoom factor not set to 10.0x", assertTrue("Zoom factor not set to 10.0x",
Float.compare(imagePanel.getZoomFactor(), 10.0f) == 0); Float.compare(getZoom(), 10.0f) == 0);
} }
@Test @Test
public void testZoom_0Point05() { public void testZoom_0Point05() {
reset(); reset();
imagePanel.setZoomFactor(0.05f); setZoom(0.05f);
assertTrue("Zoom factor not set to 0.05x", assertTrue("Zoom factor not set to 0.05x",
Float.compare(imagePanel.getZoomFactor(), 0.05f) == 0); Float.compare(getZoom(), 0.05f) == 0);
} }
@Test @Test
public void testZoom_20Point0() { public void testZoom_20Point0() {
reset(); reset();
imagePanel.setZoomFactor(20.0f); setZoom(20.0f);
assertTrue("Zoom factor not set to 20.0x; should be 10.0x", assertTrue("Zoom factor not set to 20.0x; should be 10.0x",
Float.compare(imagePanel.getZoomFactor(), 10.0f) == 0); Float.compare(getZoom(), 10.0f) == 0);
} }
@Test @Test
public void testZoom_0Point001() { public void testZoom_0Point001() {
reset(); reset();
imagePanel.setZoomFactor(0.001f); setZoom(0.001f);
assertTrue("Zoom factor not set to 0.001x; should be 0.05x", assertTrue("Zoom factor not set to 0.001x; should be 0.05x",
Float.compare(imagePanel.getZoomFactor(), 0.05f) == 0); Float.compare(getZoom(), 0.05f) == 0);
} }
@Test @Test
public void testZoom_3Point75() { public void testZoom_3Point75() {
reset(); reset();
imagePanel.setZoomFactor(3.75f); setZoom(3.75f);
assertTrue("Zoom factor not set to 3.75x; should be 4.0x", assertTrue("Zoom factor not set to 3.75x; should be 4.0x",
Float.compare(imagePanel.getZoomFactor(), 4.0f) == 0); Float.compare(getZoom(), 4.0f) == 0);
} }
private void setZoom(float zoom) {
runSwing(() -> imagePanel.setZoomFactor(zoom));
}
private float getZoom() {
return runSwing(() -> imagePanel.getZoomFactor());
}
} }