AdornmentSubViewTests.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. Width = 10,
  16. Height = 10
  17. };
  18. view.Margin.Thickness = new Thickness (viewMargin);
  19. var subView = new View () {
  20. X = 0,
  21. Y =0,
  22. Width = 5,
  23. Height = 5
  24. };
  25. subView.Margin.Thickness = new Thickness (subViewMargin);
  26. view.Margin.Add (subView);
  27. var foundView = View.FindDeepestView (view, 0, 0);
  28. bool found = foundView == subView || foundView == subView.Margin;
  29. Assert.Equal (expectedFound, found);
  30. }
  31. [Fact]
  32. public void Adornment_WithNonVisibleSubView_FindDeepestView_Finds_Adornment ()
  33. {
  34. var view = new View ()
  35. {
  36. Width = 10,
  37. Height = 10
  38. };
  39. view.Padding.Thickness = new Thickness (1);
  40. var subView = new View ()
  41. {
  42. X = 0,
  43. Y = 0,
  44. Width = 1,
  45. Height = 1,
  46. Visible = false
  47. };
  48. view.Padding.Add (subView);
  49. Assert.Equal (view.Padding, View.FindDeepestView (view, 0, 0));
  50. }
  51. [Fact]
  52. public void Setting_Thickness_Causes_Adornment_SubView_Layout ()
  53. {
  54. var view = new View ();
  55. var subView = new View ();
  56. view.Margin.Add (subView);
  57. var raised = false;
  58. subView.LayoutStarted += LayoutStarted;
  59. view.Margin.Thickness = new Thickness (1, 2, 3, 4);
  60. Assert.True (raised);
  61. return;
  62. void LayoutStarted (object sender, LayoutEventArgs e)
  63. {
  64. raised = true;
  65. }
  66. }
  67. }