Browse Source

Added unit tests

Tig 1 year ago
parent
commit
7fef0d8986

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

@@ -23,7 +23,7 @@ internal class ShadowView : View
             {
                 attr = adornment.Parent.SuperView.GetNormalColor ();
             }
-            else
+            else if (Application.Top is { })
             {
                 attr = Application.Top.GetNormalColor ();
             }

+ 96 - 0
UnitTests/View/Adornment/ShadowStyletests.cs

@@ -0,0 +1,96 @@
+using Xunit.Abstractions;
+
+namespace Terminal.Gui.ViewTests;
+
+public class ShadowStyleTests (ITestOutputHelper _output)
+{
+    [Fact]
+    public void Default_None ()
+    {
+        View view = new View ();
+        Assert.Equal (ShadowStyle.None, view.ShadowStyle);
+        Assert.Equal (ShadowStyle.None, view.Margin.ShadowStyle);
+        view.Dispose ();
+
+    }
+
+    [Theory]
+    [InlineData (ShadowStyle.None)]
+    [InlineData (ShadowStyle.Opaque)]
+    [InlineData (ShadowStyle.Transparent)]
+    public void Set_View_Sets_Margin (ShadowStyle style)
+    {
+        View view = new View ();
+
+        view.ShadowStyle = style;
+        Assert.Equal (style, view.ShadowStyle);
+        Assert.Equal (style, view.Margin.ShadowStyle);
+        view.Dispose ();
+
+    }
+
+    [Theory]
+    [InlineData (ShadowStyle.None, 3)]
+    [InlineData (ShadowStyle.Opaque, 4)]
+    [InlineData (ShadowStyle.Transparent, 4)]
+    public void Style_Changes_Magin_Thickness (ShadowStyle style, int expected)
+    {
+        View view = new View ();
+        view.Margin.Thickness = new (3);
+        view.ShadowStyle = style;
+        Assert.Equal (new Thickness (3, 3, expected, expected), view.Margin.Thickness);
+
+        view.ShadowStyle = ShadowStyle.None;
+        Assert.Equal (new Thickness (3), view.Margin.Thickness);
+        view.Dispose ();
+
+    }
+
+    // Visual tests
+    [Theory]
+    [InlineData (ShadowStyle.None, """
+                                   01#$
+                                   AB#$
+                                   !@#$
+                                   !@#$
+                                   """)]
+    [InlineData (ShadowStyle.Opaque, """
+                                     01#$
+                                     AB▌$
+                                     !▀▘$
+                                     !@#$
+                                     """)]
+    [InlineData (ShadowStyle.Transparent, """
+                                          01#$
+                                          AB#$
+                                          !@#$
+                                          !@#$
+                                          """)]
+    [SetupFakeDriver]
+    public void Visual_Test (ShadowStyle style, string expected)
+    {
+        View superView = new View ()
+        {
+            Width = 4,
+            Height = 4,
+            Text = "!@#$".Repeat (4)
+        };
+        superView.TextFormatter.WordWrap = true;
+
+        View view = new View ()
+        {
+            Text = "01\nAB",
+            Width = Dim.Auto (),
+            Height = Dim.Auto (),
+        };
+        view.ShadowStyle = style;
+        superView.Add (view);
+        superView.BeginInit();
+        superView.EndInit();
+        superView.Draw ();
+
+//        view.Draw ();
+        TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
+        view.Dispose ();
+    }
+}