public void MaxHeightDominatesHeight() { var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rectangle(0, 0, 100, 100); SetLayoutBounds(abs, child, childBounds); abs.Height.Returns(75); abs.MaximumHeight.Returns(50); var gridLayoutManager = new AbsoluteLayoutManager(abs); var measure = gridLayoutManager.Measure(double.PositiveInfinity, double.PositiveInfinity); // The maximum value beats out the explicit value Assert.Equal(50, measure.Height); }
public void MinWidthDominatesMaxWidth() { var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rectangle(0, 0, 100, 100); SetLayoutBounds(abs, child, childBounds); abs.MinimumWidth.Returns(75); abs.MaximumWidth.Returns(50); var gridLayoutManager = new AbsoluteLayoutManager(abs); var measure = gridLayoutManager.Measure(double.PositiveInfinity, double.PositiveInfinity); // The minimum value should beat out the maximum value Assert.Equal(75, measure.Width); }
public void ChildMeasureRespectsProportionalBounds() { double expectedWidth = 0.5; double expectedHeight = 0.6; double widthConstraint = 200; double heightConstraint = 200; var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rectangle(0, 0, expectedWidth, expectedHeight); SetLayoutBounds(abs, child, childBounds); SetLayoutFlags(abs, child, AbsoluteLayoutFlags.SizeProportional); var gridLayoutManager = new AbsoluteLayoutManager(abs); var measure = gridLayoutManager.Measure(widthConstraint, heightConstraint); child.Received().Measure(Arg.Is(expectedWidth * widthConstraint), Arg.Is(expectedHeight * heightConstraint)); }
public void RtlShouldHaveFirstItemOnTheRight() { var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rect(10, 0, 100, 100); SetLayoutBounds(abs, child, childBounds); abs.FlowDirection.Returns(FlowDirection.RightToLeft); var manager = new AbsoluteLayoutManager(abs); var measuredSize = manager.Measure(double.PositiveInfinity, 100); manager.ArrangeChildren(new Rect(Point.Zero, measuredSize)); // We expect that the view should be arranged on the right var expectedRectangle = new Rect(0, 0, 100, 100); abs[0].Received().Arrange(Arg.Is(expectedRectangle)); }
public void AbsolutePositionRelativeSize() { var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rectangle(10, 20, 0.4, 0.5); SetLayoutBounds(abs, child, childBounds); SetLayoutFlags(abs, child, AbsoluteLayoutFlags.SizeProportional); var manager = new AbsoluteLayoutManager(abs); var measure = manager.Measure(100, 100); manager.ArrangeChildren(new Rectangle(0, 0, 100, 100)); var expectedMeasure = new Size(10 + 40, 20 + 50); Assert.Equal(expectedMeasure, measure); child.Received().Arrange(Arg.Is <Rectangle>(r => r.X == 10 && r.Y == 20 && r.Width == 40 && r.Height == 50)); }
public void RelativePositionAbsoluteSize(double width, double height, double propX, double propY) { var abs = CreateTestLayout(); var child = CreateTestView(); SubstituteChildren(abs, child); var childBounds = new Rectangle(propX, propY, width, height); SetLayoutBounds(abs, child, childBounds); SetLayoutFlags(abs, child, AbsoluteLayoutFlags.PositionProportional); var manager = new AbsoluteLayoutManager(abs); manager.Measure(100, 100); manager.ArrangeChildren(new Rectangle(0, 0, 100, 100)); double expectedX = (100 - width) * propX; double expectedY = (100 - height) * propY; var expectedRectangle = new Rectangle(expectedX, expectedY, width, height); child.Received().Arrange(Arg.Is(expectedRectangle)); }