소스 검색

Merge pull request #3285 from AvaloniaUI/hackfix-rangebase-validatedouble

Hackfix for #3284
danwalmsley 6 년 전
부모
커밋
a898f15641
2개의 변경된 파일15개의 추가작업 그리고 26개의 파일을 삭제
  1. 15 10
      src/Avalonia.Controls/Primitives/RangeBase.cs
  2. 0 16
      tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs

+ 15 - 10
src/Avalonia.Controls/Primitives/RangeBase.cs

@@ -75,7 +75,10 @@ namespace Avalonia.Controls.Primitives
 
 
             set
             set
             {
             {
-                ValidateDouble(value, "Minimum");
+                if (!ValidateDouble(value))
+                {
+                    return;
+                }
 
 
                 if (IsInitialized)
                 if (IsInitialized)
                 {
                 {
@@ -102,7 +105,10 @@ namespace Avalonia.Controls.Primitives
 
 
             set
             set
             {
             {
-                ValidateDouble(value, "Maximum");
+                if (!ValidateDouble(value))
+                {
+                    return;
+                }
 
 
                 if (IsInitialized)
                 if (IsInitialized)
                 {
                 {
@@ -129,7 +135,10 @@ namespace Avalonia.Controls.Primitives
 
 
             set
             set
             {
             {
-                ValidateDouble(value, "Value");
+                if (!ValidateDouble(value))
+                {
+                    return;
+                }
 
 
                 if (IsInitialized)
                 if (IsInitialized)
                 {
                 {
@@ -164,16 +173,12 @@ namespace Avalonia.Controls.Primitives
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// Throws an exception if the double value is NaN or Inf.
+        /// Checks if the double value is not inifinity nor NaN.
         /// </summary>
         /// </summary>
         /// <param name="value">The value.</param>
         /// <param name="value">The value.</param>
-        /// <param name="property">The name of the property being set.</param>
-        private static void ValidateDouble(double value, string property)
+        private static bool ValidateDouble(double value)
         {
         {
-            if (double.IsInfinity(value) || double.IsNaN(value))
-            {
-                throw new ArgumentException($"{value} is not a valid value for {property}.");
-            }
+            return !double.IsInfinity(value) || !double.IsNaN(value);
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 0 - 16
tests/Avalonia.Controls.UnitTests/Primitives/RangeBaseTests.cs

@@ -82,22 +82,6 @@ namespace Avalonia.Controls.UnitTests.Primitives
             Assert.Equal(50, target.Value);
             Assert.Equal(50, target.Value);
         }
         }
 
 
-        [Fact]
-        public void Properties_Should_Not_Accept_Nan_And_Inifinity()
-        {
-            var target = new TestRange();
-
-            Assert.Throws<ArgumentException>(() => target.Minimum = double.NaN);
-            Assert.Throws<ArgumentException>(() => target.Minimum = double.PositiveInfinity);
-            Assert.Throws<ArgumentException>(() => target.Minimum = double.NegativeInfinity);
-            Assert.Throws<ArgumentException>(() => target.Maximum = double.NaN);
-            Assert.Throws<ArgumentException>(() => target.Maximum = double.PositiveInfinity);
-            Assert.Throws<ArgumentException>(() => target.Maximum = double.NegativeInfinity);
-            Assert.Throws<ArgumentException>(() => target.Value = double.NaN);
-            Assert.Throws<ArgumentException>(() => target.Value = double.PositiveInfinity);
-            Assert.Throws<ArgumentException>(() => target.Value = double.NegativeInfinity);
-        }
-
         [Theory]
         [Theory]
         [InlineData(true)]
         [InlineData(true)]
         [InlineData(false)]
         [InlineData(false)]