summaryrefslogtreecommitdiff
path: root/unittests/tests
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/tests')
-rw-r--r--unittests/tests/tctreeview.pas168
1 files changed, 168 insertions, 0 deletions
diff --git a/unittests/tests/tctreeview.pas b/unittests/tests/tctreeview.pas
new file mode 100644
index 00000000..81aece1e
--- /dev/null
+++ b/unittests/tests/tctreeview.pas
@@ -0,0 +1,168 @@
+unit tcTreeview;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, fpcunit, testregistry, gui_tree;
+
+type
+
+ TTestTreeview= class(TTestCase)
+ private
+ FTree: TfpgTreeview;
+ protected
+ procedure SetUp; override;
+ procedure TearDown; override;
+ published
+ procedure TestCount;
+ procedure TestCountRecursive;
+ procedure TestNext;
+ procedure TestPrev;
+ procedure TestAppendText;
+ procedure TestFindSubNode_Text;
+ end;
+
+implementation
+
+procedure TTestTreeview.SetUp;
+begin
+ FTree := TfpgTreeview.Create(nil);
+end;
+
+procedure TTestTreeview.TearDown;
+begin
+ FTree.Free;
+end;
+
+procedure TTestTreeview.TestCount;
+var
+ n: TfpgTreeNode;
+begin
+ AssertEquals('Failed on 1', 0, FTree.RootNode.Count);
+ FTree.RootNode.AppendText('n1');
+ AssertEquals('Failed on 2', 1, FTree.RootNode.Count);
+ n := FTree.RootNode.AppendText('n2');
+ AssertEquals('Failed on 3', 2, FTree.RootNode.Count);
+ FTree.RootNode.Remove(n);
+ AssertEquals('Failed on 4', 1, FTree.RootNode.Count);
+end;
+
+procedure TTestTreeview.TestCountRecursive;
+var
+ n1, n2: TfpgTreeNode;
+begin
+ { root
+ |--n1
+ | |--n1.1
+ |--n2
+ |--n2.1
+ |--n2.2
+ }
+ AssertEquals('Failed on 1', 0, FTree.RootNode.CountRecursive);
+ n1 := FTree.RootNode.AppendText('n1');
+ AssertEquals('Failed on 2', 1, FTree.RootNode.CountRecursive);
+ n2 := FTree.RootNode.AppendText('n2');
+ AssertEquals('Failed on 3', 2, FTree.RootNode.CountRecursive);
+ n2.AppendText('n2.1');
+ AssertEquals('Failed on 4', 3, FTree.RootNode.CountRecursive);
+ n2.AppendText('n2.2');
+ AssertEquals('Failed on 5', 4, FTree.RootNode.CountRecursive);
+ n1.AppendText('n1.1');
+ AssertEquals('Failed on 6', 5, FTree.RootNode.CountRecursive);
+ FTree.RootNode.Remove(n2); // removing 3 nodes
+ AssertEquals('Failed on 6', 2, FTree.RootNode.CountRecursive);
+end;
+
+procedure TTestTreeview.TestNext;
+var
+ n1, n2: TfpgTreeNode;
+begin
+ AssertTrue('Failed on 1', FTree.RootNode.Next = nil);
+ n1 := FTree.RootNode.AppendText('n1');
+ n2 := FTree.RootNode.AppendText('n2');
+ AssertTrue('Failed on 2', n1.Next = n2);
+ AssertTrue('Failed on 3', n2.Next = nil);
+ n1.AppendText('n1.1');
+ AssertTrue('Failed on 4', n1.Next = n2);
+end;
+
+procedure TTestTreeview.TestPrev;
+var
+ n1, n2: TfpgTreeNode;
+begin
+ AssertTrue('Failed on 1', FTree.RootNode.Prev = nil);
+ n1 := FTree.RootNode.AppendText('n1');
+ n2 := FTree.RootNode.AppendText('n2');
+ AssertTrue('Failed on 2', n2.Prev = n1);
+ AssertTrue('Failed on 3', n1.Prev = nil);
+ n1.AppendText('n1.1');
+ AssertTrue('Failed on 4', n2.Prev = n1);
+end;
+
+procedure TTestTreeview.TestAppendText;
+var
+ n1, n2: TfpgTreeNode;
+begin
+ n1 := FTree.RootNode.AppendText('n1');
+ AssertTrue('Failed on 1', FTree.RootNode.FirstSubNode = n1);
+ AssertEquals('Failed on 2', 1, FTree.RootNode.Count);
+ n2 := FTree.RootNode.AppendText('n2');
+ AssertEquals('Failed on 3', 2, FTree.RootNode.Count);
+end;
+
+procedure TTestTreeview.TestFindSubNode_Text;
+var
+ n1, n2, n3: TfpgTreeNode;
+ r: TfpgTreeNode;
+begin
+ { root
+ |--n1
+ | |--n1.1
+ |
+ |--n2
+ | |--n2.1
+ | | |--n2.1.1
+ | |
+ | |--n2.2
+ |
+ |--n3
+ }
+ AssertTrue('Failed on 1', FTree.RootNode.FindSubNode('n1', False) = nil);
+
+ n1 := FTree.RootNode.AppendText('n1');
+ AssertTrue('Failed on 2', FTree.RootNode.FindSubNode('n1', False) = n1);
+ AssertTrue('Failed on 3', FTree.RootNode.FindSubNode('n1', True) = n1);
+
+ n2 := FTree.RootNode.AppendText('n2');
+ AssertTrue('Failed on 4', FTree.RootNode.FindSubNode('n2', False) = n2);
+ AssertTrue('Failed on 5', FTree.RootNode.FindSubNode('n2', True) = n2);
+
+ r := n2.AppendText('n2.1');
+ AssertTrue('Failed on 6', FTree.RootNode.FindSubNode('n2.1', False) = nil);
+ AssertTrue('Failed on 7', FTree.RootNode.FindSubNode('n2.1', True) = r);
+
+ r := n2.AppendText('n2.2');
+ AssertTrue('Failed on 8', FTree.RootNode.FindSubNode('n2.2', False) = nil);
+ AssertTrue('Failed on 9', FTree.RootNode.FindSubNode('n2.2', True) = r);
+
+ n3 := FTree.RootNode.AppendText('n3');
+ AssertTrue('Failed on 10', FTree.RootNode.FindSubNode('n3', False) = n3);
+ AssertTrue('Failed on 11', FTree.RootNode.FindSubNode('n3', True) = n3);
+
+ r := n1.AppendText('n1.1');
+ AssertTrue('Failed on 12', FTree.RootNode.FindSubNode('n1.1', False) = nil);
+ AssertTrue('Failed on 13', FTree.RootNode.FindSubNode('n1.1', True) = r);
+
+ r := n2.FindSubNode('n2.1', True).AppendText('n2.1.1');
+ AssertTrue('Failed on 14', FTree.RootNode.FindSubNode('n2.1.1', False) = nil);
+ AssertTrue('Failed on 15', FTree.RootNode.FindSubNode('n2.1.1', True) = r);
+end;
+
+
+initialization
+ RegisterTest(TTestTreeview);
+
+end.
+