Files
LanMountainDesktop/LanMountainDesktop.Tests/DesktopComponentRuntimeRegistrationCornerRadiusTests.cs

61 lines
2.2 KiB
C#
Raw Normal View History

2026-03-20 18:05:42 +08:00
using Avalonia;
using Avalonia.Controls;
using LanMountainDesktop.Host.Abstractions;
using LanMountainDesktop.Shared.Contracts;
using LanMountainDesktop.Views.Components;
using Xunit;
namespace LanMountainDesktop.Tests;
public sealed class DesktopComponentRuntimeRegistrationCornerRadiusTests
{
[Fact]
2026-04-08 00:55:10 +08:00
public void LegacyCellSizeResolver_ReturnsUnscaledFixedValue()
2026-03-20 18:05:42 +08:00
{
var registration = new DesktopComponentRuntimeRegistration(
componentId: "test.component",
displayNameLocalizationKey: null,
controlFactory: () => new Border(),
cornerRadiusResolver: cellSize => Math.Clamp(cellSize * 0.30, 10, 40));
var resolver = Assert.IsType<Func<ComponentChromeContext, double>>(registration.CornerRadiusResolver);
2026-04-08 00:55:10 +08:00
// Previously: (120 * 0.30) * 2.0 = 72.0
// Now: (120 * 0.30) = 36.0 (No scale applied automatically by the wrapper)
var resolved = resolver(CreateChromeContext(cellSize: 120));
2026-03-20 18:05:42 +08:00
2026-04-08 00:55:10 +08:00
Assert.Equal(36.0, resolved, 3);
2026-03-20 18:05:42 +08:00
}
[Fact]
2026-04-08 00:55:10 +08:00
public void ChromeContextResolver_UsesTokenValue()
2026-03-20 18:05:42 +08:00
{
var registration = new DesktopComponentRuntimeRegistration(
componentId: "test.component",
displayNameLocalizationKey: null,
controlFactory: _ => new Border(),
2026-04-08 00:55:10 +08:00
cornerRadiusResolver: chromeContext => chromeContext.CornerRadiusTokens.Component.TopLeft);
2026-03-20 18:05:42 +08:00
var resolver = Assert.IsType<Func<ComponentChromeContext, double>>(registration.CornerRadiusResolver);
2026-04-08 00:55:10 +08:00
var resolved = resolver(CreateChromeContext(cellSize: 50));
2026-03-20 18:05:42 +08:00
2026-04-08 00:55:10 +08:00
Assert.Equal(24.0, resolved, 3);
2026-03-20 18:05:42 +08:00
}
2026-04-08 00:55:10 +08:00
private static ComponentChromeContext CreateChromeContext(double cellSize)
2026-03-20 18:05:42 +08:00
{
return new ComponentChromeContext(
ComponentId: "test.component",
PlacementId: null,
CellSize: cellSize,
CornerRadiusTokens: new AppearanceCornerRadiusTokens(
2026-04-08 00:55:10 +08:00
Micro: new CornerRadius(6),
Xs: new CornerRadius(12),
Sm: new CornerRadius(14),
Md: new CornerRadius(20),
Lg: new CornerRadius(28),
Xl: new CornerRadius(32),
Island: new CornerRadius(36),
Component: new CornerRadius(24)));
2026-03-20 18:05:42 +08:00
}
}