123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- using System.Text;
- using System;
- using Xunit;
- using Xunit.Abstractions;
- namespace Terminal.Gui.ViewsTests {
- public class DrawTests {
- readonly ITestOutputHelper output;
- public DrawTests (ITestOutputHelper output)
- {
- this.output = output;
- }
- // TODO: The tests below that use Label should use View instead.
- [Fact, AutoInitShutdown]
- public void Non_Bmp_ConsoleWidth_ColumnWidth_Equal_Two ()
- {
- string us = "\U0001d539";
- Rune r = (Rune)0x1d539;
- Assert.Equal ("𝔹", us);
- Assert.Equal ("𝔹", r.ToString ());
- Assert.Equal (us, r.ToString ());
- Assert.Equal (1, us.GetColumns ());
- Assert.Equal (1, r.GetColumns ());
- var win = new Window () { Title = us };
- var label = new Label (r.ToString ());
- var tf = new TextField (us) { Y = 1, Width = 3 };
- win.Add (label, tf);
- var top = Application.Top;
- top.Add (win);
- Application.Begin (top);
- ((FakeDriver)Application.Driver).SetBufferSize (10, 4);
- var expected = @"
- ┌┤𝔹├─────┐
- │𝔹 │
- │𝔹 │
- └────────┘";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- TestHelpers.AssertDriverContentsAre (expected, output);
- var expectedColors = new Attribute [] {
- // 0
- Colors.Base.Normal,
- // 1
- Colors.Base.Focus,
- // 2
- Colors.Base.HotNormal
- };
- TestHelpers.AssertDriverColorsAre (@"
- 0020000000
- 0000000000
- 0111000000
- 0000000000", expectedColors);
- }
- [Fact, AutoInitShutdown]
- public void CJK_Compatibility_Ideographs_ConsoleWidth_ColumnWidth_Equal_Two ()
- {
- string us = "\U0000f900";
- Rune r = (Rune)0xf900;
- Assert.Equal ("豈", us);
- Assert.Equal ("豈", r.ToString ());
- Assert.Equal (us, r.ToString ());
- Assert.Equal (2, us.GetColumns ());
- Assert.Equal (2, r.GetColumns ());
- var win = new Window () { Title = us };
- var label = new Label (r.ToString ());
- var tf = new TextField (us) { Y = 1, Width = 3 };
- win.Add (label, tf);
- var top = Application.Top;
- top.Add (win);
- Application.Begin (top);
- ((FakeDriver)Application.Driver).SetBufferSize (10, 4);
- var expected = @"
- ┌┤豈├────┐
- │豈 │
- │豈 │
- └────────┘";
- TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
- TestHelpers.AssertDriverContentsAre (expected, output);
- var expectedColors = new Attribute [] {
- // 0
- Colors.Base.Normal,
- // 1
- Colors.Base.Focus,
- // 2
- Colors.Base.HotNormal
- };
- TestHelpers.AssertDriverColorsAre (@"
- 0022000000
- 0000000000
- 0111000000
- 0000000000", expectedColors);
- }
- [Fact, AutoInitShutdown]
- public void Colors_On_TextAlignment_Right_And_Bottom ()
- {
- var labelRight = new Label ("Test") {
- Width = 6,
- Height = 1,
- TextAlignment = TextAlignment.Right,
- ColorScheme = Colors.Base
- };
- var labelBottom = new Label ("Test", TextDirection.TopBottom_LeftRight) {
- Y = 1,
- Width = 1,
- Height = 6,
- VerticalTextAlignment = VerticalTextAlignment.Bottom,
- ColorScheme = Colors.Base
- };
- var top = Application.Top;
- top.Add (labelRight, labelBottom);
- Application.Begin (top);
- ((FakeDriver)Application.Driver).SetBufferSize (7, 7);
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- Test
-
-
- T
- e
- s
- t ", output);
- TestHelpers.AssertDriverColorsAre (@"
- 000000
- 0
- 0
- 0
- 0
- 0
- 0", new Attribute [] { Colors.Base.Normal });
- }
- [Fact, AutoInitShutdown]
- public void Draw_Negative_Bounds_Horizontal_Without_New_Lines ()
- {
- // BUGBUG: This previously assumed the default height of a View was 1.
- var subView = new View () { Id = "subView", Y = 1, Width = 7, Height = 1, Text = "subView" };
- var view = new View () { Id = "view", Width = 20, Height = 2, Text = "01234567890123456789" };
- view.Add (subView);
- var content = new View () { Id = "content", Width = 20, Height = 20 };
- content.Add (view);
- var container = new View () { Id = "container", X = 1, Y = 1, Width = 5, Height = 5 };
- container.Add (content);
- var top = Application.Top;
- top.Add (container);
- // BUGBUG: v2 - it's bogus to reference .Frame before BeginInit. And why is the clip being set anyway???
- void Top_LayoutComplete (object sender, LayoutEventArgs e)
- {
- Application.Driver.Clip = container.Frame;
- }
- top.LayoutComplete += Top_LayoutComplete;
- Application.Begin (top);
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 01234
- subVi", output);
- content.X = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 12345
- ubVie", output);
- content.Y = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- ubVie", output);
- content.Y = -2;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- content.X = -20;
- content.Y = 0;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- }
- [Fact, AutoInitShutdown]
- public void Draw_Negative_Bounds_Horizontal_With_New_Lines ()
- {
- var subView = new View () { Id = "subView", X = 1, Width = 1, Height = 7, Text = "s\nu\nb\nV\ni\ne\nw" };
- var view = new View () { Id = "view", Width = 2, Height = 20, Text = "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" };
- view.Add (subView);
- var content = new View () { Id = "content", Width = 20, Height = 20 };
- content.Add (view);
- var container = new View () { Id = "container", X = 1, Y = 1, Width = 5, Height = 5 };
- container.Add (content);
- var top = Application.Top;
- top.Add (container);
- Application.Driver.Clip = container.Frame;
- Application.Begin (top);
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 0s
- 1u
- 2b
- 3V
- 4i", output);
- content.X = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- s
- u
- b
- V
- i", output);
- content.X = -2;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"", output);
- content.X = 0;
- content.Y = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 1u
- 2b
- 3V
- 4i
- 5e", output);
- content.Y = -6;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 6w
- 7
- 8
- 9
- 0 ", output);
- content.Y = -19;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 9", output);
- content.Y = -20;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- content.X = -2;
- content.Y = 0;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- }
- [Fact, AutoInitShutdown]
- public void Draw_Negative_Bounds_Vertical ()
- {
- var subView = new View () { Id = "subView", X = 1, Width = 1, Height = 7, Text = "subView", TextDirection = TextDirection.TopBottom_LeftRight };
- var view = new View () { Id = "view", Width = 2, Height = 20, Text = "01234567890123456789", TextDirection = TextDirection.TopBottom_LeftRight };
- view.Add (subView);
- var content = new View () { Id = "content", Width = 20, Height = 20 };
- content.Add (view);
- var container = new View () { Id = "container", X = 1, Y = 1, Width = 5, Height = 5 };
- container.Add (content);
- var top = Application.Top;
- top.Add (container);
- Application.Driver.Clip = container.Frame;
- Application.Begin (top);
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 0s
- 1u
- 2b
- 3V
- 4i", output);
- content.X = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- s
- u
- b
- V
- i", output);
- content.X = -2;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"", output);
- content.X = 0;
- content.Y = -1;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 1u
- 2b
- 3V
- 4i
- 5e", output);
- content.Y = -6;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 6w
- 7
- 8
- 9
- 0 ", output);
- content.Y = -19;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre (@"
- 9", output);
- content.Y = -20;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- content.X = -2;
- content.Y = 0;
- Application.Refresh ();
- TestHelpers.AssertDriverContentsWithFrameAre ("", output);
- }
- }
- }
|