Skip to content

Commit

Permalink
Merge pull request #569 from unoplatform/dev/cdb/autolayout-panel
Browse files Browse the repository at this point in the history
AutoLayout is now a Panel
  • Loading branch information
carldebilly committed May 17, 2023
2 parents 0aace1e + 1c0d602 commit afb5d23
Show file tree
Hide file tree
Showing 9 changed files with 1,131 additions and 660 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<Rectangle utu:AutoLayout.CounterLength="100" utu:AutoLayout.PrimaryLength="100" Fill="Blue"/>
<TextBlock Text="With Width and Height" TextAlignment="Center"/>
<Rectangle Height="100" Width="100" Fill="Red"/>
<TextBlock Text="Margin don't work with the attached properties CounterLength and PrimaryLength" TextAlignment="Center"/>
<TextBlock Text="Margin work with CounterLength and PrimaryLength" TextAlignment="Center"/>
<Rectangle Margin="20" utu:AutoLayout.CounterLength="100" utu:AutoLayout.PrimaryLength="100" Fill="Green"/>
<TextBlock Text="Margin work With Width and Height" TextAlignment="Center"/>
<Rectangle Margin="20" Width="100" Height="100" Fill="Pink"/>
Expand Down
47 changes: 29 additions & 18 deletions src/Uno.Toolkit.RuntimeTests/Tests/AutoLayoutTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
using Uno.Toolkit.UI;
using Uno.UI.RuntimeTests;
using Windows.UI;
using FluentAssertions;
using FluentAssertions.Execution;
#if IS_WINUI
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
Expand Down Expand Up @@ -64,34 +66,43 @@ public async Task When_SpaceBetween_with_spacing(Orientation orientation, double
var layoutRect1Actual = LayoutInformation.GetLayoutSlot(SUT.Children[1] as FrameworkElement);
var layoutRect2Actual = LayoutInformation.GetLayoutSlot(SUT.Children[2] as FrameworkElement);

using var _ = new AssertionScope();

if (orientation is Orientation.Vertical)
{
Assert.AreEqual(expectedResult1, layoutRect0Actual.Y);
Assert.AreEqual(expectedResult2, layoutRect1Actual.Y);
Assert.AreEqual(expectedResult3, layoutRect2Actual.Y);
layoutRect0Actual.Y.Should().Be(expectedResult1);
layoutRect1Actual.Y.Should().Be(expectedResult2);
layoutRect2Actual.Y.Should().Be(expectedResult3);
}
else
{
Assert.AreEqual(expectedResult1, layoutRect0Actual.X);
Assert.AreEqual(expectedResult2, layoutRect1Actual.X);
Assert.AreEqual(expectedResult3, layoutRect2Actual.X);
layoutRect0Actual.X.Should().Be(expectedResult1);
layoutRect1Actual.X.Should().Be(expectedResult2);
layoutRect2Actual.X.Should().Be(expectedResult3);
}
}


[TestMethod]
[RequiresFullWindow]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Bottom, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 0, 0, 10 }, 10, 298, 110, 12, 185)]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, 10, 12, 110, 12, 185)]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, -30, 12, 110, 12, 165)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, 10, 12, 12, 12, 105)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, 10, 12, 12, 12, 105)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, -30, 12, 12, 12, 85)]
[DataRow(false, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, 10, 12, 110, 138, 248)]
[DataRow(false, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, 10, 12, 110, 78, 138)]
[DataRow(false, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, -20, 12, 110, 168, 248)]
[DataRow(false, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 108, 10, 0, 0 }, -20, 12, 110, 108, 138)]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Bottom, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 0, 0, 10 }, 10, 300, 110, 12, 185)]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, 10, 10, 110, 12, 185)]
[DataRow(true, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, -30, 10, 110, 12, 165)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, 10, 10, 10, 12, 105)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, 10, 10, 10, 12, 105)]
[DataRow(true, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 10, 10, 0, 0 }, -30, 10, 10, 12, 85)]
[DataRow(false, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, 10, 10, 110, 138, 248)]
[DataRow(false, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, 10, 10, 110, 78, 138)]
[DataRow(false, Orientation.Vertical, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, -20, 10, 110, 168, 248)]
[DataRow(false, Orientation.Horizontal, VerticalAlignment.Top, HorizontalAlignment.Left, new[] { 10, 10, 10, 10 }, new[] { 110, 10, 0, 0 }, -20, 10, 110, 108, 138)]
public async Task When_AbsolutePosition_WithPadding(bool isStretch, Orientation orientation, VerticalAlignment vAlign, HorizontalAlignment hAlign, int[] padding, int[] margin, int spacing, double expectedY, double expectedX, double rec1expected, double rec2expected)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Create("BROWSER")))
{
Assert.Inconclusive("This test is not valid on Wasm");
return;
}

var SUT = new AutoLayout()
{
Orientation = orientation,
Expand Down Expand Up @@ -229,8 +240,8 @@ public async Task When_Padding(bool isStretch, Orientation orientation, AutoLayo
var border1 = new Border()
{
Background = new SolidColorBrush(Color.FromArgb(255, 0, 0, 255)),
Width = 350,
Height = 350,
Width = orientation is Orientation.Horizontal && isStretch ? double.NaN : 350,
Height = orientation is Orientation.Vertical && isStretch ? double.NaN : 350,
};

if (isStretch)
Expand Down
Loading

0 comments on commit afb5d23

Please sign in to comment.