// The following code was generated by Microsoft Visual Studio 2005.
// The test owner should check each test for validity.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Text;
using System.Collections.Generic;
using Aga.Controls.Tree;
namespace Aga.Controls.UnitTests
{
[TestClass]
public class NodeTest
{
[TestMethod]
public void ParentTest()
{
Node r1 = new Node("");
Node node = new Node("");
Assert.AreEqual(-1, node.Index);
r1.Nodes.Add(node);
Assert.AreEqual(1, r1.Nodes.Count);
Assert.AreEqual(r1, node.Parent);
Assert.AreEqual(0, node.Index);
r1.Nodes.Remove(node);
Assert.AreEqual(0, r1.Nodes.Count);
Assert.AreEqual(null, node.Parent);
Assert.AreEqual(-1, node.Index);
node.Parent = r1;
Assert.AreEqual(1, r1.Nodes.Count);
Assert.AreEqual(r1, node.Parent);
Assert.AreEqual(0, node.Index);
node.Parent = null;
Assert.AreEqual(0, r1.Nodes.Count);
Assert.AreEqual(null, node.Parent);
Assert.AreEqual(-1, node.Index);
Node r2 = new Node("");
node.Parent = r1;
node.Parent = r2;
Assert.AreEqual(1, r2.Nodes.Count);
Assert.AreEqual(0, r1.Nodes.Count);
Assert.AreEqual(r2, node.Parent);
r1.Nodes.Add(node);
Assert.AreEqual(1, r1.Nodes.Count);
Assert.AreEqual(0, r2.Nodes.Count);
Assert.AreEqual(r1, node.Parent);
Node node2 = new Node("");
r1.Nodes[0] = node2;
Assert.AreEqual(null, node.Parent);
Assert.AreEqual(r1, node2.Parent);
}
[TestMethod]
public void IndexTest()
{
Node r1 = new Node("");
Node node0 = new Node("");
Node node1 = new Node("");
Node node2 = new Node("");
Assert.AreEqual(-1, node0.Index);
r1.Nodes.Add(node0);
r1.Nodes.Add(node1);
r1.Nodes.Add(node2);
CheckNodes(r1);
r1.Nodes.Insert(1, new Node());
CheckNodes(r1);
r1.Nodes.RemoveAt(2);
CheckNodes(r1);
}
private void CheckNodes(Node root)
{
for (int i = 0; i < root.Nodes.Count; i++ )
Assert.AreEqual(i, root.Nodes[i].Index);
}
[TestMethod]
public void ClearTest()
{
Node node = new Node("");
int num = 125000;
for (int i = 0; i < num; i++)
node.Nodes.Add(new Node());
Assert.AreEqual(num, node.Nodes.Count);
TimeCounter.Start();
node.Nodes.Clear();
Console.WriteLine("Clear: {0}", TimeCounter.Finish());
Assert.AreEqual(0, node.Nodes.Count);
}
private int remove, insert;
[TestMethod]
public void ModelTest()
{
TreeModel model = new TreeModel();
model.NodesInserted += new EventHandler<TreeModelEventArgs>(model_NodesInserted);
model.NodesRemoved += new EventHandler<TreeModelEventArgs>(model_NodesRemoved);
remove = 0;
insert = 0;
Node node = new Node("");
model.Root.Nodes.Add(node);
model.Root.Nodes.Remove(node);
Assert.AreEqual(1, remove);
Assert.AreEqual(1, insert);
}
void model_NodesRemoved(object sender, TreeModelEventArgs e)
{
remove++;
}
void model_NodesInserted(object sender, TreeModelEventArgs e)
{
insert++;
}
}
}