Package javax.swing.plaf.basic

Source Code of javax.swing.plaf.basic.BasicListUITest

/*
*  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 Anton Avtamonov
* @version $Revision$
*/
package javax.swing.plaf.basic;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.Arrays;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JList;
import javax.swing.SwingTestCase;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.plaf.BorderUIResource;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;

public class BasicListUITest extends SwingTestCase {
    private JList list;

    private BasicListUI ui;

    private Object defaultBackground;

    private Object defaultForeground;

    private Object defaultFont;

    private Object defaultRenderer;

    private Object defaultBorder;

    public BasicListUITest(final String name) {
        super(name);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        ui = new BasicListUI();
        list = new JList();
        defaultBackground = UIManager.get("List.background");
        defaultForeground = UIManager.get("List.foreground");
        defaultFont = UIManager.get("List.font");
        defaultRenderer = UIManager.get("List.cellRenderer");
        defaultBorder = UIManager.get("List.border");
    }

    @Override
    protected void tearDown() throws Exception {
        ui = null;
        list = null;
        UIManager.put("List.background", defaultBackground);
        UIManager.put("List.foreground", defaultForeground);
        UIManager.put("List.font", defaultFont);
        UIManager.put("List.cellRenderer", defaultRenderer);
        UIManager.put("List.border", defaultBorder);
        super.tearDown();
    }

    public void testBasicListUI() throws Exception {
        assertEquals(-1, ui.cellHeight);
        assertEquals(-1, ui.cellWidth);
        assertNull(ui.cellHeights);
        assertNull(ui.rendererPane);
        assertNull(ui.list);
        assertEquals(1, ui.updateLayoutStateNeeded);
    }

    public void testBasicListUI_FocusListener() throws Exception {
        assertNull(ui.focusListener);
        int listenersCount = list.getFocusListeners().length;
        ui.installUI(list);
        if (isHarmony()) {
            assertTrue(ui.focusListener instanceof BasicListUI.FocusHandler);
        }
        assertTrue(Arrays.asList(list.getFocusListeners()).contains(ui.focusListener));
        assertEquals(listenersCount + 1, list.getFocusListeners().length);
        ui.uninstallUI(list);
        assertNull(ui.focusListener);
        assertEquals(listenersCount, list.getFocusListeners().length);
    }

    public void testBasicListUI_ListDataHandler() throws Exception {
    }

    public void testConvertRowToY() throws Exception {
        ui.installUI(list);
        assertEquals(-1, ui.convertRowToY(0));
        assertEquals(-1, ui.convertRowToY(-1));
        list.setListData(new Object[] { "a", "b" });
        ui.installUI(list);
        list.setFixedCellHeight(20);
        ui.maybeUpdateLayoutState();
        assertEquals(-1, ui.convertRowToY(-1));
        assertEquals(0, ui.convertRowToY(0));
        assertEquals(20, ui.convertRowToY(1));
    }

    public void testConvertYToRow() throws Exception {
        ui.installUI(list);
        assertEquals(-1, ui.convertYToRow(0));
        list.setListData(new Object[] { "a", "b" });
        list.setFixedCellHeight(10);
        ui.maybeUpdateLayoutState();
        assertEquals(0, ui.convertYToRow(0));
        assertEquals(0, ui.convertYToRow(5));
        assertEquals(1, ui.convertYToRow(11));
        assertEquals(1, ui.convertYToRow(19));
    }

    public void testCreateFocusListener() throws Exception {
        if (isHarmony()) {
            assertTrue(ui.createFocusListener() instanceof BasicListUI.FocusHandler);
        }
    }

    public void testCreateListDataListener() throws Exception {
        if (isHarmony()) {
            assertTrue(ui.createListDataListener() instanceof BasicListUI.ListDataHandler);
        }
    }

    public void testCreateListSelectionListener() throws Exception {
        if (isHarmony()) {
            assertTrue(ui.createListSelectionListener() instanceof BasicListUI.ListSelectionHandler);
        }
    }

    public void testCreateMouseInputListener() throws Exception {
        if (isHarmony()) {
            assertTrue(ui.createMouseInputListener() instanceof BasicListUI.MouseInputHandler);
        }
    }

    public void testCreatePropertyChangeListener() throws Exception {
        if (isHarmony()) {
            assertTrue(ui.createPropertyChangeListener() instanceof BasicListUI.PropertyChangeHandler);
        }
    }

    public void testCreateUI() throws Exception {
        BasicListUI newUI1 = (BasicListUI) BasicListUI.createUI(list);
        BasicListUI newUI2 = (BasicListUI) BasicListUI.createUI(list);
        assertNotSame(newUI1, newUI2);
    }

