Browse Source

Fixed bug. Added unit tests

Tig 1 year ago
parent
commit
88bb3984c0

+ 2 - 2
Terminal.Gui/View/Adornment/Margin.cs

@@ -43,7 +43,7 @@ public class Margin : Adornment
     {
         if (ShadowStyle != Gui.ShadowStyle.None)
         {
-            if (_pressed && e.CurrentValue == HighlightStyle.None)
+            if (_pressed && e.NewValue == HighlightStyle.None)
             {
                 Thickness = new (Thickness.Left - 1, Thickness.Top, Thickness.Right + 1, Thickness.Bottom);
 
@@ -61,7 +61,7 @@ public class Margin : Adornment
                 return;
             }
 
-            if (!_pressed && (e.CurrentValue.HasFlag (HighlightStyle.Pressed) /*|| e.HighlightStyle.HasFlag (HighlightStyle.PressedOutside)*/))
+            if (!_pressed && (e.NewValue.HasFlag (HighlightStyle.Pressed) /*|| e.HighlightStyle.HasFlag (HighlightStyle.PressedOutside)*/))
             {
                 Thickness = new (Thickness.Left + 1, Thickness.Top, Thickness.Right - 1, Thickness.Bottom);
                 _pressed = true;

+ 1 - 0
UnitTests/View/Adornment/MarginTests.cs

@@ -40,4 +40,5 @@ MMM",
                                             );
         TestHelpers.AssertDriverAttributesAre ("0", null, superView.GetNormalColor ());
     }
+
 }

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

@@ -27,6 +27,132 @@ public class ShadowStyleTests (ITestOutputHelper _output)
         view.Dispose ();
     }
 
+    [Theory]
+    [InlineData (ShadowStyle.None, 0, 0, 0, 0)]
+    [InlineData (ShadowStyle.Opaque, 1, 0, 0, 1)]
+    [InlineData (ShadowStyle.Transparent, 1, 0, 0, 1)]
+    public void ShadowStyle_Button1Pressed_Causes_Movement (ShadowStyle style, int expectedLeft, int expectedTop, int expectedRight, int expectedBottom)
+    {
+        var superView = new View
+        {
+            Height = 10, Width = 10
+        };
+
+        View view = new ()
+        {
+            Width = Dim.Auto (),
+            Height = Dim.Auto (),
+            Text = "0123",
+            HighlightStyle = HighlightStyle.Pressed,
+            ShadowStyle = style,
+            CanFocus = true
+        };
+
+        superView.Add (view);
+        superView.BeginInit ();
+        superView.EndInit ();
+
+        Thickness origThickness = view.Margin.Thickness;
+        view.NewMouseEvent (new () { Flags = MouseFlags.Button1Pressed, Position = new (0, 0) });
+        Assert.Equal (new (expectedLeft, expectedTop, expectedRight, expectedBottom), view.Margin.Thickness);
+
+        view.NewMouseEvent (new () { Flags = MouseFlags.Button1Released, Position = new (0, 0) });
+        Assert.Equal (origThickness, view.Margin.Thickness);
+    }
+
+    [Theory]
+    [InlineData (ShadowStyle.None, 0, 0, 0, 0)]
+    [InlineData (ShadowStyle.Opaque, 0, 0, 1, 1)]
+    [InlineData (ShadowStyle.Transparent, 0, 0, 1, 1)]
+    public void ShadowStyle_Margin_Thickness (ShadowStyle style, int expectedLeft, int expectedTop, int expectedRight, int expectedBottom)
+    {
+        var superView = new View
+        {
+            Height = 10, Width = 10
+        };
+
+        View view = new ()
+        {
+            Width = Dim.Auto (),
+            Height = Dim.Auto (),
+            Text = "0123",
+            HighlightStyle = HighlightStyle.Pressed,
+            ShadowStyle = style,
+            CanFocus = true
+        };
+
+        superView.Add (view);
+        superView.BeginInit ();
+        superView.EndInit ();
+
+        Assert.Equal (new (expectedLeft, expectedTop, expectedRight, expectedBottom), view.Margin.Thickness);
+    }
+
+    [Theory]
+    [InlineData (
+                    ShadowStyle.None,
+                    """
+                    011
+                    111
+                    111
+                    """)]
+    [InlineData (
+                    ShadowStyle.Transparent,
+                    """
+                    011
+                    131
+                    111
+                    """)]
+    [InlineData (
+                    ShadowStyle.Opaque,
+                    """
+                    011
+                    121
+                    111
+                    """)]
+    [SetupFakeDriver]
+    public void ShadowView_Colors (ShadowStyle style, string expectedAttrs)
+    {
+        Color fg = Color.Red;
+        Color bg = Color.Green;
+
+        // 0 - View
+        // 1 - SuperView
+        // 2 - Opaque - fg is Black, bg is SuperView.Bg
+        // 3 - Transparent - fg is darker fg, bg is darker bg
+        Attribute [] attributes =
+        {
+            Attribute.Default,
+            new (fg, bg),
+            new (Color.Black, bg),
+            new (fg.GetDarkerColor (), bg.GetDarkerColor ())
+        };
+
+        var superView = new View
+        {
+            Height = 3,
+            Width = 3,
+            Text = "012ABC!@#",
+            ColorScheme = new (new Attribute (fg, bg))
+        };
+        superView.TextFormatter.WordWrap = true;
+
+        View view = new ()
+        {
+            Width = Dim.Auto (),
+            Height = Dim.Auto (),
+            Text = " ",
+            ShadowStyle = style,
+            ColorScheme = new (Attribute.Default)
+        };
+        superView.Add (view);
+        superView.BeginInit ();
+        superView.EndInit ();
+
+        superView.Draw ();
+        TestHelpers.AssertDriverAttributesAre (expectedAttrs, Application.Driver, attributes);
+    }
+
     [Theory]
     [InlineData (ShadowStyle.None, 3)]
     [InlineData (ShadowStyle.Opaque, 4)]

+ 0 - 1
UnitTests/View/MouseTests.cs

@@ -647,5 +647,4 @@ public class MouseTests (ITestOutputHelper output) : TestsAllViews
             }
         }
     }
-
 }