Package javax.swing

Source Code of javax.swing.JPopupMenuTest

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
/**
* @author Alexander T. Simbirtsev
*/
package javax.swing;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeListener;
import java.util.EventListener;
import javax.accessibility.AccessibleRole;
import javax.swing.event.MenuEvent;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.plaf.PopupMenuUI;
import javax.swing.plaf.basic.BasicPopupMenuUI;

public class JPopupMenuTest extends SwingTestCase {
    public static class MyAction extends AbstractAction {
        private static final long serialVersionUID = 1L;

        final String command = "dnammoc";

        final KeyStroke accelerator = KeyStroke.getKeyStroke('a');

        public boolean performed = false;

        public MyAction(final String text, final Icon icon) {
            super(text, icon);
            putValue(Action.ACTION_COMMAND_KEY, command);
            putValue(Action.ACCELERATOR_KEY, accelerator);
        }

        public void actionPerformed(final ActionEvent e) {
            performed = true;
        }
    };

    class ConcretePopupMenuListener implements PopupMenuListener {
        public Object event;

        public Object src;

        public void menuSelected(MenuEvent e) {
            event = "selected";
            src = e.getSource();
        }

        public void popupMenuCanceled(PopupMenuEvent e) {
            event = "canceled";
            src = e.getSource();
        }

        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
            event = "invisible";
            src = e.getSource();
        }

        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
            event = "visible";
            src = e.getSource();
        }

        public void reset() {
            event = null;
            src = null;
        }
    };

    protected JPopupMenu popup;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        popup = new JPopupMenu();
    }

    @Override
    protected void tearDown() throws Exception {
        popup = null;
        super.tearDown();
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getAccessibleContext()'
     */
    public void testGetAccessibleContext() {
        boolean assertedValue = (popup.getAccessibleContext() != null && popup
                .getAccessibleContext().getClass().getName().equals(
                        "javax.swing.JPopupMenu$AccessibleJPopupMenu"));
        assertTrue("AccessibleContext created properly ", assertedValue);
        assertEquals("AccessibleRole", AccessibleRole.POPUP_MENU, popup.getAccessibleContext()
                .getAccessibleRole());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setVisible(boolean)'
     */
    public void testSetIsVisible() {
        PropertyChangeController listener1 = new PropertyChangeController();
        popup.addPropertyChangeListener(listener1);
        ConcretePopupMenuListener listener2 = new ConcretePopupMenuListener();
        popup.addPopupMenuListener(listener2);
        assertNull(popup.getParent());
        assertFalse(popup.isVisible());
        assertNull(SwingUtilities.getWindowAncestor(popup));
        popup.setVisible(true);
        assertNotNull(SwingUtilities.getWindowAncestor(popup));
        Container ancestor = popup.getParent();
        assertEquals("event fired properly ", "visible", listener2.event);
        assertEquals("source ", popup, listener2.src);
        listener2.reset();
        listener1.checkPropertyFired(popup, "visible", Boolean.FALSE, Boolean.TRUE);
        listener1.checkPropertyFired(popup, "ancestor", null, ancestor);
        assertNotNull(ancestor);
        assertTrue(popup.isVisible());
        listener1.reset();
        popup.setVisible(false);
        assertNull(SwingUtilities.getWindowAncestor(popup));
        assertEquals("event fired properly ", "invisible", listener2.event);
        assertEquals("source ", popup, listener2.src);
        listener2.reset();
        listener1.checkPropertyFired(popup, "visible", Boolean.TRUE, Boolean.FALSE);
        listener1.checkPropertyFired(popup, "ancestor", ancestor, null);
        assertNull(popup.getParent());
        assertFalse(popup.isVisible());
        listener1.reset();
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setLocation(int, int)'
     */
    @SuppressWarnings("deprecation")
    public void testSetLocationIntInt() {
        JFrame frame = new JFrame();
        JMenuBar menuBar = new JMenuBar();
        JMenu menu1 = new JMenu();
        JMenu menu2 = new JMenu();
        frame.getContentPane().add(menuBar);
        menuBar.add(menu1);
        menuBar.add(menu2);
        popup = menu1.getPopupMenu();
        popup.setLocation(100, 200);
        assertEquals(new Point(0, 0), popup.getLocation());
        popup.setVisible(true);
        assertEquals(new Point(100, 200), popup.getLocationOnScreen());
        popup.setLocation(10, 20);
        assertEquals(new Point(0, 0), popup.getLocation());
        assertEquals(new Point(10, 20), popup.getLocationOnScreen());
        popup.setInvoker(menu2);
        popup.setLocation(100, 200);
        assertEquals(new Point(0, 0), popup.getLocation());
        assertEquals(new Point(100, 200), popup.getLocationOnScreen());
        frame.pack();
        frame.show();
        popup.setVisible(true);
        popup.setLocation(10, 20);
        assertEquals(new Point(0, 0), popup.getLocation());
        assertEquals(new Point(10, 20), popup.getLocationOnScreen());
        popup.setInvoker(menu2);
        popup.setLocation(100, 200);
        assertEquals(new Point(0, 0), popup.getLocation());
        assertEquals(new Point(100, 200), popup.getLocationOnScreen());
        frame.dispose();
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.show(Component, int, int)'
     */
    @SuppressWarnings("deprecation")
    public void testShowComponentIntInt() {
        JFrame frame = new JFrame();
        JMenuBar menuBar = new JMenuBar();
        JMenu menu1 = new JMenu();
        JMenu menu2 = new JMenu();
        frame.getContentPane().add(menuBar);
        menuBar.add(menu1);
        menuBar.add(menu2);
        popup = menu1.getPopupMenu();
        popup.setInvoker(new JButton());
        assertNotNull(popup.getInvoker());
        popup.show(null, 111, 222);
        assertNull(popup.getInvoker());
        assertEquals(new Point(111, 222), popup.getLocationOnScreen());
        assertTrue(popup.isVisible());
        assertTrue(popup.isShowing());
        frame.pack();
        frame.show();
        popup.show(menu2, 333, 111);
        assertSame(menu2, popup.getInvoker());
        assertFalse(popup.getLocationOnScreen().equals(new Point(333, 111)));
        assertTrue(popup.isVisible());
        assertTrue(popup.isShowing());
        frame.dispose();
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getComponentIndex(Component)'
     */
    public void testGetComponentIndex() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        JMenuItem item3 = new JMenuItem();
        popup.add(item1);
        popup.add(item2);
        assertEquals(0, popup.getComponentIndex(item1));
        assertEquals(1, popup.getComponentIndex(item2));
        assertEquals(-1, popup.getComponentIndex(item3));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.remove(int)'
     */
    public void testRemoveInt() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        popup.add(item1);
        popup.add(item2);
        assertEquals(2, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        assertSame(item2, popup.getComponent(1));
        try {
            popup.remove(5);
            fail("no exception has been thrown");
        } catch (IllegalArgumentException e) {
        }
        try {
            popup.remove(-5);
            fail("no exception has been thrown");
        } catch (IllegalArgumentException e) {
        }
        popup.remove(0);
        assertEquals(1, popup.getComponentCount());
        assertSame(item2, popup.getComponent(0));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getUIClassID()'
     */
    public void testGetUIClassID() {
        assertEquals("PopupMenuUI", popup.getUIClassID());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.JPopupMenu()'
     */
    public void testJPopupMenu() {
        assertNull("text ", popup.getLabel());
        assertTrue(popup.getSelectionModel() instanceof DefaultSingleSelectionModel);
        assertEquals(0, popup.getComponentCount());
        assertTrue(popup.isFocusable());
        assertEquals(popup, popup.getComponent());
        assertNull(popup.getInvoker());
        assertEquals(0, popup.getSubElements().length);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.JPopupMenu(String)'
     */
    public void testJPopupMenuString() {
        String label = "label";
        popup = new JPopupMenu(label);
        assertEquals("text ", label, popup.getLabel());
        assertTrue(popup.getSelectionModel() instanceof DefaultSingleSelectionModel);
        assertEquals(0, popup.getComponentCount());
        assertTrue(popup.isFocusable());
        assertEquals(popup, popup.getComponent());
        assertNull(popup.getInvoker());
        assertEquals(0, popup.getSubElements().length);
        popup = new JPopupMenu(null);
        assertNull("text ", popup.getLabel());
        assertTrue(popup.getSelectionModel() instanceof DefaultSingleSelectionModel);
        assertEquals(0, popup.getComponentCount());
        assertTrue(popup.isFocusable());
        assertEquals(popup, popup.getComponent());
        assertNull(popup.getInvoker());
        assertEquals(0, popup.getSubElements().length);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.JPopupMenu()'
     */
    public void testJPopupMenuSeparator() {
        JSeparator separator = new JPopupMenu.Separator();
        assertEquals("PopupMenuSeparatorUI", separator.getUIClassID());

        // Regression test for HARMONY-2631
        assertFalse(separator.isFocusable());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.add(Action)'
     */
    public void testAddAction() {
        Icon icon = new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY));
        String text = "texttext";
        MyAction action = new MyAction(text, icon);
        JMenuItem menuItem = popup.add(action);
        assertEquals(1, popup.getComponentCount());
        assertTrue(popup.getComponent(0) instanceof JMenuItem);
        menuItem = ((JMenuItem) popup.getComponent(0));
        assertEquals("icon ", icon, menuItem.getIcon());
        assertEquals("text ", text, menuItem.getText());
        assertSame(action, menuItem.getAction());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.add(String)'
     */
    public void testAddString() {
        String label1 = "label1";
        String label2 = "label1";
        popup.add((String) null);
        assertEquals(1, popup.getComponentCount());
        assertTrue(popup.getComponent(0) instanceof JMenuItem);
        assertEquals("", ((JMenuItem) popup.getComponent(0)).getText());
        popup.add(label1);
        assertEquals(2, popup.getComponentCount());
        assertTrue(popup.getComponent(1) instanceof JMenuItem);
        assertEquals(label1, ((JMenuItem) popup.getComponent(1)).getText());
        popup.add(label2);
        assertEquals(3, popup.getComponentCount());
        assertTrue(popup.getComponent(2) instanceof JMenuItem);
        assertEquals(label2, ((JMenuItem) popup.getComponent(2)).getText());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.add(JMenuItem)'
     */
    public void testAddJMenuItem() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        popup.add(item1);
        assertEquals(1, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        popup.add(item2);
        assertEquals(2, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        assertSame(item2, popup.getComponent(1));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.addPopupMenuListener(PopupMenuListener)'
     */
    public void testAddGetRemovePopupMenuListener() {
        PopupMenuListener listener1 = new ConcretePopupMenuListener();
        PopupMenuListener listener2 = new ConcretePopupMenuListener();
        PopupMenuListener listener3 = new ConcretePopupMenuListener();
        EventListener[] listenersArray = null;
        listenersArray = popup.getPopupMenuListeners();
        int initialValue = listenersArray.length;
        popup.addPopupMenuListener(listener1);
        popup.addPopupMenuListener(listener2);
        popup.addPopupMenuListener(listener2);
        listenersArray = popup.getPopupMenuListeners();
        assertEquals(initialValue + 3, listenersArray.length);
        popup.removePopupMenuListener(listener1);
        popup.addPopupMenuListener(listener3);
        popup.addPopupMenuListener(listener3);
        listenersArray = popup.getPopupMenuListeners();
        assertEquals(initialValue + 4, listenersArray.length);
        popup.removePopupMenuListener(listener3);
        popup.removePopupMenuListener(listener3);
        listenersArray = popup.getPopupMenuListeners();
        assertEquals(initialValue + 2, listenersArray.length);
        popup.removePopupMenuListener(listener2);
        popup.removePopupMenuListener(listener2);
        listenersArray = popup.getPopupMenuListeners();
        assertEquals(initialValue, listenersArray.length);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.addSeparator()'
     */
    public void testAddSeparator() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        popup.add(item1);
        assertEquals(1, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        popup.addSeparator();
        assertEquals(2, popup.getComponentCount());
        assertTrue(popup.getComponent(1) instanceof JPopupMenu.Separator);
        popup.add(item2);
        assertEquals(3, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        assertSame(item2, popup.getComponent(2));
        popup.addSeparator();
        assertEquals(4, popup.getComponentCount());
        assertTrue(popup.getComponent(3) instanceof JPopupMenu.Separator);
        assertNotSame(popup.getComponent(1), popup.getComponent(3));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.createActionChangeListener(JMenuItem)'
     */
    public void testCreateActionChangeListener() {
        AbstractAction action1 = new AbstractAction() {
            private static final long serialVersionUID = 1L;

            public void actionPerformed(ActionEvent e) {
            }
        };
        JMenuItem item1 = new JMenuItem(action1);
        JMenuItem item2 = new JMenuItem();
        PropertyChangeListener listener1 = popup.createActionChangeListener(item2);
        PropertyChangeListener listener2 = popup.createActionChangeListener(item1);
        assertNotNull(listener1);
        assertNotNull(listener2);
        assertNotSame(listener1, listener2);
        String text = "textxetxet";
        action1.putValue(Action.NAME, text);
        assertEquals(text, item1.getText());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.createActionComponent(Action)'
     */
    public void testCreateActionComponent() {
        Icon icon = new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY));
        String text = "texttext";
        MyAction action = new MyAction(text, icon);
        JMenuItem menuItem = popup.createActionComponent(action);
        assertEquals("icon ", icon, menuItem.getIcon());
        assertEquals("text ", text, menuItem.getText());
        assertNull("action", menuItem.getAction());
        assertEquals("command ", text, menuItem.getActionCommand());
        assertFalse("selected ", menuItem.isSelected());
        assertTrue("enabled ", menuItem.isEnabled());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.firePopupMenuCanceled()'
     */
    public void testFirePopupMenuCanceled() {
        ConcretePopupMenuListener listener1 = new ConcretePopupMenuListener();
        ConcretePopupMenuListener listener2 = new ConcretePopupMenuListener();
        popup.addPopupMenuListener(listener1);
        popup.addPopupMenuListener(listener2);
        popup.firePopupMenuCanceled();
        assertEquals("event fired properly ", "canceled", listener1.event);
        assertEquals("event fired properly ", "canceled", listener2.event);
        assertEquals("source ", popup, listener1.src);
        assertEquals("source ", popup, listener2.src);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.firePopupMenuWillBecomeInvisible()'
     */
    public void testFirePopupMenuWillBecomeInvisible() {
        ConcretePopupMenuListener listener1 = new ConcretePopupMenuListener();
        ConcretePopupMenuListener listener2 = new ConcretePopupMenuListener();
        popup.addPopupMenuListener(listener1);
        popup.addPopupMenuListener(listener2);
        popup.firePopupMenuWillBecomeInvisible();
        assertEquals("event fired properly ", "invisible", listener1.event);
        assertEquals("event fired properly ", "invisible", listener2.event);
        assertEquals("source ", popup, listener1.src);
        assertEquals("source ", popup, listener2.src);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.firePopupMenuWillBecomeVisible()'
     */
    public void testFirePopupMenuWillBecomeVisible() {
        ConcretePopupMenuListener listener1 = new ConcretePopupMenuListener();
        ConcretePopupMenuListener listener2 = new ConcretePopupMenuListener();
        popup.addPopupMenuListener(listener1);
        popup.addPopupMenuListener(listener2);
        popup.firePopupMenuWillBecomeVisible();
        assertEquals("event fired properly ", "visible", listener1.event);
        assertEquals("event fired properly ", "visible", listener2.event);
        assertEquals("source ", popup, listener1.src);
        assertEquals("source ", popup, listener2.src);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getComponent()'
     */
    public void testGetComponent() {
        assertSame(popup, popup.getComponent());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getComponent(int)'
     */
    @SuppressWarnings("deprecation")
    public void testGetComponentAtIndex() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        popup.add(item1);
        assertEquals(1, popup.getComponentCount());
        assertSame(item1, popup.getComponentAtIndex(0));
        popup.add(item2);
        assertEquals(2, popup.getComponentCount());
        assertSame(item1, popup.getComponentAtIndex(0));
        assertSame(item2, popup.getComponentAtIndex(1));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getMargin()'
     */
    public void testGetMargin() {
        assertEquals(new Insets(0, 0, 0, 0), popup.getMargin());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getSubElements()'
     */
    public void testGetSubElements() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        JMenuItem item3 = new JMenuItem();
        assertEquals(0, popup.getSubElements().length);
        popup.add(item1);
        assertEquals(1, popup.getSubElements().length);
        assertSame(item1, popup.getSubElements()[0]);
        popup.add(item2);
        popup.addSeparator();
        assertEquals(2, popup.getSubElements().length);
        assertSame(item1, popup.getSubElements()[0]);
        assertSame(item2, popup.getSubElements()[1]);
        popup.add(item3);
        assertEquals(3, popup.getSubElements().length);
        assertSame(item1, popup.getSubElements()[0]);
        assertSame(item2, popup.getSubElements()[1]);
        assertSame(item3, popup.getSubElements()[2]);
        popup.addSeparator();
        assertEquals(3, popup.getSubElements().length);
        assertSame(item1, popup.getSubElements()[0]);
        assertSame(item2, popup.getSubElements()[1]);
        assertSame(item3, popup.getSubElements()[2]);
        item1.setEnabled(false);
        assertEquals(3, popup.getSubElements().length);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getUI()'
     */
    public void testSetGetUI() {
        assertNotNull("ui is returned ", popup.getUI());
        PopupMenuUI ui = new BasicPopupMenuUI();
        popup.setUI(ui);
        assertSame("ui is returned ", ui, popup.getUI());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.insert(Component, int)'
     */
    public void testInsertComponentInt() {
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        Component item3 = new JPanel();
        popup.insert(item1, 0);
        assertEquals(1, popup.getComponentCount());
        assertSame(item1, popup.getComponent(0));
        popup.insert(item2, 0);
        assertEquals(2, popup.getComponentCount());
        assertSame(item2, popup.getComponent(0));
        assertSame(item1, popup.getComponent(1));
        popup.insert(item3, 1);
        assertEquals(3, popup.getComponentCount());
        assertSame(item2, popup.getComponent(0));
        assertSame(item3, popup.getComponent(1));
        assertSame(item1, popup.getComponent(2));
        popup.insert(item3, 16);
        assertEquals(3, popup.getComponentCount());
        try {
            popup.insert(item3, -6);
            fail("no exception has been thrown");
        } catch (IllegalArgumentException e) {
        }
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.insert(Action, int)'
     */
    public void testInsertActionInt() {
        Icon icon = new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY));
        String text = "texttext";
        MyAction action1 = new MyAction(text, icon);
        MyAction action2 = new MyAction(text, icon);
        popup.insert(action1, 0);
        assertEquals(1, popup.getComponentCount());
        assertTrue(popup.getComponent(0) instanceof JMenuItem);
        JMenuItem menuItem = ((JMenuItem) popup.getComponent(0));
        assertEquals("icon ", icon, menuItem.getIcon());
        assertEquals("text ", text, menuItem.getText());
        popup.insert(action2, 1);
        assertEquals(2, popup.getComponentCount());
        assertTrue(popup.getComponent(0) instanceof JMenuItem);
        menuItem = ((JMenuItem) popup.getComponent(1));
        assertEquals("icon ", icon, menuItem.getIcon());
        assertEquals("text ", text, menuItem.getText());
        popup.insert(action1, 16);
        assertEquals(3, popup.getComponentCount());
        assertTrue(popup.getComponent(2) instanceof JMenuItem);
        menuItem = ((JMenuItem) popup.getComponent(2));
        assertEquals("icon ", icon, menuItem.getIcon());
        assertEquals("text ", text, menuItem.getText());
        try {
            popup.insert(action1, -3);
            fail("no exception has been thrown");
        } catch (IllegalArgumentException e) {
        }
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.isBorderPainted()'
     */
    public void testSetIsBorderPainted() {
        assertTrue(popup.isBorderPainted());
        popup.setBorderPainted(false);
        assertFalse(popup.isBorderPainted());
        popup.setBorderPainted(true);
        assertTrue(popup.isBorderPainted());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.isPopupTrigger(MouseEvent)'
     */
    public void testIsPopupTrigger() {
        class MyPopupMenuUI extends PopupMenuUI {
            public boolean value = false;

            @Override
            public boolean isPopupTrigger(final MouseEvent event) {
                return value;
            }
        }
        ;
        MyPopupMenuUI fakeUI = new MyPopupMenuUI();
        popup.setUI(fakeUI);
        assertSame(fakeUI, popup.getUI());
        fakeUI.value = true;
        assertEquals(fakeUI.value, popup.isPopupTrigger(null));
        fakeUI.value = false;
        assertEquals(fakeUI.value, popup.isPopupTrigger(null));
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.menuSelectionChanged(boolean)'
     */
    @SuppressWarnings("deprecation")
    public void testMenuSelectionChanged() {
        JFrame frame = new JFrame();
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu();
        frame.getContentPane().add(menuBar);
        menuBar.add(menu);
        popup = menu.getPopupMenu();
        popup.menuSelectionChanged(true);
        assertFalse(popup.isShowing());
        assertFalse(popup.isVisible());
        frame.pack();
        frame.show();
        popup.menuSelectionChanged(true);
        assertTrue(popup.isShowing());
        assertTrue(popup.isVisible());
        popup.menuSelectionChanged(false);
        assertFalse(popup.isShowing());
        assertFalse(popup.isVisible());
        frame.dispose();
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.pack()'
     */
    public void testPack() {
        JButton button1 = new JButton();
        JButton button2 = new JButton();
        popup.add(button1);
        popup.add(button2);
        popup.pack();
        Dimension size = popup.getMinimumSize();
        assertEquals(size, popup.getMinimumSize());
        assertEquals(size, popup.getPreferredSize());
        assertEquals(size, popup.getMaximumSize());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.processKeyEvent(KeyEvent, MenuElement[], MenuSelectionManager)'
     * as method has an empty body test is empty either
     */
    public void testProcessKeyEventKeyEventMenuElementArrayMenuSelectionManager() {
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setDefaultLightWeightPopupEnabled(boolean)'
     */
    public void testSetGetDefaultLightWeightPopupEnabled() {
        assertTrue(JPopupMenu.getDefaultLightWeightPopupEnabled());
        JPopupMenu.setDefaultLightWeightPopupEnabled(false);
        assertFalse(JPopupMenu.getDefaultLightWeightPopupEnabled());
        JPopupMenu.setDefaultLightWeightPopupEnabled(true);
        assertTrue(JPopupMenu.getDefaultLightWeightPopupEnabled());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getInvoker()'
     */
    public void testGetInvoker() {
        assertNull(popup.getInvoker());
        JMenu menu = new JMenu();
        assertSame(menu, menu.getPopupMenu().getInvoker());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setInvoker(Component)'
     */
    public void testSetInvoker() {
        Component invoker1 = new JButton();
        Component invoker2 = new JLabel();
        popup.setInvoker(invoker1);
        assertEquals("invoker", invoker1, popup.getInvoker());
        popup.setInvoker(invoker2);
        assertEquals("invoker", invoker2, popup.getInvoker());
        popup.setInvoker(invoker2);
        assertEquals("invoker", invoker2, popup.getInvoker());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.getLabel()'
     */
    public void testGetLabel() {
        assertNull(popup.getLabel());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setLabel(String)'
     */
    public void testSetLabel() {
        PropertyChangeController listener = new PropertyChangeController();
        String label1 = "dog is dog";
        String label2 = "0xdeadbeef";
        popup.setLabel(null);
        popup.addPropertyChangeListener(listener);
        popup.setLabel(label1);
        listener.checkPropertyFired(popup, "label", null, label1);
        assertEquals("label", label1, popup.getLabel());
        listener.reset();
        popup.setLabel(label2);
        listener.checkPropertyFired(popup, "label", label1, label2);
        assertEquals("label", label2, popup.getLabel());
        listener.reset();
        popup.setLabel(label2);
        assertFalse("event's not been fired ", listener.isChanged());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setLightWeightPopupEnabled(boolean)'
     */
    public void testSetIsLightWeightPopupEnabled() {
        assertTrue(JPopupMenu.getDefaultLightWeightPopupEnabled());
        JPopupMenu menu = new JPopupMenu();
        assertTrue(menu.isLightWeightPopupEnabled());
        menu.setLightWeightPopupEnabled(false);
        assertFalse(menu.isLightWeightPopupEnabled());
        JPopupMenu.setDefaultLightWeightPopupEnabled(false);
        menu = new JPopupMenu();
        assertFalse(menu.isLightWeightPopupEnabled());
        menu.setLightWeightPopupEnabled(true);
        assertTrue(menu.isLightWeightPopupEnabled());
        JPopupMenu.setDefaultLightWeightPopupEnabled(true);
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setPopupSize(int, int)'
     */
    public void testSetPopupSizeIntInt() {
        int height = 100;
        int width = 200;
        popup.setPopupSize(height, width);
        assertEquals(new Dimension(height, width), popup.getPreferredSize());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setPopupSize(Dimension)'
     */
    public void testSetPopupSizeDimension() {
        int height = 100;
        int width = 200;
        Dimension oldPrefs = popup.getPreferredSize();
        popup.setPopupSize(new Dimension(height, width));
        assertEquals(new Dimension(height, width), popup.getPreferredSize());
        popup.setPopupSize(null);
        assertEquals(oldPrefs, popup.getPreferredSize());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setSelected(Component)'
     */
    public void testSetSelected() {
        SingleSelectionModel selectionModel1 = new DefaultSingleSelectionModel();
        JMenuItem item1 = new JMenuItem();
        JMenuItem item2 = new JMenuItem();
        popup.setSelectionModel(null);
        popup.add(item1);
        popup.add(item2);
        popup.setSelectionModel(selectionModel1);
        popup.setSelected(item1);
        assertEquals("selection", 0, selectionModel1.getSelectedIndex());
        popup.setSelected(item2);
        assertEquals("selection", 1, selectionModel1.getSelectedIndex());
        popup.setSelected(new JButton());
        assertEquals("selection", -1, selectionModel1.getSelectedIndex());
    }

    /*
     * Test method for 'javax.swing.JPopupMenu.setSelectionModel(SingleSelectionModel)'
     */
    public void testSetGetSelectionModel() {
        SingleSelectionModel selectionModel1 = new DefaultSingleSelectionModel();
        SingleSelectionModel selectionModel2 = new DefaultSingleSelectionModel();
        popup.setSelectionModel(null);
        popup.setSelectionModel(selectionModel1);
        assertEquals("selectionModel", selectionModel1, popup.getSelectionModel());
        popup.setSelectionModel(selectionModel2);
        assertEquals("selectionModel", selectionModel2, popup.getSelectionModel());
    }
}
TOP

Related Classes of javax.swing.JPopupMenuTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.