    public void testGetCellBounds() throws Exception {
        ui.installUI(list);
        assertNull(ui.getCellBounds(list, 0, 0));
        assertNull(ui.getCellBounds(list, -1, -1));
        list.setListData(new Object[] { "a", "b" });
        list.setFixedCellHeight(10);
        list.setFixedCellWidth(20);
        list.setSize(100, 100);
        assertEquals(new Rectangle(0, 0, 100, 10), ui.getCellBounds(list, 0, 0));
        assertEquals(new Rectangle(0, 10, 100, 10), ui.getCellBounds(list, 1, 1));
        assertEquals(new Rectangle(0, 0, 100, 20), ui.getCellBounds(list, 0, 1));
        list.setLayoutOrientation(JList.VERTICAL_WRAP);
        assertEquals(new Rectangle(0, 0, 20, 10), ui.getCellBounds(list, 0, 0));
        assertEquals(new Rectangle(0, 10, 20, 10), ui.getCellBounds(list, 1, 1));
        assertEquals(new Rectangle(0, 0, 20, 20), ui.getCellBounds(list, 1, 0));
        list.setBorder(BorderFactory.createEmptyBorder(10, 5, 20, 7));
        assertEquals(new Rectangle(5, 10, 20, 10), ui.getCellBounds(list, 0, 0));
        list.setLayoutOrientation(JList.VERTICAL);
        assertEquals(new Rectangle(5, 10, 100 - 5 - 7, 20), ui.getCellBounds(list, 0, 1));
    }

    public void testGetCellBounds_Null() throws Exception {
        testExceptionalCase(new NullPointerCase() {
            @Override
            public void exceptionalAction() throws Exception {
                ui.getCellBounds(null, -1, 9);
            }
        });
        testExceptionalCase(new NullPointerCase() {
            @Override
            public void exceptionalAction() throws Exception {
                ui.getCellBounds(null, 1, 9);
            }
        });
    }

    public void testGetMaximumSize() throws Exception {
        ui.installUI(list);
        assertEquals(ui.getPreferredSize(list), ui.getMaximumSize(list));
    }

    public void testGetMinimumSize() throws Exception {
        ui.installUI(list);
        assertEquals(ui.getPreferredSize(list), ui.getMinimumSize(list));
    }

    public void testGetPreferredSize() throws Exception {
        ui.installUI(list);
        list.setSize(100, 100);
        assertEquals(new Dimension(0, 0), ui.getPreferredSize(list));
        list.setListData(new Object[] { "a", "bbb" });
        Component renderer = new DefaultListCellRenderer().getListCellRendererComponent(list,
                "bbb", 1, false, false);
        assertEquals(new Dimension(renderer.getPreferredSize().width, 2 * renderer
                .getPreferredSize().height), ui.getPreferredSize(list));
        list.setFixedCellHeight(20);
        list.setFixedCellWidth(30);
        assertEquals(new Dimension(30, 40), ui.getPreferredSize(list));
        list.setVisibleRowCount(1);
        assertEquals(new Dimension(30, 40), ui.getPreferredSize(list));
        list.setLayoutOrientation(JList.VERTICAL_WRAP);
        assertEquals(new Dimension(60, 20), ui.getPreferredSize(list));
    }

    public void testGetRowHeight() throws Exception {
        assertEquals(-1, ui.getRowHeight(-1));
        ui.installUI(list);
        assertEquals(-1, ui.getRowHeight(0));
        list.setListData(new Object[] { "a", "bbb" });
        ui.maybeUpdateLayoutState();
        Component renderer = new DefaultListCellRenderer().getListCellRendererComponent(list,
                "bbb", 1, false, false);
        assertEquals(renderer.getPreferredSize().height, ui.getRowHeight(0));
        assertEquals(renderer.getPreferredSize().height, ui.getRowHeight(1));
        assertEquals(-1, ui.getRowHeight(2));
        list.setFixedCellHeight(30);
        ui.maybeUpdateLayoutState();
        assertEquals(30, ui.getRowHeight(0));
    }

    public void testIndexToLocation() throws Exception {
        ui.installUI(list);
        assertNull(ui.indexToLocation(list, -1));
        assertNull(ui.indexToLocation(list, 0));
        list.setListData(new Object[] { "a", "bbb" });
        Component renderer = new DefaultListCellRenderer().getListCellRendererComponent(list,
                "bbb", 1, false, false);
        assertEquals(new Point(0, 0), ui.indexToLocation(list, 0));
        assertEquals(new Point(0, renderer.getPreferredSize().height), ui.indexToLocation(list,
                1));
        list.setVisibleRowCount(1);
        list.setLayoutOrientation(JList.VERTICAL_WRAP);
        assertEquals(new Point(0, 0), ui.indexToLocation(list, 0));
        assertEquals(new Point(renderer.getPreferredSize().width, 0), ui.indexToLocation(list,
                1));
        assertNull(ui.indexToLocation(list, 2));
    }

