| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // Copyright (c) The Avalonia Project. All rights reserved.
- // Licensed under the MIT license. See licence.md file in the project root for full license information.
- using Xunit;
- namespace Avalonia.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 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);
- }
- [Fact]
- public void Layout_EmptyColumnRow_LayoutLikeANormalPanel()
- {
- // Arrange & Action
- var grid = GridMock.New(arrange: new Size(600, 200));
- // Assert
- GridAssert.ChildrenWidth(grid, 600);
- GridAssert.ChildrenHeight(grid, 200);
- }
- [Fact]
- public void Layout_PixelRowColumn_BoundsCorrect()
- {
- // Arrange & Action
- var rowGrid = GridMock.New(new RowDefinitions("100,200,300"));
- var columnGrid = GridMock.New(new ColumnDefinitions("50,100,150"));
- // Assert
- GridAssert.ChildrenHeight(rowGrid, 100, 200, 300);
- GridAssert.ChildrenWidth(columnGrid, 50, 100, 150);
- }
- [Fact]
- public void Layout_StarRowColumn_BoundsCorrect()
- {
- // Arrange & Action
- var rowGrid = GridMock.New(new RowDefinitions("1*,2*,3*"), 600);
- var columnGrid = GridMock.New(new ColumnDefinitions("*,*,2*"), 600);
- // Assert
- GridAssert.ChildrenHeight(rowGrid, 100, 200, 300);
- GridAssert.ChildrenWidth(columnGrid, 150, 150, 300);
- }
- [Fact]
- public void Layout_MixPixelStarRowColumn_BoundsCorrect()
- {
- // Arrange & Action
- var rowGrid = GridMock.New(new RowDefinitions("1*,2*,150"), 600);
- var columnGrid = GridMock.New(new ColumnDefinitions("1*,2*,150"), 600);
- // Assert
- GridAssert.ChildrenHeight(rowGrid, 150, 300, 150);
- GridAssert.ChildrenWidth(columnGrid, 150, 300, 150);
- }
- [Fact]
- public void Layout_StarRowColumnWithMinLength_BoundsCorrect()
- {
- // Arrange & Action
- var rowGrid = GridMock.New(new RowDefinitions
- {
- new RowDefinition(1, GridUnitType.Star) { MinHeight = 200 },
- new RowDefinition(1, GridUnitType.Star),
- new RowDefinition(1, GridUnitType.Star),
- }, 300);
- var columnGrid = GridMock.New(new ColumnDefinitions
- {
- new ColumnDefinition(1, GridUnitType.Star) { MinWidth = 200 },
- new ColumnDefinition(1, GridUnitType.Star),
- new ColumnDefinition(1, GridUnitType.Star),
- }, 300);
- // Assert
- GridAssert.ChildrenHeight(rowGrid, 200, 50, 50);
- GridAssert.ChildrenWidth(columnGrid, 200, 50, 50);
- }
- [Fact]
- public void Layout_StarRowColumnWithMaxLength_BoundsCorrect()
- {
- // Arrange & Action
- var rowGrid = GridMock.New(new RowDefinitions
- {
- new RowDefinition(1, GridUnitType.Star) { MaxHeight = 200 },
- new RowDefinition(1, GridUnitType.Star),
- new RowDefinition(1, GridUnitType.Star),
- }, 800);
- var columnGrid = GridMock.New(new ColumnDefinitions
- {
- new ColumnDefinition(1, GridUnitType.Star) { MaxWidth = 200 },
- new ColumnDefinition(1, GridUnitType.Star),
- new ColumnDefinition(1, GridUnitType.Star),
- }, 800);
- // Assert
- GridAssert.ChildrenHeight(rowGrid, 200, 300, 300);
- GridAssert.ChildrenWidth(columnGrid, 200, 300, 300);
- }
- }
- }
|