Pos.AlignTests.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 
  2. using static Unix.Terminal.Delegates;
  3. namespace Terminal.Gui.PosDimTests;
  4. public class PosAlignTests ()
  5. {
  6. [Fact]
  7. public void PosAlign_Constructor ()
  8. {
  9. var posAlign = new PosAlign ()
  10. {
  11. Aligner = new Aligner(),
  12. };
  13. Assert.NotNull (posAlign);
  14. }
  15. [Theory]
  16. [InlineData (Alignment.Start, Alignment.Start, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, true)]
  17. [InlineData (Alignment.Center, Alignment.Center, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, true)]
  18. [InlineData (Alignment.Start, Alignment.Center, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, false)]
  19. [InlineData (Alignment.Center, Alignment.Start, AlignmentModes.AddSpaceBetweenItems, AlignmentModes.AddSpaceBetweenItems, false)]
  20. [InlineData (Alignment.Start, Alignment.Start, AlignmentModes.StartToEnd, AlignmentModes.AddSpaceBetweenItems, false)]
  21. public void PosAlign_Equals (Alignment align1, Alignment align2, AlignmentModes mode1, AlignmentModes mode2, bool expectedEquals)
  22. {
  23. var posAlign1 = new PosAlign ()
  24. {
  25. Aligner = new Aligner ()
  26. {
  27. Alignment = align1,
  28. AlignmentModes = mode1
  29. }
  30. };
  31. var posAlign2 = new PosAlign ()
  32. {
  33. Aligner = new Aligner ()
  34. {
  35. Alignment = align2,
  36. AlignmentModes = mode2
  37. }
  38. };
  39. Assert.Equal (expectedEquals, posAlign1.Equals (posAlign2));
  40. Assert.Equal (expectedEquals, posAlign2.Equals (posAlign1));
  41. }
  42. [Fact]
  43. public void PosAlign_Equals_CachedLocation_Not_Used ()
  44. {
  45. View superView = new ()
  46. {
  47. Width = 10,
  48. Height = 25
  49. };
  50. View view = new ();
  51. superView.Add (view);
  52. var posAlign1 = Pos.Align (Alignment.Center, AlignmentModes.AddSpaceBetweenItems);
  53. view.X = posAlign1;
  54. var pos1 = posAlign1.Calculate (10, Dim.Absolute(0)!, view, Dimension.Width);
  55. var posAlign2 = Pos.Align (Alignment.Center, AlignmentModes.AddSpaceBetweenItems);
  56. view.Y = posAlign2;
  57. var pos2 = posAlign2.Calculate (25, Dim.Absolute (0)!, view, Dimension.Height);
  58. Assert.NotEqual(pos1, pos2);
  59. Assert.Equal (posAlign1, posAlign2);
  60. }
  61. [Fact]
  62. public void PosAlign_ToString ()
  63. {
  64. var posAlign = Pos.Align (Alignment.Fill);
  65. var expectedString = "Align(alignment=Fill,modes=AddSpaceBetweenItems,groupId=0)";
  66. Assert.Equal (expectedString, posAlign.ToString ());
  67. }
  68. [Fact]
  69. public void PosAlign_Anchor ()
  70. {
  71. var posAlign = Pos.Align (Alignment.Start);
  72. var width = 50;
  73. var expectedAnchor = -width;
  74. Assert.Equal (expectedAnchor, posAlign.GetAnchor (width));
  75. }
  76. [Fact]
  77. public void PosAlign_CreatesCorrectInstance ()
  78. {
  79. var pos = Pos.Align (Alignment.Start);
  80. Assert.IsType<PosAlign> (pos);
  81. }
  82. // TODO: Test scenarios where views with matching GroupId's are added/removed from a Superview
  83. // TODO: Make AlignAndUpdateGroup internal and write low-level unit tests for it
  84. }