WinSizeTests.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using YZWater.Core.Utils;
  2. namespace YZWater.Core.Tests.Utils;
  3. public class WinSizeTests
  4. {
  5. [Fact]
  6. public void GetScaleFactor_ReturnsMinOfXAndY()
  7. {
  8. // 宽屏:高度为限制因素
  9. var scale = WinSize.GetScaleFactor(2048, 768);
  10. Assert.Equal(1.0, scale);
  11. // 等比放大
  12. var scale2 = WinSize.GetScaleFactor(1536, 1152);
  13. Assert.Equal(1.5, scale2, 5);
  14. }
  15. [Fact]
  16. public void GetScaleFactor_SmallScreen_ReturnsReducedScale()
  17. {
  18. var scale = WinSize.GetScaleFactor(512, 384);
  19. Assert.Equal(0.5, scale);
  20. }
  21. [Fact]
  22. public void CalculateSize_ScalesCorrectly()
  23. {
  24. var result = WinSize.CalculateSize(100, 1.5);
  25. Assert.Equal(150, result);
  26. }
  27. [Fact]
  28. public void CalculateFontSize_ClampsToMinimum()
  29. {
  30. var result = WinSize.CalculateFontSize(8, 0.5); // 8 * 0.5 = 4, 低于下限 12
  31. Assert.Equal(12, result);
  32. }
  33. [Fact]
  34. public void CalculateFontSize_ClampsToMaximum()
  35. {
  36. var result = WinSize.CalculateFontSize(20, 1.5); // 20 * 1.5 = 30, 超过上限 24
  37. Assert.Equal(24, result);
  38. }
  39. [Fact]
  40. public void CalculateFontSize_WithinRange_NoClamp()
  41. {
  42. var result = WinSize.CalculateFontSize(14, 1.2); // 14 * 1.2 = 16.8
  43. Assert.Equal(16.8, result);
  44. }
  45. [Fact]
  46. public void CalculateMargin_Uniform_AllSidesEqual()
  47. {
  48. var margin = WinSize.CalculateMargin(10, 2.0);
  49. Assert.Equal(20, margin.Left);
  50. Assert.Equal(20, margin.Top);
  51. Assert.Equal(20, margin.Right);
  52. Assert.Equal(20, margin.Bottom);
  53. }
  54. [Fact]
  55. public void CalculateMargin_Independent_ScalesEachSide()
  56. {
  57. var margin = WinSize.CalculateMargin(10, 20, 30, 40, 2.0);
  58. Assert.Equal(20, margin.Left);
  59. Assert.Equal(40, margin.Top);
  60. Assert.Equal(60, margin.Right);
  61. Assert.Equal(80, margin.Bottom);
  62. }
  63. }