Selaa lähdekoodia

Adornment w/ subview unit tests

Tig 1 vuosi sitten
vanhempi
commit
7119ee74ff

+ 1 - 1
Terminal.Gui/View/Adornment/Adornment.cs

@@ -88,7 +88,7 @@ public class Adornment : View
 
             if (prev != _thickness)
             {
-                Parent.SetNeedsLayout ();
+                Parent?.SetNeedsLayout ();
                 Parent?.LayoutSubviews ();
                 OnThicknessChanged (prev);
             }

+ 35 - 8
UnitTests/View/Adornment/AdornmentSubViewTests.cs

@@ -6,25 +6,33 @@ public class AdornmentSubViewTests (ITestOutputHelper output)
 {
     private readonly ITestOutputHelper _output = output;
 
-    [Fact]
-    public void Adornment_WithSubView_FindDeepestView_Finds ()
+    [Theory]
+    [InlineData (0, 0, false)] // Margin has no thickness, so false
+    [InlineData (0, 1, false)] // Margin has no thickness, so false
+    [InlineData (1, 0, true)]
+    [InlineData (1, 1, true)]
+    [InlineData (2, 1, true)]
+    public void Adornment_WithSubView_FindDeepestView_Finds (int viewMargin, int subViewMargin, bool expectedFound)
     {
         var view = new View () {
             Width = 10,
             Height = 10
-
         };
-        view.Padding.Thickness = new Thickness (1);
+        view.Margin.Thickness = new Thickness (viewMargin);
 
         var subView = new View () {
             X = 0,
             Y =0,
-            Width = 1,
-            Height = 1
+            Width = 5,
+            Height = 5
         };
-        view.Padding.Add (subView);
+        subView.Margin.Thickness = new Thickness (subViewMargin);
+        view.Margin.Add (subView);
+
+        var foundView = View.FindDeepestView (view, 0, 0);
 
-        Assert.Equal (subView, View.FindDeepestView (view, 0, 0));
+        bool found = foundView == subView || foundView == subView.Margin;
+        Assert.Equal (expectedFound, found);
     }
 
     [Fact]
@@ -50,4 +58,23 @@ public class AdornmentSubViewTests (ITestOutputHelper output)
 
         Assert.Equal (view.Padding, View.FindDeepestView (view, 0, 0));
     }
+
+    [Fact]
+    public void Setting_Thickness_Causes_Adornment_SubView_Layout ()
+    {
+        var view = new View ();
+        var subView = new View ();
+        view.Margin.Add (subView);
+        var raised = false;
+
+        subView.LayoutStarted += LayoutStarted;
+        view.Margin.Thickness = new Thickness (1, 2, 3, 4);
+        Assert.True (raised);
+
+        return;
+        void LayoutStarted (object sender, LayoutEventArgs e)
+        {
+            raised = true;
+        }
+    }
 }

+ 1 - 7
UnitTests/View/Adornment/AdornmentTests.cs

@@ -358,11 +358,7 @@ public class AdornmentTests (ITestOutputHelper output)
     [Fact]
     public void Setting_Thickness_Causes_Adornment_Layout ()
     {
-        var view = new View ()
-        {
-            Width = 5,
-            Height = 5
-        };
+        var view = new View ();
         var raised = false;
         view.BeginInit ();
         view.EndInit ();
@@ -376,7 +372,5 @@ public class AdornmentTests (ITestOutputHelper output)
         {
             raised = true;
         }
-
     }
-
 }