Add test for Int.Max minwidth

This commit is contained in:
Thomas
2023-01-30 08:44:25 +00:00
parent da5ca55a1b
commit 61e2faccba
2 changed files with 44 additions and 18 deletions

View File

@@ -704,7 +704,9 @@ namespace Terminal.Gui {
if (availableLeft < requiredLeft) {
// There is not enough space for panel on left
var insteadTake = requiredLeft + (HasBorder() ? 1 :0);
var insteadTake = requiredLeft == int.MaxValue ?
int.MaxValue :
requiredLeft + (HasBorder() ? 1 :0);
// Don't take more than the available space in view
insteadTake = Math.Max(0,Math.Min (fullSpace, insteadTake));

View File

@@ -908,33 +908,26 @@ namespace UnitTests {
[Fact,AutoInitShutdown]
public void Test5Panel_MinSizes_VerticalSplitters()
{
var tv = new TileView (5){ Width = 25, Height = 4, ColorScheme = new ColorScheme (), IntegratedBorder = BorderStyle.Single };
var tv = Get5x1TilesView();
tv.Tiles.ElementAt (0).View.Add (new Label(new string('1',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (1).View.Add (new Label(new string('2',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (2).View.Add (new Label(new string('3',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (3).View.Add (new Label(new string('4',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (4).View.Add (new Label(new string('5',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
Application.Top.Add (tv);
tv.BeginInit ();
tv.EndInit ();
tv.LayoutSubviews ();
tv.Tiles.ElementAt(0).MinSize = int.MaxValue;
tv.SetNeedsDisplay();
tv.LayoutSubviews();
Assert.True(tv.IsInitialized);
tv.Redraw (tv.Bounds);
var looksLike =
@"
┌───────────────────┐
│1111│2222│3333│4444│555
└───────────────────┘
┌───────────────────────┐
│11111111111111111111111
└───────────────────────┘
";
TestHelpers.AssertDriverContentsAre (looksLike, output);
// TODO : Apply min sizes and create test assertions
}
[Fact, AutoInitShutdown]
@@ -1418,6 +1411,37 @@ namespace UnitTests {
Assert.True (line.HasFocus);
}
private TileView Get5x1TilesView ()
{
var tv = new TileView (5){ Width = 25, Height = 4, ColorScheme = new ColorScheme (), IntegratedBorder = BorderStyle.Single };
tv.Tiles.ElementAt (0).View.Add (new Label(new string('1',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (1).View.Add (new Label(new string('2',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (2).View.Add (new Label(new string('3',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (3).View.Add (new Label(new string('4',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
tv.Tiles.ElementAt (4).View.Add (new Label(new string('5',100)){AutoSize=false,Width=Dim.Fill(),Height = 1});
Application.Top.Add (tv);
tv.BeginInit ();
tv.EndInit ();
tv.LayoutSubviews ();
tv.Redraw (tv.Bounds);
var looksLike =
@"
┌────┬────┬────┬────┬───┐
│1111│2222│3333│4444│555│
│ │ │ │ │ │
└────┴────┴────┴────┴───┘
";
TestHelpers.AssertDriverContentsAre (looksLike, output);
return tv;
}
private TileView Get11By3TileView (out LineView line, bool withBorder = false)
{
var split = Get11By3TileView (withBorder);