Xamarin.Forms/Xamarin.Forms.Core.UnitTests/MarginTests.cs

126 строки
2.7 KiB
C#

using NUnit.Framework;
using Xamarin.Forms;
namespace Xamarin.Forms.Core.UnitTests
{
public class MarginTests : BaseTestFixture
{
[SetUp]
public override void Setup()
{
base.Setup();
Device.PlatformServices = new MockPlatformServices(getNativeSizeFunc: (b, d, e) => new SizeRequest(new Size(100, 50)));
}
[TearDown]
public override void TearDown()
{
base.TearDown();
Device.PlatformServices = null;
}
[Test]
public void GetSizeRequestIncludesMargins()
{
var parent = new ContentView
{
IsPlatformEnabled = true,
};
var child = new Button
{
Text = "Test",
IsPlatformEnabled = true,
};
child.Margin = new Thickness(10, 20, 30, 40);
parent.Content = child;
var result = parent.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
Assert.AreEqual(new Size(140, 110), result.Request);
}
[Test]
public void MarginsAffectPositionInContentView()
{
var parent = new ContentView
{
IsPlatformEnabled = true,
};
var child = new Button
{
Text = "Test",
IsPlatformEnabled = true,
};
child.Margin = new Thickness(10, 20, 30, 40);
parent.Content = child;
parent.Layout(new Rectangle(0, 0, 140, 110));
Assert.AreEqual(new Rectangle(10, 20, 100, 50), child.Bounds);
}
[Test]
public void ChangingMarginCausesRelayout()
{
var parent = new ContentView
{
IsPlatformEnabled = true,
};
var child = new Button
{
Text = "Test",
VerticalOptions = LayoutOptions.Start,
HorizontalOptions = LayoutOptions.Start,
IsPlatformEnabled = true,
};
child.Margin = new Thickness(10, 20, 30, 40);
parent.Content = child;
parent.Layout(new Rectangle(0, 0, 1000, 1000));
Assert.AreEqual(new Rectangle(10, 20, 100, 50), child.Bounds);
}
[Test]
public void IntegrationTest()
{
var parent = new StackLayout
{
Spacing = 0,
IsPlatformEnabled = true,
};
var child1 = new Button
{
Text = "Test",
VerticalOptions = LayoutOptions.Start,
HorizontalOptions = LayoutOptions.Start,
IsPlatformEnabled = true,
};
var child2 = new Button
{
Text = "Test",
IsPlatformEnabled = true,
};
child2.Margin = new Thickness(5, 10, 15, 20);
parent.Children.Add(child1);
parent.Children.Add(child2);
parent.Layout(new Rectangle(0, 0, 1000, 1000));
Assert.AreEqual(new Rectangle(0, 0, 100, 50), child1.Bounds);
Assert.AreEqual(new Rectangle(5, 60, 980, 50), child2.Bounds);
child1.Margin = new Thickness(10, 20, 30, 40);
Assert.AreEqual(new Rectangle(10, 20, 100, 50), child1.Bounds);
Assert.AreEqual(new Rectangle(5, 120, 980, 50), child2.Bounds);
}
}
}