Files
AtomUI/tests/AtomUI.Desktop.Controls.Tests/Window/WindowTitleBarLayoutStrategyTests.cs

83 lines
3.1 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.Window;
public class WindowTitleBarLayoutStrategyTests
{
[Theory]
[InlineData(OsType.macOS, Desktop.Controls.WindowTitleBarTitleAlignment.WindowCenter)]
[InlineData(OsType.Windows, Desktop.Controls.WindowTitleBarTitleAlignment.Left)]
[InlineData(OsType.Linux, Desktop.Controls.WindowTitleBarTitleAlignment.Left)]
[InlineData(OsType.Unknown, Desktop.Controls.WindowTitleBarTitleAlignment.Left)]
[InlineData(OsType.Android, Desktop.Controls.WindowTitleBarTitleAlignment.Left)]
public void Platform_Strategy_Maps_Auto_To_The_Approved_Default(
OsType osType,
Desktop.Controls.WindowTitleBarTitleAlignment expected)
{
Desktop.Controls.WindowTitleBarLayoutStrategies.Get(osType)
.AutoAlignment
.ShouldBe(expected);
}
[Theory]
[InlineData(OsType.macOS)]
[InlineData(OsType.Windows)]
[InlineData(OsType.Linux)]
public void Known_Platforms_Preserve_Current_Reported_Overlap_Regardless_Of_Csd_Name(OsType osType)
{
var resolved = Desktop.Controls.WindowTitleBarLayoutStrategies.Get(osType)
.ResolveNativeChromeInsets(
500,
new Thickness(72, 4, 31, 5),
isCsdEnabled: false,
WindowState.Normal);
resolved.ShouldBe(new Thickness(72, 0, 31, 0));
}
[Theory]
[InlineData(OsType.macOS)]
[InlineData(OsType.Windows)]
[InlineData(OsType.Linux)]
public void FullScreen_Does_Not_Inherit_Normal_Native_Chrome_Insets(OsType osType)
{
var resolved = Desktop.Controls.WindowTitleBarLayoutStrategies.Get(osType)
.ResolveNativeChromeInsets(
500,
new Thickness(72, 0, 31, 0),
isCsdEnabled: true,
WindowState.FullScreen);
resolved.ShouldBe(default);
}
[Fact]
public void Known_Platform_Metrics_Are_Normalized_And_Clamped_To_The_Frame()
{
var resolved = Desktop.Controls.WindowTitleBarLayoutStrategies.Get(OsType.macOS)
.ResolveNativeChromeInsets(
100,
new Thickness(double.NaN, 3, 180, 4),
isCsdEnabled: true,
WindowState.Normal);
resolved.ShouldBe(new Thickness(0, 0, 100, 0));
}
[Fact]
public void Unknown_Platform_Does_Not_Invent_An_Inset_From_Untrusted_Metrics()
{
var resolved = Desktop.Controls.WindowTitleBarLayoutStrategies.Get(OsType.Unknown)
.ResolveNativeChromeInsets(
500,
new Thickness(72, 0, 31, 0),
isCsdEnabled: true,
WindowState.Normal);
resolved.ShouldBe(default);
}
}