    public void testInstallDefaults() throws Exception {
        UIManager.getDefaults().put("List.background", new ColorUIResource(Color.red));
        UIManager.getDefaults().put("List.foreground", new ColorUIResource(Color.yellow));
        Font font = new FontUIResource(list.getFont().deriveFont(100f));
        UIManager.getDefaults().put("List.font", font);
        DefaultListCellRenderer renderer = new DefaultListCellRenderer.UIResource();
        UIManager.getDefaults().put("List.cellRenderer", renderer);
        Border border = new BorderUIResource(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        UIManager.getDefaults().put("List.border", border);
        list.setUI(ui);
        ui.installDefaults();
        assertEquals(Color.red, list.getBackground());
        assertEquals(Color.yellow, list.getForeground());
        assertEquals(font, list.getFont());
        assertEquals(renderer, list.getCellRenderer());
        assertEquals(border, list.getBorder());
    }

    public void testUninstallDefaults() throws Exception {
        UIManager.getDefaults().put("List.background", new ColorUIResource(Color.red));
        UIManager.getDefaults().put("List.foreground", new ColorUIResource(Color.yellow));
        Font font = new FontUIResource(list.getFont().deriveFont(100f));
        UIManager.getDefaults().put("List.font", font);
        DefaultListCellRenderer renderer = new DefaultListCellRenderer.UIResource();
        UIManager.getDefaults().put("List.cellRenderer", renderer);
        Border border = new BorderUIResource(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        UIManager.getDefaults().put("List.border", border);
        list.setUI(ui);
        ui.installDefaults();
        ui.uninstallDefaults();
        assertNull(list.getBackground());
        assertNull(list.getForeground());
        assertNull(list.getFont());
        assertNull(list.getCellRenderer());
        assertNull(list.getBorder());
        UIManager.getDefaults().put("List.background", Color.red);
        list.setUI(ui);
        ui.uninstallDefaults();
        if (isHarmony()) {
            assertNull(list.getBackground());
        }
        assertNull(list.getForeground());
        assertNull(list.getFont());
        assertNull(list.getCellRenderer());
        assertNull(list.getBorder());
    }

    public void testInstallKeyboardActions() throws Exception {
        list.setUI(ui);
        assertNotNull(SwingUtilities.getUIInputMap(list, JComponent.WHEN_FOCUSED));
    }

    public void testUninstallKeyboardActions() throws Exception {
        list.setUI(ui);
        ui.uninstallKeyboardActions();
        assertNull(SwingUtilities.getUIInputMap(list, JComponent.WHEN_FOCUSED));
    }

    public void testInstallListeners() throws Exception {
        list.setUI(ui);
        assertNotNull(ui.focusListener);
        assertTrue(list.getFocusListeners().length > 0);
        assertNotNull(ui.listDataListener);
        assertNotNull(ui.mouseInputListener);
        assertTrue(list.getMouseListeners().length > 0);
        assertTrue(list.getMouseMotionListeners().length > 0);
        assertNotNull(ui.propertyChangeListener);
        assertTrue(list.getPropertyChangeListeners().length > 0);
    }

    public void testUninstallListeners() throws Exception {
        list.setUI(ui);
        int focusListenersCount = list.getFocusListeners().length;
        int mouseListenersCount = list.getMouseListeners().length;
        int mouseMotionListenersCount = list.getMouseMotionListeners().length;
        int propertyChangeListenersCount = list.getPropertyChangeListeners().length;
        ui.uninstallListeners();
        assertNull(ui.focusListener);
        assertTrue(focusListenersCount > list.getFocusListeners().length);
        assertNull(ui.listDataListener);
        assertNull(ui.mouseInputListener);
        assertTrue(mouseListenersCount > list.getMouseListeners().length);
        assertTrue(mouseMotionListenersCount > list.getMouseMotionListeners().length);
        assertNull(ui.propertyChangeListener);
        assertTrue(propertyChangeListenersCount > list.getPropertyChangeListeners().length);
    }

    public void testInstallUI() throws Exception {
        ui.installUI(list);
        assertNotNull(list.getBackground());
        assertNotNull(SwingUtilities.getUIInputMap(list, JComponent.WHEN_FOCUSED));
        assertNotNull(ui.rendererPane);
        assertFalse(ui.rendererPane.isVisible());
        assertEquals(2, list.getComponentCount());
    }

    public void testUninstallUI() throws Exception {
        list.setUI(ui);
        ui.uninstallUI(list);
        if (isHarmony()) {
            assertNull(list.getBackground());
        }
        assertNull(SwingUtilities.getUIInputMap(list, JComponent.WHEN_FOCUSED));
        assertEquals(0, list.getComponentCount());
    }

    public void testLocationToIndex() throws Exception {
        ui.installUI(list);
        assertEquals(-1, ui.locationToIndex(list, new Point(3, 3)));
        list.setListData(new Object[] { "aa", "bb" });
        assertEquals(0, ui.locationToIndex(list, new Point(3, 3)));
        assertEquals(1, ui.locationToIndex(list, new Point(3, 25)));
        assertEquals(0, ui.locationToIndex(list, new Point(70, 3)));
        assertEquals(1, ui.locationToIndex(list, new Point(70, 25)));
        list.setVisibleRowCount(1);
        list.setLayoutOrientation(JList.VERTICAL_WRAP);
        assertEquals(0, ui.locationToIndex(list, new Point(3, 3)));
        assertEquals(0, ui.locationToIndex(list, new Point(3, 25)));
        assertEquals(1, ui.locationToIndex(list, new Point(50, 3)));
        assertEquals(1, ui.locationToIndex(list, new Point(50, 25)));

        try {    
            BasicListUI localBasicListUI = new BasicListUI();
            javax.swing.JList localJList = new javax.swing.JList();
            localBasicListUI.locationToIndex(localJList, null);
            fail("NPE should be thrown");
        } catch (NullPointerException npe) {   
            // PASSED         
        }
    }

    public void testMaybeUpdateLayoutState() throws Exception {
        ui.installUI(list);
        assertTrue(ui.updateLayoutStateNeeded != 0);
        ui.maybeUpdateLayoutState();
        assertEquals(0, ui.updateLayoutStateNeeded);
    }

    //TODO
    public void testPaint() throws Exception {
    }

    //TODO
    public void testPaintCell() throws Exception {
    }

    public void testUpdateLayoutState() throws Exception {
        ui.installUI(list);
        assertEquals(-1, ui.cellHeight);
        assertEquals(-1, ui.cellWidth);
        assertNull(ui.cellHeights);
        list.setSize(100, 100);
        ui.maybeUpdateLayoutState();
        assertEquals(-1, ui.cellHeight);
        assertEquals(-1, ui.cellWidth);
        assertNotNull(ui.cellHeights);
        assertEquals(0, ui.cellHeights.length);
        list.setListData(new Object[] { "aa" });
        ui.maybeUpdateLayoutState();
        assertEquals(-1, ui.cellHeight);
        assertTrue(ui.cellWidth > 0);
        assertNotNull(ui.cellHeights);
        assertEquals(1, ui.cellHeights.length);
        assertTrue(ui.cellHeights[0] > 0);
        list.setLayoutOrientation(JList.VERTICAL_WRAP);
        ui.maybeUpdateLayoutState();
        assertTrue(ui.cellHeight > 0);
        assertTrue(ui.cellWidth > 0);
        assertNull(ui.cellHeights);
    }

    public void testSelectNextPreviousIndex() throws Exception {
        ui.installUI(list);
        list.setListData(new Object[] { "1", "2", "3" });
        assertTrue(list.isSelectionEmpty());
        list.setSelectedIndex(0);
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertTrue(list.isSelectedIndex(2));
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertTrue(list.isSelectedIndex(2));
        ui.selectPreviousIndex();
        assertFalse(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        ui.selectPreviousIndex();
        assertTrue(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        ui.selectPreviousIndex();
        assertTrue(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.clearSelection();
        ui.selectNextIndex();
        assertTrue(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.clearSelection();
        ui.selectPreviousIndex();
        assertTrue(list.isSelectionEmpty());
        list.setSelectionInterval(0, 1);
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.setSelectionInterval(1, 0);
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.setSelectedIndex(1);
        list.setSelectionInterval(0, 0);
        ui.selectNextIndex();
        assertFalse(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.setSelectionInterval(0, 1);
        ui.selectPreviousIndex();
        assertTrue(list.isSelectedIndex(0));
        assertTrue(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
        list.setSelectionInterval(2, 1);
        ui.selectPreviousIndex();
        assertTrue(list.isSelectedIndex(0));
        assertFalse(list.isSelectedIndex(1));
        assertFalse(list.isSelectedIndex(2));
    }
   
    /**
     * Regression test for HARMONY-2653
     * */
    public void testRGetPreferredSize() {
        try {
            BasicListUI bl = new BasicListUI();
            bl.getPreferredSize(new JFileChooser() );
            fail("No NPE thrown");
        } catch (NullPointerException e) {
            //expected
        }
    }

}
TOP

Related Classes of javax.swing.plaf.basic.BasicListUITest

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.