Pos.AlignTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. namespace Terminal.Gui.LayoutTests;
  2. public class PosAlignTests
  3. {
  4. [Fact]
  5. public void PosAlign_Constructor ()
  6. {
  7. var posAlign = new PosAlign
  8. {
  9. Aligner = new ()
  10. };
  11. Assert.NotNull (posAlign);
  12. Assert.Equal (Alignment.Start, posAlign.Aligner.Alignment);
  13. Assert.Equal (AlignmentModes.StartToEnd, posAlign.Aligner.AlignmentModes);
  14. Assert.Equal (0, posAlign.Aligner.ContainerSize);
  15. }
  16. [Fact]
  17. public void PosAlign_StaticFactory_Defaults ()
  18. {
  19. var posAlign = Pos.Align (Alignment.Start) as PosAlign;
  20. Assert.NotNull (posAlign);
  21. Assert.Equal (Alignment.Start, posAlign.Aligner.Alignment);
  22. Assert.Equal (AlignmentModes.StartToEnd | AlignmentModes.AddSpaceBetweenItems, posAlign.Aligner.AlignmentModes);
  23. Assert.Equal (0, posAlign.Aligner.ContainerSize);
  24. }
  25. //[Theory]
  26. //[InlineData (Alignment.Start, Alignment.Start, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, true)]
  27. //[InlineData (Alignment.Center, Alignment.Center, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, true)]
  28. //[InlineData (Alignment.Start, Alignment.Center, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, false)]
  29. //[InlineData (Alignment.Center, Alignment.Start, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, false)]
  30. //[InlineData (Alignment.Start, Alignment.Start, AlignmentModes.StartToEnd, AlignmentModes.AddSpaceBetweenItems, false)]
  31. //public void PosAlign_Equals (Alignment align1, Alignment align2, AlignmentModes mode1, AlignmentModes mode2, bool expectedEquals)
  32. //{
  33. // var posAlign1 = new PosAlign
  34. // {
  35. // Aligner = new ()
  36. // {
  37. // Alignment = align1,
  38. // AlignmentModes = mode1
  39. // }
  40. // };
  41. // var posAlign2 = new PosAlign
  42. // {
  43. // Aligner = new ()
  44. // {
  45. // Alignment = align2,
  46. // AlignmentModes = mode2
  47. // }
  48. // };
  49. // Assert.Equal (expectedEquals, posAlign1.Equals (posAlign2));
  50. // Assert.Equal (expectedEquals, posAlign2.Equals (posAlign1));
  51. //}
  52. //[Fact]
  53. //public void PosAlign_Equals_CachedLocation_Not_Used ()
  54. //{
  55. // View superView = new ()
  56. // {
  57. // Width = 10,
  58. // Height = 25
  59. // };
  60. // View view = new ();
  61. // superView.Add (view);
  62. // Pos posAlign1 = Pos.Align (Alignment.Center);
  63. // view.X = posAlign1;
  64. // int pos1 = posAlign1.Calculate (10, Dim.Absolute (0)!, view, Dimension.Width);
  65. // Pos posAlign2 = Pos.Align (Alignment.Center);
  66. // view.Y = posAlign2;
  67. // int pos2 = posAlign2.Calculate (25, Dim.Absolute (0)!, view, Dimension.Height);
  68. // Assert.NotEqual (pos1, pos2);
  69. // Assert.Equal (posAlign1, posAlign2);
  70. //}
  71. [Fact]
  72. public void PosAlign_ToString ()
  73. {
  74. Pos posAlign = Pos.Align (Alignment.Fill);
  75. var expectedString = "Align(alignment=Fill,modes=AddSpaceBetweenItems,groupId=0)";
  76. Assert.Equal (expectedString, posAlign.ToString ());
  77. }
  78. [Fact]
  79. public void PosAlign_Anchor ()
  80. {
  81. Pos posAlign = Pos.Align (Alignment.Start);
  82. var width = 50;
  83. int expectedAnchor = -width;
  84. Assert.Equal (expectedAnchor, posAlign.GetAnchor (width));
  85. }
  86. [Fact]
  87. public void PosAlign_CreatesCorrectInstance ()
  88. {
  89. Pos pos = Pos.Align (Alignment.Start);
  90. Assert.IsType<PosAlign> (pos);
  91. }
  92. [Fact]
  93. public void PosAlign_Set_View_X ()
  94. {
  95. Pos posAlign = Pos.Align (Alignment.Center);
  96. var superView = new View ()
  97. {
  98. Id = "superView",
  99. Width = 10,
  100. Height = 1
  101. };
  102. var view = new View ()
  103. {
  104. Id = "view",
  105. Width = 1,
  106. Height = 1
  107. };
  108. superView.Add (view);
  109. view.X = posAlign;
  110. superView.Layout ();
  111. Assert.Equal (4, view.Frame.X);
  112. posAlign = Pos.Align (Alignment.End);
  113. view.X = posAlign;
  114. superView.Layout ();
  115. Assert.Equal (9, view.Frame.X);
  116. }
  117. // TODO: Test scenarios where views with matching GroupId's are added/removed from a Superview
  118. // TODO: Make AlignAndUpdateGroup internal and write low-level unit tests for it
  119. }