TreeViewFluentTests.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Terminal.Gui;
  2. using TerminalGuiFluentTesting;
  3. using Xunit.Abstractions;
  4. namespace IntegrationTests.FluentTests;
  5. public class TreeViewFluentTests
  6. {
  7. private readonly TextWriter _out;
  8. public TreeViewFluentTests (ITestOutputHelper outputHelper) { _out = new TestOutputWriter (outputHelper); }
  9. [Theory]
  10. [ClassData (typeof (V2TestDrivers))]
  11. public void TreeView_AllowReOrdering (V2TestDriver d)
  12. {
  13. var tv = new TreeView
  14. {
  15. Width = Dim.Fill (),
  16. Height = Dim.Fill ()
  17. };
  18. TreeNode car;
  19. TreeNode lorry;
  20. TreeNode bike;
  21. var root = new TreeNode ("Root")
  22. {
  23. Children =
  24. [
  25. car = new ("Car"),
  26. lorry = new ("Lorry"),
  27. bike = new ("Bike")
  28. ]
  29. };
  30. tv.AddObject (root);
  31. using GuiTestContext context =
  32. With.A<Window> (40, 10, d)
  33. .Add (tv)
  34. .Focus (tv)
  35. .WaitIteration ()
  36. .ScreenShot ("Before expanding", _out)
  37. .AssertEqual (root, tv.GetObjectOnRow (0))
  38. .Then (() => Assert.Null (tv.GetObjectOnRow (1)))
  39. .Right ()
  40. .ScreenShot ("After expanding", _out)
  41. .AssertEqual (root, tv.GetObjectOnRow (0))
  42. .AssertEqual (car, tv.GetObjectOnRow (1))
  43. .AssertEqual (lorry, tv.GetObjectOnRow (2))
  44. .AssertEqual (bike, tv.GetObjectOnRow (3))
  45. .Then (
  46. () =>
  47. {
  48. // Re order
  49. root.Children = [bike, car, lorry];
  50. tv.RefreshObject (root);
  51. })
  52. .WaitIteration ()
  53. .ScreenShot ("After re-order", _out)
  54. .AssertEqual (root, tv.GetObjectOnRow (0))
  55. .AssertEqual (bike, tv.GetObjectOnRow (1))
  56. .AssertEqual (car, tv.GetObjectOnRow (2))
  57. .AssertEqual (lorry, tv.GetObjectOnRow (3))
  58. .WriteOutLogs (_out);
  59. context.Stop ();
  60. }
  61. [Theory]
  62. [ClassData (typeof (V2TestDrivers))]
  63. public void TreeViewReOrder_PreservesExpansion (V2TestDriver d)
  64. {
  65. var tv = new TreeView
  66. {
  67. Width = Dim.Fill (),
  68. Height = Dim.Fill ()
  69. };
  70. TreeNode car;
  71. TreeNode lorry;
  72. TreeNode bike;
  73. TreeNode mrA;
  74. TreeNode mrB;
  75. TreeNode mrC;
  76. TreeNode mrD;
  77. TreeNode mrE;
  78. var root = new TreeNode ("Root")
  79. {
  80. Children =
  81. [
  82. car = new ("Car")
  83. {
  84. Children =
  85. [
  86. mrA = new ("Mr A"),
  87. mrB = new ("Mr B")
  88. ]
  89. },
  90. lorry = new ("Lorry")
  91. {
  92. Children =
  93. [
  94. mrC = new ("Mr C")
  95. ]
  96. },
  97. bike = new ("Bike")
  98. {
  99. Children =
  100. [
  101. mrD = new ("Mr D"),
  102. mrE = new ("Mr E")
  103. ]
  104. }
  105. ]
  106. };
  107. tv.AddObject (root);
  108. tv.ExpandAll ();
  109. using GuiTestContext context =
  110. With.A<Window> (40, 13, d)
  111. .Add (tv)
  112. .WaitIteration ()
  113. .ScreenShot ("Initial State", _out)
  114. .AssertEqual (root, tv.GetObjectOnRow (0))
  115. .AssertEqual (car, tv.GetObjectOnRow (1))
  116. .AssertEqual (mrA, tv.GetObjectOnRow (2))
  117. .AssertEqual (mrB, tv.GetObjectOnRow (3))
  118. .AssertEqual (lorry, tv.GetObjectOnRow (4))
  119. .AssertEqual (mrC, tv.GetObjectOnRow (5))
  120. .AssertEqual (bike, tv.GetObjectOnRow (6))
  121. .AssertEqual (mrD, tv.GetObjectOnRow (7))
  122. .AssertEqual (mrE, tv.GetObjectOnRow (8))
  123. .Then (
  124. () =>
  125. {
  126. // Re order
  127. root.Children = [bike, car, lorry];
  128. tv.RefreshObject (root);
  129. })
  130. .WaitIteration ()
  131. .ScreenShot ("After re-order", _out)
  132. .AssertEqual (root, tv.GetObjectOnRow (0))
  133. .AssertEqual (bike, tv.GetObjectOnRow (1))
  134. .AssertEqual (mrD, tv.GetObjectOnRow (2))
  135. .AssertEqual (mrE, tv.GetObjectOnRow (3))
  136. .AssertEqual (car, tv.GetObjectOnRow (4))
  137. .AssertEqual (mrA, tv.GetObjectOnRow (5))
  138. .AssertEqual (mrB, tv.GetObjectOnRow (6))
  139. .AssertEqual (lorry, tv.GetObjectOnRow (7))
  140. .AssertEqual (mrC, tv.GetObjectOnRow (8))
  141. .WriteOutLogs (_out);
  142. context.Stop ();
  143. }
  144. }