Package javax.swing.tree

Source Code of javax.swing.tree.DefaultTreeModelTest$ConcreteTreeModelListener

/*
*  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
* @version $Revision$
*/
package javax.swing.tree;

import java.beans.PropertyChangeListener;
import java.util.Arrays;
import java.util.EventListener;
import javax.swing.SwingTestCase;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.SwingPropertyChangeSupportTest.FindableListener;

public class DefaultTreeModelTest extends SwingTestCase {
    protected DefaultTreeModel model = null;

    protected DefaultMutableTreeNode root = null;

    class ConcreteTreeModelListener extends FindableListener implements TreeModelListener {
        public TreeModelEvent event = null;

        public String type = null;

        public boolean fired = false;

        private final boolean debugOutput;

        ConcreteTreeModelListener() {
            super();
            debugOutput = false;
        }

        ConcreteTreeModelListener(final boolean debugOutput) {
            super();
            this.debugOutput = debugOutput;
        }

        @Override
        public void reset() {
            event = null;
            type = null;
            fired = false;
        }

        public void treeNodesChanged(TreeModelEvent e) {
            event = e;
            fired = true;
            type = "changed";
            if (debugOutput) {
                System.out.println("changed: " + e);
            }
        }

        public void treeNodesInserted(TreeModelEvent e) {
            event = e;
            fired = true;
            type = "inserted";
            if (debugOutput) {
                System.out.println("inserted: " + e);
            }
        }

        public void treeNodesRemoved(TreeModelEvent e) {
            event = e;
            fired = true;
            type = "removed";
            if (debugOutput) {
                System.out.println("removed: " + e);
            }
        }

        public void treeStructureChanged(TreeModelEvent e) {
            event = e;
            fired = true;
            type = "structure";
            if (debugOutput) {
                System.out.println("structure changed: " + e);
            }
        }

