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));
        }
Exemplo n.º 4
0
        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));
        }