AdornmentSubViewTests.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Xunit.Abstractions;
  2. namespace Terminal.Gui.ViewTests;
  3. public class AdornmentSubViewTests (ITestOutputHelper output)
  4. {
  5. private readonly ITestOutputHelper _output = output;
  6. [Theory]
  7. [InlineData (0, 0, false)] // Margin has no thickness, so false
  8. [InlineData (0, 1, false)] // Margin has no thickness, so false
  9. [InlineData (1, 0, true)]
  10. [InlineData (1, 1, true)]
  11. [InlineData (2, 1, true)]
  12. public void Adornment_WithSubView_FindDeepestView_Finds (int viewMargin, int subViewMargin, bool expectedFound)
  13. {
  14. var view = new View ()
  15. {
  16. Width = 10,
  17. Height = 10
  18. };
  19. view.Margin.Thickness = new Thickness (viewMargin);
  20. var subView = new View ()
  21. {
  22. X = 0,
  23. Y = 0,
  24. Width = 5,
  25. Height = 5
  26. };
  27. subView.Margin.Thickness = new Thickness (subViewMargin);
  28. view.Margin.Add (subView);
  29. var foundView = View.FindDeepestView (view, new (0, 0));
  30. bool found = foundView == subView || foundView == subView.Margin;
  31. Assert.Equal (expectedFound, found);
  32. }
  33. [Fact]
  34. public void Adornment_WithNonVisibleSubView_FindDeepestView_Finds_Adornment ()
  35. {
  36. var view = new View ()
  37. {
  38. Width = 10,
  39. Height = 10
  40. };
  41. view.Padding.Thickness = new Thickness (1);
  42. var subView = new View ()
  43. {
  44. X = 0,
  45. Y = 0,
  46. Width = 1,
  47. Height = 1,
  48. Visible = false
  49. };
  50. view.Padding.Add (subView);
  51. Assert.Equal (view.Padding, View.FindDeepestView (view, new (0, 0)));
  52. }
  53. [Fact]
  54. public void Setting_Thickness_Causes_Adornment_SubView_Layout ()
  55. {
  56. var view = new View ();
  57. var subView = new View ();
  58. view.Margin.Add (subView);
  59. view.BeginInit ();
  60. view.EndInit ();
  61. var raised = false;
  62. subView.LayoutStarted += LayoutStarted;
  63. view.Margin.Thickness = new Thickness (1, 2, 3, 4);
  64. Assert.True (raised);
  65. return;
  66. void LayoutStarted (object sender, LayoutEventArgs e)
  67. {
  68. raised = true;
  69. }
  70. }
  71. }