/*******************************************************************************
* Copyright (c) 2007 Jeff Mesnil
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package net.jmesnil.jmx.ui.internal.tree;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import junit.framework.TestCase;
public class NodeBuilderTestCase extends TestCase {
private MBeanServerConnection mockConn;
@Override
protected void setUp() throws Exception {
super.setUp();
mockConn = new MockMBeanServerConnection();
}
@Override
protected void tearDown() throws Exception {
mockConn = null;
super.tearDown();
}
public void testOneObjectName() throws Exception {
ObjectName on = new ObjectName("test:type=Test,name=Test1"); //$NON-NLS-1$
Node root = NodeBuilder.createRoot(mockConn);
NodeBuilder.addToTree(root, on);
Node[] children = root.getChildren();
assertEquals(1, children.length);
assertTrue(children[0] instanceof DomainNode);
DomainNode domainNode = (DomainNode) children[0];
assertEquals("test", domainNode.getDomain()); //$NON-NLS-1$
children = domainNode.getChildren();
assertEquals(1, children.length);
assertTrue(children[0] instanceof PropertyNode);
PropertyNode typeNode = (PropertyNode) children[0];
assertEquals("type", typeNode.getKey()); //$NON-NLS-1$
assertEquals("Test", typeNode.getValue()); //$NON-NLS-1$
children = typeNode.getChildren();
assertEquals(1, children.length);
assertTrue(children[0] instanceof ObjectNameNode);
ObjectNameNode onNode = (ObjectNameNode) children[0];
assertEquals(on, onNode.getObjectName());
}
public void testTwoObjectNames() throws Exception {
ObjectName on = new ObjectName("test:type=Test,name=Test1"); //$NON-NLS-1$
ObjectName on2 = new ObjectName("test:type=Test,name=Test2"); //$NON-NLS-1$
Node root = NodeBuilder.createRoot(mockConn);
NodeBuilder.addToTree(root, on);
NodeBuilder.addToTree(root, on2);
Node[] children = root.getChildren();
assertEquals(1, children.length);
assertTrue(children[0] instanceof DomainNode);
DomainNode domainNode = (DomainNode) children[0];
assertEquals("test", domainNode.getDomain()); //$NON-NLS-1$
children = domainNode.getChildren();
assertEquals(1, children.length);
assertTrue(children[0] instanceof PropertyNode);
PropertyNode typeNode = (PropertyNode) children[0];
assertEquals("type", typeNode.getKey()); //$NON-NLS-1$
assertEquals("Test", typeNode.getValue()); //$NON-NLS-1$
children = typeNode.getChildren();
assertEquals(2, children.length);
assertTrue(children[0] instanceof ObjectNameNode);
assertTrue(children[1] instanceof ObjectNameNode);
ObjectNameNode onNode = (ObjectNameNode) children[0];
ObjectNameNode onNode2 = (ObjectNameNode) children[1];
assertEquals(on, onNode.getObjectName());
assertEquals(on2, onNode2.getObjectName());
}
public void testTwoDifferentDomains() throws Exception {
ObjectName on = new ObjectName("test:type=Test,name=Test1"); //$NON-NLS-1$
ObjectName other = new ObjectName("other:type=Test,name=Test2"); //$NON-NLS-1$
Node root = NodeBuilder.createRoot(mockConn);
NodeBuilder.addToTree(root, on);
NodeBuilder.addToTree(root, other);
Node[] children = root.getChildren();
assertEquals(2, children.length);
assertTrue(children[0] instanceof DomainNode);
assertTrue(children[1] instanceof DomainNode);
DomainNode domainNode1 = (DomainNode) children[0];
DomainNode domainNode2 = (DomainNode) children[1];
// domains are sorted by lexical order
assertEquals("other", domainNode1.getDomain()); //$NON-NLS-1$
assertEquals("test", domainNode2.getDomain()); //$NON-NLS-1$
}
public void testHierarchy() throws Exception {
ObjectName on = new ObjectName("test:type=Test,name=Test1"); //$NON-NLS-1$
ObjectName on2 = new ObjectName("test:type=Test,name=Test2"); //$NON-NLS-1$
ObjectName on3 = new ObjectName("test:type=AnotherTest,name=Test1"); //$NON-NLS-1$
ObjectName on4 = new ObjectName("test:type=AnotherTest,name=Test2"); //$NON-NLS-1$
ObjectName on5 = new ObjectName("other:type=Test,name=Test1"); //$NON-NLS-1$
Node root = NodeBuilder.createRoot(mockConn);
NodeBuilder.addToTree(root, on);
NodeBuilder.addToTree(root, on2);
NodeBuilder.addToTree(root, on3);
NodeBuilder.addToTree(root, on4);
NodeBuilder.addToTree(root, on5);
}
}