using YZWater.Core.Utils; namespace YZWater.Core.Tests.Utils; public class WinSizeTests { [Fact] public void GetScaleFactor_ReturnsMinOfXAndY() { // 宽屏:高度为限制因素 var scale = WinSize.GetScaleFactor(2048, 768); Assert.Equal(1.0, scale); // 等比放大 var scale2 = WinSize.GetScaleFactor(1536, 1152); Assert.Equal(1.5, scale2, 5); } [Fact] public void GetScaleFactor_SmallScreen_ReturnsReducedScale() { var scale = WinSize.GetScaleFactor(512, 384); Assert.Equal(0.5, scale); } [Fact] public void CalculateSize_ScalesCorrectly() { var result = WinSize.CalculateSize(100, 1.5); Assert.Equal(150, result); } [Fact] public void CalculateFontSize_ClampsToMinimum() { var result = WinSize.CalculateFontSize(8, 0.5); // 8 * 0.5 = 4, 低于下限 12 Assert.Equal(12, result); } [Fact] public void CalculateFontSize_ClampsToMaximum() { var result = WinSize.CalculateFontSize(20, 1.5); // 20 * 1.5 = 30, 超过上限 24 Assert.Equal(24, result); } [Fact] public void CalculateFontSize_WithinRange_NoClamp() { var result = WinSize.CalculateFontSize(14, 1.2); // 14 * 1.2 = 16.8 Assert.Equal(16.8, result); } [Fact] public void CalculateMargin_Uniform_AllSidesEqual() { var margin = WinSize.CalculateMargin(10, 2.0); Assert.Equal(20, margin.Left); Assert.Equal(20, margin.Top); Assert.Equal(20, margin.Right); Assert.Equal(20, margin.Bottom); } [Fact] public void CalculateMargin_Independent_ScalesEachSide() { var margin = WinSize.CalculateMargin(10, 20, 30, 40, 2.0); Assert.Equal(20, margin.Left); Assert.Equal(40, margin.Top); Assert.Equal(60, margin.Right); Assert.Equal(80, margin.Bottom); } }