You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I test using findActivePopup I found that JPopupMenu with a cascade menu fails to found a popup.
On investigation (using FEST-Swing source code and debug via eclipse) the method private JPopupMenu activePopupMenu() of BasicRobot.java was doing a finder action and the found List structure had more than one item (JPopupMenu, JMenu). Thus the test for found.size() == 1 was failing. Changing the test to >= 1 resolved the problem.
Any chance this can be put into the new release of FEST-Swing?
Below is the code and a JUnit test for testing with a cascade.
BasicRobot.java
@RunsInEDT
private JPopupMenu activePopupMenu() {
List found = new ArrayList(finder().findAll(POPUP_MATCHER));
if (found.size() == 1) return (JPopupMenu)found.get(0);
return null;
}
advise to change to >= from == as the finder seems to find additional cascade jmenu in the array too
@RunsInEDT
private JPopupMenu activePopupMenu() {
List found = new ArrayList(finder().findAll(POPUP_MATCHER));
if (found.size() >= 1) return (JPopupMenu)found.get(0);
return null;
}
BasicRobot_findActivePopupMenu_Test.java
@RunsInEDT
final JPopupMenu addPopupMenuToTextFieldWithCascade() {
return createAndSetPopupMenuWithCascade(window.textField, "Luke", "Leia");
}
@RunsInEDT
public static JPopupMenu createAndSetPopupMenuWithCascade(final JComponent c, final String...items) {
return execute(new GuiQuery() { @OverRide protected JPopupMenu executeInEDT() {
JPopupMenu popupMenu = new JPopupMenu();
JMenu menu2 = new JMenu("cascade test");
menu2.add(new JMenuItem("cascade line 1"));
menu2.add(new JMenuItem("cascade line 2"));
popupMenu.add(menu2);
popupMenu.add(new JMenuItem(items[0]));
popupMenu.add(menu2);
popupMenu.add(new JMenuItem(items[1]));
c.setComponentPopupMenu(popupMenu); // causes popup-menu to display
return popupMenu;
}
});
}
@test
public void should_return_active_popupMenu_cascadingPopup() {
addPopupMenuToTextFieldWithCascade();
robot.showPopupMenu(window.textField);
// wait for 2nd cascade menu to show
pause(1000);
JPopupMenu found = robot.findActivePopupMenu();
MenuElement[] meArr = found.getSubElements();
Component comp = meArr[0].getComponent();
assertThat("cascade line 1").isEqualTo(((JMenuItem)comp).getText());
}
The text was updated successfully, but these errors were encountered:
When I test using findActivePopup I found that JPopupMenu with a cascade menu fails to found a popup.
On investigation (using FEST-Swing source code and debug via eclipse) the method private JPopupMenu activePopupMenu() of BasicRobot.java was doing a finder action and the found List structure had more than one item (JPopupMenu, JMenu). Thus the test for found.size() == 1 was failing. Changing the test to >= 1 resolved the problem.
Any chance this can be put into the new release of FEST-Swing?
Below is the code and a JUnit test for testing with a cascade.
BasicRobot.java
@RunsInEDT
private JPopupMenu activePopupMenu() {
List found = new ArrayList(finder().findAll(POPUP_MATCHER));
if (found.size() == 1) return (JPopupMenu)found.get(0);
return null;
}
advise to change to >= from == as the finder seems to find additional cascade jmenu in the array too
@RunsInEDT
private JPopupMenu activePopupMenu() {
List found = new ArrayList(finder().findAll(POPUP_MATCHER));
if (found.size() >= 1) return (JPopupMenu)found.get(0);
return null;
}
BasicRobot_findActivePopupMenu_Test.java
@RunsInEDT
final JPopupMenu addPopupMenuToTextFieldWithCascade() {
return createAndSetPopupMenuWithCascade(window.textField, "Luke", "Leia");
}
@RunsInEDT
public static JPopupMenu createAndSetPopupMenuWithCascade(final JComponent c, final String...items) {
return execute(new GuiQuery() {
@OverRide protected JPopupMenu executeInEDT() {
JPopupMenu popupMenu = new JPopupMenu();
@test
public void should_return_active_popupMenu_cascadingPopup() {
addPopupMenuToTextFieldWithCascade();
robot.showPopupMenu(window.textField);
}
The text was updated successfully, but these errors were encountered: