Fixed bug. Added unit tests

This commit is contained in:
Tig
2024-07-06 16:19:35 -06:00
parent 716ac3177f
commit 88bb3984c0
4 changed files with 129 additions and 3 deletions

View File

@@ -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;

View File

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

View File

@@ -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)]

View File

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