maui-linux/Xamarin.Forms.Core.UnitTests/FrameUnitTests.cs

306 строки
6.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
namespace Xamarin.Forms.Core.UnitTests
{
[TestFixture]
public class FrameUnitTests : BaseTestFixture
{
[Test]
public void TestConstructor ()
{
Frame frame = new Frame ();
Assert.Null (frame.Content);
Assert.AreEqual (new Thickness (20, 20, 20, 20), frame.Padding);
}
[Test]
public void TestPackWithoutChild ()
{
Frame frame = new Frame ();
var parent = new NaiveLayout ();
bool thrown = false;
try {
parent.Children.Add (frame);
} catch {
thrown = true;
}
Assert.False (thrown);
}
[Test]
public void TestPackWithChild ()
{
Frame frame = new Frame {
Content = new View ()
};
var parent = new NaiveLayout ();
bool thrown = false;
try {
parent.Children.Add (frame);
} catch {
thrown = true;
}
Assert.False (thrown);
}
[Test]
public void TestSetChild ()
{
Frame frame = new Frame ();
var child1 = new Label ();
bool added = false;
frame.ChildAdded += (sender, e) => added = true;
frame.Content = child1;
Assert.True (added);
Assert.AreEqual (child1, frame.Content);
added = false;
frame.Content = child1;
Assert.False (added);
}
[Test]
public void TestReplaceChild ()
{
Frame frame = new Frame ();
var child1 = new Label ();
var child2 = new Label ();
frame.Content = child1;
bool removed = false;
bool added = false;
frame.ChildRemoved += (sender, e) => removed = true;
frame.ChildAdded += (sender, e) => added = true;
frame.Content = child2;
Assert.True (removed);
Assert.True (added);
Assert.AreEqual (child2, frame.Content);
}
[Test]
public void TestFrameLayout ()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 200,
IsPlatformEnabled = true
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
Assert.AreEqual (new Size (140, 240), frame.GetSizeRequest (double.PositiveInfinity, double.PositiveInfinity).Request);
frame.Layout (new Rectangle (0, 0, 300, 300));
Assert.AreEqual (new Rectangle (20, 20, 260, 260), child.Bounds);
}
[Test]
public void TestDoesNotThrowOnSetNullChild ()
{
Assert.DoesNotThrow (() => new Frame {Content = null});
}
[Test]
public void WidthRequest ()
{
var frame = new Frame {
Content = new View {
WidthRequest = 100,
HeightRequest = 200,
IsPlatformEnabled = true
},
IsPlatformEnabled = true,
Platform = new UnitPlatform (),
WidthRequest = 20
};
Assert.AreEqual (new Size (60, 240), frame.GetSizeRequest (double.PositiveInfinity, double.PositiveInfinity).Request);
}
[Test]
public void HeightRequest ()
{
var frame = new Frame {
Content = new View {
WidthRequest = 100,
HeightRequest = 200,
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
},
IsPlatformEnabled = true,
Platform = new UnitPlatform (),
HeightRequest = 20
};
Assert.AreEqual (new Size (140, 60), frame.GetSizeRequest (double.PositiveInfinity, double.PositiveInfinity).Request);
}
[Test]
public void LayoutVerticallyCenter ()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
VerticalOptions = LayoutOptions.Center
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (20, 50, 160, 100), child.Bounds);
}
[Test]
public void LayoutVerticallyBegin()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
VerticalOptions = LayoutOptions.Start
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (20, 20, 160, 100), child.Bounds);
}
[Test]
public void LayoutVerticallyEnd()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
VerticalOptions = LayoutOptions.End
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (20, 80, 160, 100), child.Bounds);
}
[Test]
public void LayoutHorizontallyCenter()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
HorizontalOptions = LayoutOptions.Center
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (50, 20, 100, 160), child.Bounds);
}
[Test]
public void LayoutHorizontallyBegin()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
HorizontalOptions = LayoutOptions.Start
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (20, 20, 100, 160), child.Bounds);
}
[Test]
public void LayoutHorizontallyEnd()
{
View child;
var frame = new Frame {
Content = child = new View {
WidthRequest = 100,
HeightRequest = 100,
IsPlatformEnabled = true,
HorizontalOptions = LayoutOptions.End
},
IsPlatformEnabled = true,
Platform = new UnitPlatform ()
};
frame.Layout (new Rectangle (0, 0, 200, 200));
Assert.AreEqual (new Rectangle (80, 20, 100, 160), child.Bounds);
}
[Test]
public void SettingPaddingThroughStyle()
{
var frame = new Frame {
Style = new Style(typeof(Frame)) {
Setters = {
new Setter {Property = Layout.PaddingProperty, Value = 0}
}
}
};
Assert.AreEqual(new Thickness(0), frame.Padding);
}
}
}