LayoutHelperTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using Avalonia.Layout;
  3. using Xunit;
  4. namespace Avalonia.Base.UnitTests.Layout
  5. {
  6. public class LayoutHelperTests
  7. {
  8. [Fact]
  9. public void Round_Layout_Value_Without_DPI_Aware()
  10. {
  11. const double value = 42.5;
  12. var expectedValue = Math.Round(value);
  13. var actualValue = LayoutHelper.RoundLayoutValue(value, 1.0);
  14. Assert.Equal(expectedValue, actualValue);
  15. }
  16. [Fact]
  17. public void Round_Layout_Value_With_DPI_Aware()
  18. {
  19. const double dpiScale = 1.25;
  20. const double value = 42.5;
  21. var expectedValue = Math.Round(value * dpiScale) / dpiScale;
  22. var actualValue = LayoutHelper.RoundLayoutValue(value, dpiScale);
  23. Assert.Equal(expectedValue, actualValue);
  24. }
  25. [Fact]
  26. public void ValidateScaling_Returns_Exact_One_For_Approximate_One()
  27. {
  28. var result = LayoutHelper.ValidateScaling(1.000000000000001);
  29. Assert.Equal(1.0, result);
  30. }
  31. [Fact]
  32. public void ValidateScaling_Returns_Valid_Scaling_Value()
  33. {
  34. const double scaling = 1.5;
  35. var result = LayoutHelper.ValidateScaling(scaling);
  36. Assert.Equal(scaling, result);
  37. }
  38. [Theory]
  39. [InlineData(0.0)]
  40. [InlineData(-1.5)]
  41. [InlineData(double.NaN)]
  42. [InlineData(double.PositiveInfinity)]
  43. [InlineData(double.NegativeInfinity)]
  44. public void ValidateScaling_Throws_For_Invalid_Values(double scaling)
  45. {
  46. Assert.Throws<InvalidOperationException>(() => LayoutHelper.ValidateScaling(scaling));
  47. }
  48. }
  49. }