/*******************************************************************************
* Copyright (c) 2006 IBM Corporation.
* 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
*
* Contributors:
* IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse
*******************************************************************************/
package org.eclipse.linuxtools.systemtap.ui.ide.test.structures;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.TreeSettings;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.nodedata.FuncparamNodeData;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.nodedata.FunctionNodeData;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.nodedata.ProbeNodeData;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.nodedata.ProbevarNodeData;
import org.eclipse.linuxtools.systemtap.structures.TreeDefinitionNode;
import org.eclipse.linuxtools.systemtap.structures.TreeNode;
import org.junit.Before;
import org.junit.Test;
public class TreeSettingsTest {
@Before
public void setUp() {
TreeSettings.setTrees(new TreeNode("func", false), new TreeNode("probe", false));
}
@Test
public void testSetTrees() {
TreeNode t = new TreeNode("f", false);
TreeNode t1 = new TreeNode("as", "as3", false);
TreeNode t2 = new TreeNode(null, false);
TreeNode t3 = null;
assertTrue("Set tree fine1", TreeSettings.setTrees(t, t));
assertTrue("Set tree fine2", TreeSettings.setTrees(t1, t1));
assertTrue("Set tree null obj", TreeSettings.setTrees(t2, t2));
assertFalse("Set trees null", TreeSettings.setTrees(t3, t3));
assertFalse("Set func null", TreeSettings.setTrees(t3, t));
assertFalse("Set probe null", TreeSettings.setTrees(t, t3));
}
@Test
public void testGetTreeFileDate() {
long d1 = TreeSettings.getTreeFileDate();
long d2 = TreeSettings.getTreeFileDate();
assertEquals("TreeDate same", d1, d2);
TreeSettings.setTrees(new TreeNode("f", false), new TreeNode("p", false));
d2 = TreeSettings.getTreeFileDate();
assertTrue("TreeDate changed", d1 < d2);
}
@Test
public void testGetFunctionTree() {
TreeNode temp;
TreeNode t = new TreeNode("f", false);
TreeNode t1 = new TreeNode(null, false);
TreeNode t2 = new TreeNode(new StringBuilder("asfd"), true);
TreeSettings.setTrees(t, t);
temp = TreeSettings.getFunctionTree();
assertEquals("Funcs no children", 0, temp.getChildCount());
assertEquals("Funcs object", t.getData().toString(), temp.getData().toString());
assertEquals("Funcs display", t.toString(), temp.toString());
assertEquals("Funcs clickable", t.isClickable(), temp.isClickable());
TreeSettings.setTrees(t1, t);
temp = TreeSettings.getFunctionTree();
assertEquals("Funcs no children", 0, temp.getChildCount());
assertEquals("Funcs object", t1.getData(), temp.getData());
assertEquals("Funcs display", t1.toString(), temp.toString());
assertEquals("Funcs clickable", t1.isClickable(), temp.isClickable());
TreeSettings.setTrees(t2, t);
temp = TreeSettings.getFunctionTree();
assertEquals("Funcs no children", 0, temp.getChildCount());
assertEquals("Funcs object", t2.getData().toString(), temp.getData());
assertEquals("Funcs display", t2.toString(), temp.toString());
assertEquals("Funcs clickable", t2.isClickable(), temp.isClickable());
t.add(t2);
t.add(t1);
TreeSettings.setTrees(t, t);
temp = TreeSettings.getFunctionTree();
assertEquals("Funcs has children", 2, temp.getChildCount());
assertEquals("Funcs child object", t2.getData().toString(), temp.getChildAt(0).getData());
assertEquals("Funcs child display", t2.toString(), temp.getChildAt(0).toString());
}
@Test
public void testGetProbeTree() {
TreeNode temp;
TreeNode t = new TreeNode("f", false);
TreeNode t1 = new TreeNode(null, false);
TreeNode t2 = new TreeNode(new StringBuilder("asfd"), true);
TreeSettings.setTrees(t, t);
temp = TreeSettings.getProbeTree();
assertEquals("Probs no children", 0, temp.getChildCount());
assertEquals("Probs object", t.getData().toString(), temp.getData().toString());
assertEquals("Probs display", t.toString(), temp.toString());
assertEquals("Probs clickable", t.isClickable(), temp.isClickable());
TreeSettings.setTrees(t, t1);
temp = TreeSettings.getProbeTree();
assertEquals("Probs no children", 0, temp.getChildCount());
assertEquals("Probs object", t1.getData(), temp.getData());
assertEquals("Probs display", t1.toString(), temp.toString());
assertEquals("Probs clickable", t1.isClickable(), temp.isClickable());
TreeSettings.setTrees(t, t2);
temp = TreeSettings.getProbeTree();
assertEquals("Probs no children", 0, temp.getChildCount());
assertEquals("Probs object", t2.getData().toString(), temp.getData());
assertEquals("Probs display", t2.toString(), temp.toString());
assertEquals("Probs clickable", t2.isClickable(), temp.isClickable());
t.add(t2);
t.add(t1);
TreeSettings.setTrees(t, t);
temp = TreeSettings.getProbeTree();
assertEquals("Probs has children", 2, temp.getChildCount());
assertEquals("Probs child object", t2.getData().toString(), temp.getChildAt(0).getData());
assertEquals("Probs child display", t2.toString(), temp.getChildAt(0).toString());
}
@Test
public void testDefinitionTrees() {
TreeNode temp;
TreeDefinitionNode t1 = new TreeDefinitionNode("t1", "deftree1", "location", true);
TreeDefinitionNode t2 = new TreeDefinitionNode("t2", "deftree2", null, true);
TreeSettings.setTrees(t1, t2);
temp = TreeSettings.getFunctionTree();
assertTrue("Tree should have been saved as a definition node", temp instanceof TreeDefinitionNode);
assertEquals("Funcs definition", t1.getDefinition(), ((TreeDefinitionNode) temp).getDefinition());
assertEquals("Funcs object", t1.getData(), temp.getData());
assertEquals("Funcs display", t1.toString(), temp.toString());
assertEquals("Funcs clickable", t1.isClickable(), temp.isClickable());
temp = TreeSettings.getProbeTree();
assertTrue("Even with a null definition, tree should have been saved as a definition node", temp instanceof TreeDefinitionNode);
assertEquals("Probs definition", t2.getDefinition(), ((TreeDefinitionNode) temp).getDefinition());
assertEquals("Probs object", t2.getData(), temp.getData());
assertEquals("Probs display", t2.toString(), temp.toString());
assertEquals("Probs clickable", t2.isClickable(), temp.isClickable());
}
@Test
public void testStapNodeData() {
TreeNode temp;
TreeNode t1 = new TreeNode(new FunctionNodeData("function ftest(x:long)", null), true);
t1.add(new TreeNode(new FuncparamNodeData("long"), "x", false));
TreeNode t2 = new TreeNode(new ProbeNodeData("ptest"), true);
t2.add(new TreeNode(new ProbevarNodeData("x:long"), false));
TreeSettings.setTrees(t1, t2);
temp = TreeSettings.getFunctionTree();
assertTrue("Improper data type - expected FunctionNodeData but was "+ temp.getData().getClass().getSimpleName(), temp.getData() instanceof FunctionNodeData);
assertEquals("Function data not saved", t1.getData().toString(), temp.getData().toString());
assertEquals("Funcs has children", t1.getChildCount(), temp.getChildCount());
assertTrue("Improper data type", temp.getChildAt(0).getData() instanceof FuncparamNodeData);
assertEquals("Function parameter data not saved",
t1.getChildAt(0).getData().toString(), temp.getChildAt(0).getData().toString());
temp = TreeSettings.getProbeTree();
assertTrue("Improper data type", temp.getData() instanceof ProbeNodeData);
assertEquals("Probe data not saved", t2.getData().toString(), temp.getData().toString());
assertEquals("Probs has children", t2.getChildCount(), temp.getChildCount());
assertTrue("Improper data type", temp.getChildAt(0).getData() instanceof ProbevarNodeData);
assertEquals("Probe variable data not saved",
t2.getChildAt(0).getData().toString(), temp.getChildAt(0).getData().toString());
}
}