123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using UnitTests;
- using Xunit.Abstractions;
- namespace Terminal.Gui.ViewTests;
- public class ShadowStyleTests (ITestOutputHelper output)
- {
- [Theory]
- [InlineData (
- ShadowStyle.None,
- """
- 011
- 111
- 111
- """)]
- [InlineData (
- ShadowStyle.Transparent,
- """
- 031
- 131
- 111
- """)]
- [InlineData (
- ShadowStyle.Opaque,
- """
- 021
- 221
- 111
- """)]
- [SetupFakeDriver]
- public void ShadowView_Colors (ShadowStyle style, string expectedAttrs)
- {
- ((FakeDriver)Application.Driver!).SetBufferSize (5, 5);
- 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 Toplevel
- {
- 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);
- Application.TopLevels.Push (superView);
- Application.LayoutAndDraw (true);
- DriverAssert.AssertDriverAttributesAre (expectedAttrs, output, Application.Driver, attributes);
- Application.ResetState (true);
- }
- // 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)
- {
- ((FakeDriver)Application.Driver!).SetBufferSize (5, 5);
- var superView = new Toplevel
- {
- Width = 4,
- Height = 4,
- Text = "!@#$".Repeat (4)!
- };
- superView.TextFormatter.WordWrap = true;
- var view = new View
- {
- Text = "01\nAB",
- Width = Dim.Auto (),
- Height = Dim.Auto ()
- };
- view.ShadowStyle = style;
- superView.Add (view);
- Application.TopLevels.Push (superView);
- Application.LayoutAndDraw (true);
- DriverAssert.AssertDriverContentsWithFrameAre (expected, output);
- view.Dispose ();
- Application.ResetState (true);
- }
- [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);
- // Button1Pressed, Button1Released cause Application.MouseGrabView to be set
- Application.ResetState (true);
- }
- }
|