From 88bb3984c06ea1cad42d40e9d2d101a2c865ca28 Mon Sep 17 00:00:00 2001 From: Tig Date: Sat, 6 Jul 2024 16:19:35 -0600 Subject: [PATCH] Fixed bug. Added unit tests --- Terminal.Gui/View/Adornment/Margin.cs | 4 +- UnitTests/View/Adornment/MarginTests.cs | 1 + UnitTests/View/Adornment/ShadowStyletests.cs | 126 +++++++++++++++++++ UnitTests/View/MouseTests.cs | 1 - 4 files changed, 129 insertions(+), 3 deletions(-) diff --git a/Terminal.Gui/View/Adornment/Margin.cs b/Terminal.Gui/View/Adornment/Margin.cs index 11ae2dd2b..a7273a74c 100644 --- a/Terminal.Gui/View/Adornment/Margin.cs +++ b/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; diff --git a/UnitTests/View/Adornment/MarginTests.cs b/UnitTests/View/Adornment/MarginTests.cs index 87f76f45f..58b6d1dce 100644 --- a/UnitTests/View/Adornment/MarginTests.cs +++ b/UnitTests/View/Adornment/MarginTests.cs @@ -40,4 +40,5 @@ MMM", ); TestHelpers.AssertDriverAttributesAre ("0", null, superView.GetNormalColor ()); } + } diff --git a/UnitTests/View/Adornment/ShadowStyletests.cs b/UnitTests/View/Adornment/ShadowStyletests.cs index c8f3f8063..967720e36 100644 --- a/UnitTests/View/Adornment/ShadowStyletests.cs +++ b/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)] diff --git a/UnitTests/View/MouseTests.cs b/UnitTests/View/MouseTests.cs index 956f4b202..5c5453f3a 100644 --- a/UnitTests/View/MouseTests.cs +++ b/UnitTests/View/MouseTests.cs @@ -647,5 +647,4 @@ public class MouseTests (ITestOutputHelper output) : TestsAllViews } } } - }