TreeViewTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Terminal.Gui;
  7. using Xunit;
  8. namespace UnitTests {
  9. public class TreeViewTests
  10. {
  11. #region Test Setup Methods
  12. class Factory
  13. {
  14. public Car[] Cars {get;set;}
  15. };
  16. class Car {
  17. };
  18. private TreeView CreateTree()
  19. {
  20. return CreateTree(out _, out _, out _);
  21. }
  22. private TreeView CreateTree(out Factory factory1, out Car car1, out Car car2)
  23. {
  24. car1 = new Car();
  25. car2 = new Car();
  26. factory1 = new Factory()
  27. {
  28. Cars = new []{car1 ,car2}
  29. };
  30. var tree = new TreeView();
  31. tree.ChildrenGetter = (s)=> s is Factory f ? f.Cars: null;
  32. tree.AddObject(factory1);
  33. return tree;
  34. }
  35. #endregion
  36. [Fact]
  37. public void ScrollOffset_CannotBeNegative()
  38. {
  39. var tree = CreateTree();
  40. Assert.Equal(0,tree.ScrollOffset);
  41. tree.ScrollOffset = -100;
  42. Assert.Equal(0,tree.ScrollOffset);
  43. tree.ScrollOffset = 10;
  44. Assert.Equal(10,tree.ScrollOffset);
  45. }
  46. [Fact]
  47. public void GetScrollOffsetOf_MinusOneForUnRevealed()
  48. {
  49. var tree = CreateTree(out Factory f, out Car c1, out Car c2);
  50. Assert.Equal(0,tree.GetScrollOffsetOf(f));
  51. Assert.Equal(-1,tree.GetScrollOffsetOf(c1));
  52. Assert.Equal(-1,tree.GetScrollOffsetOf(c2));
  53. //reveal it by expanding the root object
  54. tree.Expand(f);
  55. Assert.Equal(0,tree.GetScrollOffsetOf(f));
  56. Assert.Equal(1,tree.GetScrollOffsetOf(c1));
  57. Assert.Equal(2,tree.GetScrollOffsetOf(c2));
  58. tree.Collapse(f);
  59. Assert.Equal(0,tree.GetScrollOffsetOf(f));
  60. Assert.Equal(-1,tree.GetScrollOffsetOf(c1));
  61. Assert.Equal(-1,tree.GetScrollOffsetOf(c2));
  62. }
  63. }
  64. }