mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
82 lines
2.5 KiB
C#
82 lines
2.5 KiB
C#
using LanMountainDesktop.Views;
|
|
using Xunit;
|
|
|
|
namespace LanMountainDesktop.Tests;
|
|
|
|
public sealed class FusedDesktopLibraryPreviewLayoutTests
|
|
{
|
|
[Fact]
|
|
public void Calculate_PreservesLandscapeComponentRatio()
|
|
{
|
|
var metrics = FusedDesktopLibraryPreviewLayout.Calculate(
|
|
widthCells: 4,
|
|
heightCells: 2,
|
|
stageWidth: 520,
|
|
stageHeight: 320);
|
|
|
|
Assert.Equal(4, metrics.WidthCells);
|
|
Assert.Equal(2, metrics.HeightCells);
|
|
Assert.True(metrics.Width > metrics.Height);
|
|
Assert.Equal(2d, metrics.Width / metrics.Height, precision: 3);
|
|
}
|
|
|
|
[Fact]
|
|
public void Calculate_PreservesPortraitComponentRatio()
|
|
{
|
|
var metrics = FusedDesktopLibraryPreviewLayout.Calculate(
|
|
widthCells: 2,
|
|
heightCells: 4,
|
|
stageWidth: 520,
|
|
stageHeight: 320);
|
|
|
|
Assert.Equal(2, metrics.WidthCells);
|
|
Assert.Equal(4, metrics.HeightCells);
|
|
Assert.True(metrics.Height > metrics.Width);
|
|
Assert.Equal(0.5d, metrics.Width / metrics.Height, precision: 3);
|
|
}
|
|
|
|
[Fact]
|
|
public void Calculate_FitsPreviewInsideStageInsets()
|
|
{
|
|
var metrics = FusedDesktopLibraryPreviewLayout.Calculate(
|
|
widthCells: 4,
|
|
heightCells: 4,
|
|
stageWidth: 420,
|
|
stageHeight: 260);
|
|
|
|
Assert.Equal(metrics.Width, metrics.Height, precision: 3);
|
|
Assert.True(metrics.Width <= 420);
|
|
Assert.True(metrics.Height <= 260);
|
|
Assert.True(metrics.CellSize > 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Calculate_UsesFallbackStageWhenBoundsAreNotMeasured()
|
|
{
|
|
var metrics = FusedDesktopLibraryPreviewLayout.Calculate(
|
|
widthCells: 4,
|
|
heightCells: 2,
|
|
stageWidth: 0,
|
|
stageHeight: 0);
|
|
|
|
Assert.True(metrics.Width > 0);
|
|
Assert.True(metrics.Height > 0);
|
|
Assert.Equal(2d, metrics.Width / metrics.Height, precision: 3);
|
|
}
|
|
|
|
[Fact]
|
|
public void Calculate_RespectsMinCellSize()
|
|
{
|
|
// 测试非常小的 stage 尺寸,确保 cellSize 不会小于 MinCellSize
|
|
var metrics = FusedDesktopLibraryPreviewLayout.Calculate(
|
|
widthCells: 10,
|
|
heightCells: 10,
|
|
stageWidth: 50,
|
|
stageHeight: 50);
|
|
|
|
Assert.Equal(32d, metrics.CellSize, precision: 3);
|
|
Assert.Equal(320d, metrics.Width, precision: 3);
|
|
Assert.Equal(320d, metrics.Height, precision: 3);
|
|
}
|
|
}
|