        public void checkEvent(Object source, Object[] path, int[] childIndices,
                Object[] children) {
            assertNotNull("event", event);
            assertEquals("source", source, event.getSource());
            assertTrue("path", Arrays.equals(path, event.getPath()));
            assertTrue("childIndices", Arrays.equals(childIndices, event.getChildIndices()));
            assertTrue("children", Arrays.equals(children, event.getChildren()));
        }
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        root = new DefaultMutableTreeNode("root");
        model = new DefaultTreeModel(root);
    }

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

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.DefaultTreeModel(TreeNode)'
     */
    public void testDefaultTreeModelTreeNode() {
        TreeNode node = new DefaultMutableTreeNode(null);
        model = new DefaultTreeModel(node);
        assertEquals(node, model.root);
        assertFalse(model.asksAllowsChildren);
        assertNotNull(model.listenerList);
        model = new DefaultTreeModel(null);
        assertNull(model.root);
        assertFalse(model.asksAllowsChildren);
        assertNotNull(model.listenerList);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.DefaultTreeModel(TreeNode, boolean)'
     */
    public void testDefaultTreeModelTreeNodeBoolean() {
        TreeNode node = new DefaultMutableTreeNode(null);
        model = new DefaultTreeModel(node, true);
        assertEquals(node, model.root);
        assertTrue(model.asksAllowsChildren);
        assertNotNull(model.listenerList);
        model = new DefaultTreeModel(null, false);
        assertNull(model.root);
        assertFalse(model.asksAllowsChildren);
        assertNotNull(model.listenerList);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.setAsksAllowsChildren(boolean)'
     */
    public void testSetAsksAllowsChildren() {
        TreeNode node = new DefaultMutableTreeNode(null);
        model = new DefaultTreeModel(node);
        model.setAsksAllowsChildren(true);
        assertTrue(model.asksAllowsChildren);
        model.setAsksAllowsChildren(false);
        assertFalse(model.asksAllowsChildren);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.asksAllowsChildren()'
     */
    public void testSetGetAsksAllowsChildren() {
        TreeNode node = new DefaultMutableTreeNode(null);
        model = new DefaultTreeModel(node);
        model.asksAllowsChildren = true;
        assertTrue(model.asksAllowsChildren());
        model.asksAllowsChildren = false;
        assertFalse(model.asksAllowsChildren());
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.addTreeModelListener(TreeModelListener)'
     */
    public void testAddTreeModelListener() {
        ConcreteTreeModelListener listener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener listener2 = new ConcreteTreeModelListener();
        TreeModelListener[] listenersArray = null;
        model.addTreeModelListener(listener1);
        listenersArray = model.getTreeModelListeners();
        assertTrue(listenersArray.length == 1);
        assertEquals(1, model.listenerList.getListeners(TreeModelListener.class).length);
        assertEquals(1, model.getListeners(TreeModelListener.class).length);
        assertTrue(listener1.findMe(listenersArray) > 0);
        model.addTreeModelListener(listener2);
        listenersArray = model.getTreeModelListeners();
        assertEquals(2, listenersArray.length);
        assertTrue(listener1.findMe(listenersArray) > 0);
        assertTrue(listener2.findMe(listenersArray) > 0);
        model.addTreeModelListener(listener2);
        listenersArray = model.getTreeModelListeners();
        assertEquals(3, listenersArray.length);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.removeTreeModelListener(TreeModelListener)'
     */
    public void testRemoveTreeModelListener() {
        ConcreteTreeModelListener changeListener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener changeListener2 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener changeListener3 = new ConcreteTreeModelListener();
        TreeModelListener[] listenersArray = null;
        model.addTreeModelListener(changeListener1);
        model.addTreeModelListener(changeListener2);
        model.addTreeModelListener(changeListener3);
        listenersArray = model.getTreeModelListeners();
        assertEquals(3, listenersArray.length);
        assertEquals(1, changeListener1.findMe(listenersArray));
        assertEquals(1, changeListener2.findMe(listenersArray));
        assertEquals(1, changeListener3.findMe(listenersArray));
        model.removeTreeModelListener(changeListener2);
        listenersArray = model.getTreeModelListeners();
        assertEquals(2, listenersArray.length);
        assertEquals(1, changeListener1.findMe(listenersArray));
        assertEquals(0, changeListener2.findMe(listenersArray));
        assertEquals(1, changeListener3.findMe(listenersArray));
        model.removeTreeModelListener(changeListener1);
        listenersArray = model.getTreeModelListeners();
        assertEquals(1, listenersArray.length);
        assertEquals(1, changeListener3.findMe(listenersArray));
        model.removeTreeModelListener(changeListener3);
        listenersArray = model.getTreeModelListeners();
        assertEquals(0, listenersArray.length);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getTreeModelListeners()'
     */
    public void testGetTreeModelListeners() {
        ConcreteTreeModelListener changeListener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener changeListener2 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener changeListener3 = new ConcreteTreeModelListener();
        TreeModelListener[] listenersArray = null;
        listenersArray = model.getTreeModelListeners();
        assertTrue(listenersArray != null && listenersArray.length == 0);
        model.addTreeModelListener(changeListener1);
        model.addTreeModelListener(changeListener2);
        model.addTreeModelListener(changeListener3);
        model.addTreeModelListener(changeListener2);
        listenersArray = model.getTreeModelListeners();
        assertTrue(listenersArray.length == 4);
        assertTrue(changeListener1.findMe(listenersArray) == 1);
        assertTrue(changeListener2.findMe(listenersArray) == 2);
        assertTrue(changeListener3.findMe(listenersArray) == 1);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getListeners(EventListener)'
     */
    public void testGetListeners() {
        TreeModelListener listener1 = new ConcreteTreeModelListener();
        TreeModelListener listener2 = new ConcreteTreeModelListener();
        EventListener[] listenersArray = null;
        listenersArray = model.getListeners(TreeModelListener.class);
        assertEquals(0, listenersArray.length);
        model.addTreeModelListener(listener1);
        model.addTreeModelListener(listener2);
        listenersArray = model.getListeners(PropertyChangeListener.class);
        assertEquals(0, listenersArray.length);
        listenersArray = model.getListeners(TreeModelListener.class);
        assertEquals(2, listenersArray.length);
        model.removeTreeModelListener(listener1);
        listenersArray = model.getListeners(TreeModelListener.class);
        assertEquals(1, listenersArray.length);
        model.addTreeModelListener(listener2);
        listenersArray = model.getListeners(TreeModelListener.class);
        assertEquals(2, listenersArray.length);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getChild(Object, int)'
     */
    public void testGetChild() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        assertEquals(node2, model.getChild(node1, 0));
        assertEquals(node5, model.getChild(node1, 1));
        assertEquals(node3, model.getChild(node2, 0));
        assertEquals(node4, model.getChild(node2, 1));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getChildCount(Object)'
     */
    public void testGetChildCount() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        assertEquals(2, model.getChildCount(node1));
        assertEquals(2, model.getChildCount(node2));
        assertEquals(0, model.getChildCount(node3));
        assertEquals(0, model.getChildCount(node4));
        assertEquals(0, model.getChildCount(node5));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getIndexOfChild(Object, Object)'
     */
    public void testGetIndexOfChild() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(null);
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(null);
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode(null);
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode(null);
        node1.add(node2);
        node1.add(node3);
        node3.add(node4);
        assertEquals(-1, model.getIndexOfChild(null, node1));
        assertEquals(-1, model.getIndexOfChild(node1, null));
        assertEquals(0, model.getIndexOfChild(node1, node2));
        assertEquals(1, model.getIndexOfChild(node1, node3));
        assertEquals(-1, model.getIndexOfChild(node1, node4));
        assertEquals(0, model.getIndexOfChild(node3, node4));
        assertEquals(-1, model.getIndexOfChild(node4, node3));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.setRoot(TreeNode)'
     */
    public void testSetRoot() {
        TreeNode root1 = new DefaultMutableTreeNode(null);
        TreeNode root2 = new DefaultMutableTreeNode(null);
        TreeNode root3 = null;
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener(false);
        model.addTreeModelListener(listener);
        model.setRoot(root1);
        assertEquals(root1, model.root);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, new Object[] { root1 }, null, null);
        listener.reset();
        model.setRoot(root2);
        assertEquals(root2, model.root);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, new Object[] { root2 }, null, null);
        listener.reset();
        model.setRoot(root2);
        assertEquals(root2, model.root);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, new Object[] { root2 }, null, null);
        listener.reset();
        model.setRoot(root3);
        assertEquals(root3, model.root);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, null, new int[0], null);
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getRoot()'
     */
    public void testGetRoot() {
        TreeNode root1 = new DefaultMutableTreeNode(null);
        TreeNode root2 = new DefaultMutableTreeNode(null);
        TreeNode root3 = null;
        model.root = root1;
        assertEquals(root1, model.getRoot());
        model.root = root2;
        assertEquals(root2, model.getRoot());
        model.root = root3;
        assertEquals(root3, model.getRoot());
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.isLeaf(Object)'
     */
    public void testIsLeaf() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(null, true);
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(null, false);
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode(null);
        model.setAsksAllowsChildren(true);
        assertFalse(model.isLeaf(node1));
        assertTrue(model.isLeaf(node2));
        model.setAsksAllowsChildren(false);
        assertTrue(model.isLeaf(node1));
        assertTrue(model.isLeaf(node2));
        node1.add(node3);
        model.setAsksAllowsChildren(true);
        assertFalse(model.isLeaf(node1));
        model.setAsksAllowsChildren(false);
        assertFalse(model.isLeaf(node1));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.valueForPathChanged(TreePath, Object)'
     */
    public void testValueForPathChanged() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        model.valueForPathChanged(new TreePath(node1), "11");
        assertEquals("11", node1.getUserObject());
        model.valueForPathChanged(new TreePath(new Object[] { node1, node2 }), "22");
        assertEquals("22", node2.getUserObject());
        assertEquals("11", node1.getUserObject());
        model.valueForPathChanged(new TreePath(new Object[] { node2 }), "222");
        assertEquals("222", node2.getUserObject());
        assertEquals("11", node1.getUserObject());
        model.valueForPathChanged(new TreePath(new Object[] { node2, node4 }), "222444");
        assertEquals("222", node2.getUserObject());
        assertEquals("222444", node4.getUserObject());
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.reload()'
     */
    public void testReload() {
        DefaultMutableTreeNode node1 = root;
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.setRoot(null);
        model.reload();
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, null, new int[0], null);
        listener.reset();
        model.setRoot(root);
        model.reload();
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { root }, null, null);
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.reload(TreeNode)'
     */
    public void testReloadTreeNode() {
        DefaultMutableTreeNode node1 = root;
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.reload(null);
        assertNull(listener.event);
        model.setRoot(null);
        model.reload(null);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, null, new int[0], null);
        listener.reset();
        model.setRoot(root);
        model.reload(root);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { root }, null, null);
        listener.reset();
        model.reload(node2);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { root, node2 }, null, null);
        listener.reset();
        model.reload(node4);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { root, node2, node4 }, null, null);
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.insertNodeInto(MutableTreeNode, MutableTreeNode, int)'
     */
    public void testInsertNodeInto() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        try {
            model.insertNodeInto(null, node1, 0);
            fail("no exception's been thrown");
        } catch (IllegalArgumentException e) {
        }
        model.insertNodeInto(node1, node2, 0);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { node2 }, new int[] { 0 },
                new Object[] { node1 });
        assertEquals(node1, node2.getChildAt(0));
        listener.reset();
        model.insertNodeInto(node3, node2, 0);
        listener.checkEvent(model, new Object[] { node2 }, new int[] { 0 },
                new Object[] { node3 });
        assertEquals(node3, node2.getChildAt(0));
        assertEquals(node1, node2.getChildAt(1));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.removeNodeFromParent(MutableTreeNode)'
     */
    public void testRemoveNodeFromParent() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        node1.add(node2);
        node1.add(node3);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        try {
            model.removeNodeFromParent(node1);
            fail("no exception's been thrown");
        } catch (IllegalArgumentException e) {
        }
        model.removeNodeFromParent(node3);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 1 },
                new Object[] { node3 });
        assertEquals(1, node1.getChildCount());
        listener.reset();
        model.removeNodeFromParent(node2);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 0 },
                new Object[] { node2 });
        assertEquals(0, node1.getChildCount());
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.nodeChanged(TreeNode)'
     */
    public void testNodeChanged() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("4");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.nodeChanged(null);
        assertNull(listener.event);
        model.nodeChanged(node1);
        assertNull(listener.event);
        model.nodeChanged(root);
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { root }, null, null);
        listener.reset();
        model.nodeChanged(node2);
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 0 },
                new Object[] { node2 });
        listener.reset();
        model.nodeChanged(node3);
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1, node2 }, new int[] { 0 },
                new Object[] { node3 });
        listener.reset();
        model.nodeChanged(node4);
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1, node2 }, new int[] { 1 },
                new Object[] { node4 });
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.nodesWereInserted(TreeNode, int[])'
     */
    public void testNodesWereInserted() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.nodesWereInserted(null, null);
        assertNull(listener.event);
        model.nodesWereInserted(node1, null);
        assertNull(listener.event);
        model.nodesWereInserted(node1, new int[0]);
        assertNull(listener.event);
        model.nodesWereInserted(node1, new int[] { 1, 0 });
        assertNotNull(listener.event);
        assertEquals("inserted", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 1, 0 }, new Object[] {
                node5, node2 });
        listener.reset();
        model.nodesWereInserted(node2, new int[] { 0, 1 });
        assertNotNull(listener.event);
        assertEquals("inserted", listener.type);
        listener.checkEvent(model, new Object[] { node1, node2 }, new int[] { 0, 1 },
                new Object[] { node3, node4 });
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.nodesWereRemoved(TreeNode, int[], Object[])'
     */
    public void testNodesWereRemoved() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.nodesWereRemoved(null, null, null);
        assertNull(listener.event);
        model.nodesWereRemoved(node1, null, null);
        assertNull(listener.event);
        model.nodesWereRemoved(node1, new int[] { 1, 0 }, new Object[] { node3, node4 });
        assertNotNull(listener.event);
        assertEquals("removed", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 1, 0 }, new Object[] {
                node3, node4 });
        listener.reset();
        model.nodesWereRemoved(node4, new int[] { 1 }, new Object[] { node3, node5 });
        assertNotNull(listener.event);
        assertEquals("removed", listener.type);
        listener.checkEvent(model, new Object[] { node1, node2, node4 }, new int[] { 1 },
                new Object[] { node3, node5 });
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.nodesChanged(TreeNode, int[])'
     */
    public void testNodesChanged() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        DefaultMutableTreeNode node6 = new DefaultMutableTreeNode("6");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        root.add(node6);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.nodesChanged(null, null);
        assertNull(listener.event);
        model.nodesChanged(node1, null);
        assertNull(listener.event);
        model.nodesChanged(root, null);
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { root }, null, null);
        listener.reset();
        model.nodesChanged(root, new int[] { 0 });
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { root }, new int[] { 0 },
                new Object[] { node6 });
        listener.reset();
        model.nodesChanged(node1, new int[0]);
        assertNull(listener.event);
        model.nodesChanged(null, new int[] { 1 });
        assertNull(listener.event);
        model.nodesChanged(node2, new int[] { 1 });
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1, node2 }, new int[] { 1 },
                new Object[] { node4 });
        listener.reset();
        model.nodesChanged(node1, new int[] { 0 });
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 0 },
                new Object[] { node2 });
        listener.reset();
        model.nodesChanged(node1, new int[] { 0, 1 });
        assertNotNull(listener.event);
        assertEquals("changed", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, new int[] { 0, 1 }, new Object[] {
                node2, node5 });
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.nodeStructureChanged(TreeNode)'
     */
    public void testNodeStructureChanged() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("5");
        node1.add(node2);
        node1.add(node5);
        node2.add(node3);
        node2.add(node4);
        ConcreteTreeModelListener listener = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener);
        model.nodeStructureChanged(null);
        assertNull(listener.event);
        model.setRoot(null);
        listener.reset();
        model.nodeStructureChanged(null);
        assertNull(listener.event);
        model.nodeStructureChanged(node1);
        assertNotNull(listener.event);
        assertEquals("structure", listener.type);
        listener.checkEvent(model, new Object[] { node1 }, null, null);
        listener.reset();
        model.nodeStructureChanged(node2);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { node1, node2 }, null, null);
        listener.reset();
        model.nodeStructureChanged(node4);
        assertNotNull(listener.event);
        listener.checkEvent(model, new Object[] { node1, node2, node4 }, null, null);
        listener.reset();
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.getPathToRoot(TreeNode)'
     */
    public void testGetPathToRootTreeNode() {
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("2");
        DefaultMutableTreeNode node3 = root;
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("4");
        node1.add(node2);
        node2.add(node3);
        node3.add(node4);
        if (isHarmony()) {
            assertEquals(0, model.getPathToRoot(null).length);
        } else {
            assertNull(model.getPathToRoot(null));
        }
        assertTrue(Arrays.equals(new TreeNode[] { node1 }, model.getPathToRoot(node1)));
        assertTrue(Arrays.equals(new TreeNode[] { node1, node2 }, model.getPathToRoot(node2)));
        assertTrue(Arrays.equals(new TreeNode[] { node3 }, model.getPathToRoot(node3)));
        assertTrue(Arrays.equals(new TreeNode[] { node3, node4 }, model.getPathToRoot(node4)));
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.fireTreeNodesChanged(Object, Object[], int[], Object[])'
     */
    public void testFireTreeNodesChanged() {
        Object source1 = "source1";
        Object[] paths1 = new Object[] { "1", "2" };
        int[] indices1 = new int[] { 100, 200 };
        Object[] children1 = new Object[] { "10", "20" };
        ConcreteTreeModelListener listener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener listener2 = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener1);
        model.addTreeModelListener(listener2);
        model.fireTreeNodesChanged(source1, paths1, indices1, children1);
        assertNotNull(listener1.event);
        assertNotNull(listener2.event);
        assertEquals("changed", listener1.type);
        assertEquals("changed", listener2.type);
        listener1.checkEvent(source1, paths1, indices1, children1);
        listener2.checkEvent(source1, paths1, indices1, children1);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.fireTreeNodesInserted(Object, Object[], int[], Object[])'
     */
    public void testFireTreeNodesInserted() {
        Object source1 = "source1";
        Object[] paths1 = new Object[] { "1", "2" };
        int[] indices1 = new int[] { 100, 200 };
        Object[] children1 = new Object[] { "10", "20" };
        ConcreteTreeModelListener listener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener listener2 = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener1);
        model.addTreeModelListener(listener2);
        model.fireTreeNodesInserted(source1, paths1, indices1, children1);
        assertNotNull(listener1.event);
        assertNotNull(listener2.event);
        assertEquals("inserted", listener1.type);
        assertEquals("inserted", listener2.type);
        listener1.checkEvent(source1, paths1, indices1, children1);
        listener2.checkEvent(source1, paths1, indices1, children1);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.fireTreeNodesRemoved(Object, Object[], int[], Object[])'
     */
    public void testFireTreeNodesRemoved() {
        Object source1 = "source1";
        Object[] paths1 = new Object[] { "1", "2" };
        int[] indices1 = new int[] { 100, 200 };
        Object[] children1 = new Object[] { "10", "20" };
        ConcreteTreeModelListener listener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener listener2 = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener1);
        model.addTreeModelListener(listener2);
        model.fireTreeNodesRemoved(source1, paths1, indices1, children1);
        assertNotNull(listener1.event);
        assertNotNull(listener2.event);
        assertEquals("removed", listener1.type);
        assertEquals("removed", listener2.type);
        listener1.checkEvent(source1, paths1, indices1, children1);
        listener2.checkEvent(source1, paths1, indices1, children1);
    }

    /*
     * Test method for 'javax.swing.tree.DefaultTreeModel.fireTreeStructureChanged(Object, Object[], int[], Object[])'
     */
    public void testFireTreeStructureChanged() {
        Object source1 = "source1";
        Object[] paths1 = new Object[] { "1", "2" };
        int[] indices1 = new int[] { 100, 200 };
        Object[] children1 = new Object[] { "10", "20" };
        ConcreteTreeModelListener listener1 = new ConcreteTreeModelListener();
        ConcreteTreeModelListener listener2 = new ConcreteTreeModelListener();
        model.addTreeModelListener(listener1);
        model.addTreeModelListener(listener2);
        model.fireTreeStructureChanged(source1, paths1, indices1, children1);
        assertNotNull(listener1.event);
        assertNotNull(listener2.event);
        assertEquals("structure", listener1.type);
        assertEquals("structure", listener2.type);
        listener1.checkEvent(source1, paths1, indices1, children1);
        listener2.checkEvent(source1, paths1, indices1, children1);
    }
}
TOP

Related Classes of javax.swing.tree.DefaultTreeModelTest$ConcreteTreeModelListener

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.