|
|
@@ -0,0 +1,68 @@
|
|
|
+// Copyright (c) The Perspex Project. All rights reserved.
|
|
|
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
|
|
+
|
|
|
+using Perspex.Controls;
|
|
|
+using Xunit;
|
|
|
+
|
|
|
+namespace Perspex.Controls.UnitTests
|
|
|
+{
|
|
|
+ public class GridTests
|
|
|
+ {
|
|
|
+ [Fact]
|
|
|
+ public void Calculates_Colspan_Correctly()
|
|
|
+ {
|
|
|
+ var target = new Grid
|
|
|
+ {
|
|
|
+ ColumnDefinitions = new ColumnDefinitions
|
|
|
+ {
|
|
|
+ new ColumnDefinition(GridLength.Auto),
|
|
|
+ new ColumnDefinition(new GridLength(4, GridUnitType.Pixel)),
|
|
|
+ new ColumnDefinition(GridLength.Auto),
|
|
|
+ },
|
|
|
+ RowDefinitions = new RowDefinitions
|
|
|
+ {
|
|
|
+ new RowDefinition(GridLength.Auto),
|
|
|
+ new RowDefinition(GridLength.Auto),
|
|
|
+ },
|
|
|
+ Children = new Controls
|
|
|
+ {
|
|
|
+ new Border
|
|
|
+ {
|
|
|
+ Width = 100,
|
|
|
+ Height = 25,
|
|
|
+ [Grid.ColumnSpanProperty] = 3,
|
|
|
+ },
|
|
|
+ new Border
|
|
|
+ {
|
|
|
+ Width = 150,
|
|
|
+ Height = 25,
|
|
|
+ [Grid.RowProperty] = 1,
|
|
|
+ },
|
|
|
+ new Border
|
|
|
+ {
|
|
|
+ Width = 50,
|
|
|
+ Height = 25,
|
|
|
+ [Grid.RowProperty] = 1,
|
|
|
+ [Grid.ColumnProperty] = 2,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+
|
|
|
+ // Issue #25 only appears after a second measure
|
|
|
+ target.InvalidateMeasure();
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+
|
|
|
+ target.Arrange(new Rect(target.DesiredSize));
|
|
|
+
|
|
|
+ Assert.Equal(new Size(204, 50), target.Bounds.Size);
|
|
|
+ Assert.Equal(150d, target.ColumnDefinitions[0].ActualWidth);
|
|
|
+ Assert.Equal(4d, target.ColumnDefinitions[1].ActualWidth);
|
|
|
+ Assert.Equal(50d, target.ColumnDefinitions[2].ActualWidth);
|
|
|
+ Assert.Equal(new Rect(52, 0, 100, 25), target.Children[0].Bounds);
|
|
|
+ Assert.Equal(new Rect(0, 25, 150, 25), target.Children[1].Bounds);
|
|
|
+ Assert.Equal(new Rect(154, 25, 50, 25), target.Children[2].Bounds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|