public void FlowTopBottomAnchorChildrenLeftRightTest(BorderDouble controlPadding, BorderDouble buttonMargin) { GuiWidget containerControl = new GuiWidget(300, 500); containerControl.DoubleBuffer = true; Button controlButtonWide = new Button("Button Wide Text"); containerControl.AddChild(controlButtonWide); Button controlButton1 = new Button("button1"); controlButton1.OriginRelativeParent = new VectorMath.Vector2(controlPadding.Left + buttonMargin.Left + controlButton1.OriginRelativeParent.x, controlPadding.Bottom + buttonMargin.Bottom); controlButtonWide.OriginRelativeParent = new VectorMath.Vector2(controlPadding.Left + buttonMargin.Left + controlButtonWide.OriginRelativeParent.x, controlButton1.BoundsRelativeToParent.Top + buttonMargin.Height); controlButton1.LocalBounds = controlButtonWide.LocalBounds; containerControl.AddChild(controlButton1); containerControl.OnDraw(containerControl.NewGraphics2D()); GuiWidget containerTest = new GuiWidget(300, 500); FlowLayoutWidget flowLayout = new FlowLayoutWidget(FlowDirection.TopToBottom); flowLayout.Padding = controlPadding; containerTest.DoubleBuffer = true; Button testButtonWide = new Button("Button Wide Text"); testButtonWide.HAnchor = HAnchor.ParentLeft; testButtonWide.Margin = buttonMargin; flowLayout.AddChild(testButtonWide); double correctHeightOfFlowLayout = testButtonWide.Height + flowLayout.Padding.Height + testButtonWide.Margin.Height; Assert.AreEqual(flowLayout.Height, correctHeightOfFlowLayout, .001); Button testButton1 = new Button("button1"); testButton1.Margin = buttonMargin; testButton1.HAnchor = HAnchor.ParentLeft | HAnchor.ParentRight; flowLayout.AddChild(testButton1); correctHeightOfFlowLayout += testButton1.Height + testButton1.Margin.Height; Assert.AreEqual(flowLayout.Height, correctHeightOfFlowLayout, .001); flowLayout.HAnchor = HAnchor.ParentLeft; flowLayout.VAnchor = VAnchor.ParentBottom; containerTest.AddChild(flowLayout); Vector2 controlButton1Pos = controlButton1.OriginRelativeParent; Vector2 testButton1Pos = testButton1.TransformToScreenSpace(Vector2.Zero); containerTest.OnDraw(containerTest.NewGraphics2D()); OutputImages(containerControl, containerTest); Assert.IsTrue(containerControl.BackBuffer != null, "When we set a guiWidget to DoubleBuffer it needs to create one."); Assert.IsTrue(containerControl.BackBuffer.Equals(containerTest.BackBuffer, 1), "The Anchored widget should be in the correct place."); // make sure it can resize without breaking RectangleDouble bounds = containerTest.LocalBounds; RectangleDouble newBounds = bounds; newBounds.Right += 10; containerTest.LocalBounds = newBounds; Assert.IsTrue(containerControl.BackBuffer != containerTest.BackBuffer, "The Anchored widget should not be the same size."); containerTest.LocalBounds = bounds; containerTest.OnDraw(containerTest.NewGraphics2D()); OutputImages(containerControl, containerTest); Assert.IsTrue(containerControl.BackBuffer.Equals(containerTest.BackBuffer, 1), "The Anchored widget should be in the correct place."); }