|
|
@@ -0,0 +1,144 @@
|
|
|
+using Avalonia.Controls.Primitives;
|
|
|
+using Xunit;
|
|
|
+
|
|
|
+namespace Avalonia.Controls.UnitTests.Primitives
|
|
|
+{
|
|
|
+ public class UniformGridTests
|
|
|
+ {
|
|
|
+ [Fact]
|
|
|
+ public void Grid_Columns_Equals_Rows_For_Auto_Columns_And_Rows()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 2 * 2 grid
|
|
|
+ Assert.Equal(new Size(2 * 80, 2 * 90), target.Bounds.Size);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Grid_Expands_Vertically_For_Columns_With_Auto_Rows()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Columns = 2,
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90 },
|
|
|
+ new Border { Width = 20, Height = 30 },
|
|
|
+ new Border { Width = 40, Height = 60 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 2 * 3 grid
|
|
|
+ Assert.Equal(new Size(2 * 80, 3 * 90), target.Bounds.Size);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Grid_Extends_For_Columns_And_First_Column_With_Auto_Rows()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Columns = 3,
|
|
|
+ FirstColumn = 2,
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90 },
|
|
|
+ new Border { Width = 20, Height = 30 },
|
|
|
+ new Border { Width = 40, Height = 60 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 3 * 3 grid
|
|
|
+ Assert.Equal(new Size(3 * 80, 3 * 90), target.Bounds.Size);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Grid_Expands_Horizontally_For_Rows_With_Auto_Columns()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Rows = 2,
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90 },
|
|
|
+ new Border { Width = 20, Height = 30 },
|
|
|
+ new Border { Width = 40, Height = 60 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 3 * 2 grid
|
|
|
+ Assert.Equal(new Size(3 * 80, 2 * 90), target.Bounds.Size);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Grid_Size_Is_Limited_By_Rows_And_Columns()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Columns = 2,
|
|
|
+ Rows = 2,
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90 },
|
|
|
+ new Border { Width = 20, Height = 30 },
|
|
|
+ new Border { Width = 40, Height = 60 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 2 * 2 grid
|
|
|
+ Assert.Equal(new Size(2 * 80, 2 * 90), target.Bounds.Size);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Not_Visible_Children_Are_Ignored()
|
|
|
+ {
|
|
|
+ var target = new UniformGrid()
|
|
|
+ {
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Border { Width = 50, Height = 70 },
|
|
|
+ new Border { Width = 30, Height = 50 },
|
|
|
+ new Border { Width = 80, Height = 90, IsVisible = false },
|
|
|
+ new Border { Width = 20, Height = 30 },
|
|
|
+ new Border { Width = 40, Height = 60 }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ // 2 * 2 grid
|
|
|
+ Assert.Equal(new Size(2 * 50, 2 * 70), target.Bounds.Size);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|