diff --git a/UnitTests/DialogTests.cs b/UnitTests/DialogTests.cs index 060e2d3eb..d9a34e4ca 100644 --- a/UnitTests/DialogTests.cs +++ b/UnitTests/DialogTests.cs @@ -288,6 +288,61 @@ namespace Terminal.Gui.Views { Application.End (runstate); } + [Fact] + [AutoInitShutdown] + public void ButtonAlignment_Four_On_Smaller_Width () + { + Application.RunState runstate = null; + + var d = ((FakeDriver)Application.Driver); + + var title = "1234"; + + // E.g "|[ yes ][ no ][ maybe ][ never ]|" + var btn1Text = "yes"; + var btn1 = $"{d.LeftBracket} {btn1Text} {d.RightBracket}"; + var btn2Text = "no"; + var btn2 = $"{d.LeftBracket} {btn2Text} {d.RightBracket}"; + var btn3Text = "maybe"; + var btn3 = $"{d.LeftBracket} {btn3Text} {d.RightBracket}"; + var btn4Text = "never"; + var btn4 = $"{d.LeftBracket} {btn4Text} {d.RightBracket}"; + + var buttonRow = $"{d.VLine} {btn1} {btn2} {btn3} {btn4} {d.VLine}"; + var width = buttonRow.Length; + var topRow = "34 ───────────────────────────"; + var bottomRow = "──────────────────────────────"; + d.SetBufferSize (30, 3); + + // Default - Center + buttonRow = $"yes ] {btn2} {btn3} [ never"; + Assert.NotEqual (width, buttonRow.Length); + (runstate, var _) = RunButtonTestDialog (title, width, Dialog.ButtonAlignments.Center, new Button (btn1Text), new Button (btn2Text), new Button (btn3Text), new Button (btn4Text)); + TestHelpers.AssertDriverContentsWithFrameAre ($"{topRow}\n{buttonRow}\n{bottomRow}", output); + Application.End (runstate); + + // Justify + buttonRow = $"es ] {btn2} {btn3} [ neve"; + Assert.NotEqual (width, buttonRow.Length); + (runstate, var _) = RunButtonTestDialog (title, width, Dialog.ButtonAlignments.Justify, new Button (btn1Text), new Button (btn2Text), new Button (btn3Text), new Button (btn4Text)); + TestHelpers.AssertDriverContentsWithFrameAre ($"{topRow}\n{buttonRow}\n{bottomRow}", output); + Application.End (runstate); + + // Right + buttonRow = $" yes ] {btn2} {btn3} [ neve"; + Assert.NotEqual (width, buttonRow.Length); + (runstate, var _) = RunButtonTestDialog (title, width, Dialog.ButtonAlignments.Right, new Button (btn1Text), new Button (btn2Text), new Button (btn3Text), new Button (btn4Text)); + TestHelpers.AssertDriverContentsWithFrameAre ($"{topRow}\n{buttonRow}\n{bottomRow}", output); + Application.End (runstate); + + // Left + buttonRow = $"es ] {btn2} {btn3} [ never "; + Assert.NotEqual (width, buttonRow.Length); + (runstate, var _) = RunButtonTestDialog (title, width, Dialog.ButtonAlignments.Left, new Button (btn1Text), new Button (btn2Text), new Button (btn3Text), new Button (btn4Text)); + TestHelpers.AssertDriverContentsWithFrameAre ($"{topRow}\n{buttonRow}\n{bottomRow}", output); + Application.End (runstate); + } + [Fact] [AutoInitShutdown] public void ButtonAlignment_Four_Wider ()