mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-29 09:18:01 +01:00
125 lines
4.4 KiB
C#
125 lines
4.4 KiB
C#
using Xunit.Abstractions;
|
|
|
|
namespace Terminal.Gui.ViewTests;
|
|
|
|
public class AdornmentTests
|
|
{
|
|
private readonly ITestOutputHelper _output;
|
|
public AdornmentTests (ITestOutputHelper output) { _output = output; }
|
|
|
|
[Fact]
|
|
public void BoundsToScreen_Uses_Parent_Not_SuperView ()
|
|
{
|
|
var parent = new View { X = 1, Y = 2, Width = 10, Height = 10 };
|
|
|
|
parent.BeginInit ();
|
|
parent.EndInit ();
|
|
|
|
Assert.Equal (new Rectangle (1, 2, 10, 10), parent.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Bounds);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Margin.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Margin.Bounds);
|
|
|
|
Assert.Null (parent.Margin.SuperView);
|
|
Rectangle boundsAsScreen = parent.Margin.BoundsToScreen (new Rectangle (1, 2, 5, 5));
|
|
Assert.Equal (new Rectangle (2, 4, 5, 5), boundsAsScreen);
|
|
}
|
|
|
|
[Fact]
|
|
public void FrameToScreen_Uses_Parent_Not_SuperView ()
|
|
{
|
|
var parent = new View { X = 1, Y = 2, Width = 10, Height = 10 };
|
|
|
|
parent.BeginInit ();
|
|
parent.EndInit ();
|
|
|
|
Assert.Equal (new Rectangle (1, 2, 10, 10), parent.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Bounds);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Margin.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Margin.Bounds);
|
|
|
|
Assert.Null (parent.Margin.SuperView);
|
|
Assert.Equal (new Rectangle (1, 2, 10, 10), parent.Margin.FrameToScreen ());
|
|
}
|
|
|
|
[Fact]
|
|
public void GetAdornmentsThickness ()
|
|
{
|
|
var view = new View ();
|
|
Assert.Equal (Thickness.Empty, view.GetAdornmentsThickness ());
|
|
|
|
view.Margin.Thickness = new Thickness (1);
|
|
Assert.Equal (new Thickness (1), view.GetAdornmentsThickness ());
|
|
|
|
view.Border.Thickness = new Thickness (1);
|
|
Assert.Equal (new Thickness (2), view.GetAdornmentsThickness ());
|
|
|
|
view.Padding.Thickness = new Thickness (1);
|
|
Assert.Equal (new Thickness (3), view.GetAdornmentsThickness ());
|
|
|
|
view.Padding.Thickness = new Thickness (2);
|
|
Assert.Equal (new Thickness (4), view.GetAdornmentsThickness ());
|
|
|
|
view.Padding.Thickness = new Thickness (1, 2, 3, 4);
|
|
Assert.Equal (new Thickness (3, 4, 5, 6), view.GetAdornmentsThickness ());
|
|
|
|
view.Margin.Thickness = new Thickness (1, 2, 3, 4);
|
|
Assert.Equal (new Thickness (3, 5, 7, 9), view.GetAdornmentsThickness ());
|
|
view.Dispose ();
|
|
}
|
|
|
|
[Fact]
|
|
public void Setting_Bounds_Throws ()
|
|
{
|
|
var adornment = new Adornment (null);
|
|
Assert.Throws<InvalidOperationException> (() => adornment.Bounds = new Rectangle (1, 2, 3, 4));
|
|
}
|
|
|
|
[Fact]
|
|
public void Setting_SuperView_Throws ()
|
|
{
|
|
var adornment = new Adornment (null);
|
|
Assert.Throws<NotImplementedException> (() => adornment.SuperView = new View ());
|
|
}
|
|
|
|
[Fact]
|
|
public void Setting_SuperViewRendersLineCanvas_Throws ()
|
|
{
|
|
var adornment = new Adornment (null);
|
|
Assert.Throws<NotImplementedException> (() => adornment.SuperViewRendersLineCanvas = true);
|
|
}
|
|
|
|
[Fact]
|
|
public void Setting_Thickness_Changes_Parent_Bounds ()
|
|
{
|
|
var parent = new View { Width = 10, Height = 10 };
|
|
parent.BeginInit ();
|
|
parent.EndInit ();
|
|
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Bounds);
|
|
|
|
parent.Margin.Thickness = new Thickness (1);
|
|
Assert.Equal (new Rectangle (0, 0, 10, 10), parent.Frame);
|
|
Assert.Equal (new Rectangle (0, 0, 8, 8), parent.Bounds);
|
|
}
|
|
|
|
[Fact]
|
|
public void Setting_Thickness_Raises_ThicknessChanged ()
|
|
{
|
|
var adornment = new Adornment (null);
|
|
var super = new View ();
|
|
var raised = false;
|
|
|
|
adornment.ThicknessChanged += (s, e) =>
|
|
{
|
|
raised = true;
|
|
Assert.Equal (Thickness.Empty, e.PreviousThickness);
|
|
Assert.Equal (new Thickness (1, 2, 3, 4), e.Thickness);
|
|
Assert.Equal (new Thickness (1, 2, 3, 4), adornment.Thickness);
|
|
};
|
|
adornment.Thickness = new Thickness (1, 2, 3, 4);
|
|
Assert.True (raised);
|
|
}
|
|
}
|