Browse Source

Merge pull request #1539 from Gillibald/fix/numericParsing

Removed culture aware parsing of types like Thickness, Matrix, Rect
Eli Arbel 7 years ago
parent
commit
d40a5e958c
28 changed files with 91 additions and 101 deletions
  1. 1 1
      src/Avalonia.Controls/ColumnDefinitions.cs
  2. 6 8
      src/Avalonia.Controls/GridLength.cs
  3. 1 1
      src/Avalonia.Controls/RowDefinitions.cs
  4. 18 22
      src/Avalonia.Visuals/CornerRadius.cs
  5. 2 3
      src/Avalonia.Visuals/Matrix.cs
  6. 2 3
      src/Avalonia.Visuals/Point.cs
  7. 2 3
      src/Avalonia.Visuals/Rect.cs
  8. 4 5
      src/Avalonia.Visuals/RelativePoint.cs
  9. 6 7
      src/Avalonia.Visuals/RelativeRect.cs
  10. 2 3
      src/Avalonia.Visuals/Size.cs
  11. 13 11
      src/Avalonia.Visuals/Thickness.cs
  12. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/CornerRadiusTypeConverter.cs
  13. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/GridLengthTypeConverter.cs
  14. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/MatrixTypeConverter.cs
  15. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/PointTypeConverter.cs
  16. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/PointsListTypeConverter.cs
  17. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/RectTypeConverter.cs
  18. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/RelativePointTypeConverter.cs
  19. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/RelativeRectTypeConverter.cs
  20. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/SizeTypeConverter.cs
  21. 1 1
      src/Markup/Avalonia.Markup.Xaml/Converters/ThicknessTypeConverter.cs
  22. 9 9
      tests/Avalonia.Controls.UnitTests/GridLengthTests.cs
  23. 4 4
      tests/Avalonia.Visuals.UnitTests/CornerRadiusTests.cs
  24. 1 1
      tests/Avalonia.Visuals.UnitTests/Media/MatrixTests.cs
  25. 1 1
      tests/Avalonia.Visuals.UnitTests/Media/RectTests.cs
  26. 2 2
      tests/Avalonia.Visuals.UnitTests/RelativePointTests.cs
  27. 3 3
      tests/Avalonia.Visuals.UnitTests/RelativeRectTests.cs
  28. 4 4
      tests/Avalonia.Visuals.UnitTests/ThicknessTests.cs

+ 1 - 1
src/Avalonia.Controls/ColumnDefinitions.cs

@@ -27,7 +27,7 @@ namespace Avalonia.Controls
         public ColumnDefinitions(string s)
             : this()
         {
-            AddRange(GridLength.ParseLengths(s, CultureInfo.InvariantCulture).Select(x => new ColumnDefinition(x)));
+            AddRange(GridLength.ParseLengths(s).Select(x => new ColumnDefinition(x)));
         }
     }
 }

+ 6 - 8
src/Avalonia.Controls/GridLength.cs

@@ -180,9 +180,8 @@ namespace Avalonia.Controls
         /// Parses a string to return a <see cref="GridLength"/>.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="GridLength"/>.</returns>
-        public static GridLength Parse(string s, CultureInfo culture)
+        public static GridLength Parse(string s)
         {
             s = s.ToUpperInvariant();
 
@@ -193,12 +192,12 @@ namespace Avalonia.Controls
             else if (s.EndsWith("*"))
             {
                 var valueString = s.Substring(0, s.Length - 1).Trim();
-                var value = valueString.Length > 0 ? double.Parse(valueString, culture) : 1;
+                var value = valueString.Length > 0 ? double.Parse(valueString, CultureInfo.InvariantCulture) : 1;
                 return new GridLength(value, GridUnitType.Star);
             }
             else
             {
-                var value = double.Parse(s, culture);
+                var value = double.Parse(s, CultureInfo.InvariantCulture);
                 return new GridLength(value, GridUnitType.Pixel);
             }
         }
@@ -207,15 +206,14 @@ namespace Avalonia.Controls
         /// Parses a string to return a collection of <see cref="GridLength"/>s.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="GridLength"/>.</returns>
-        public static IEnumerable<GridLength> ParseLengths(string s, CultureInfo culture)
+        public static IEnumerable<GridLength> ParseLengths(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture))
             {
                 while (tokenizer.TryReadString(out var item))
                 {
-                    yield return Parse(item, culture);
+                    yield return Parse(item);
                 }
             }
         }

+ 1 - 1
src/Avalonia.Controls/RowDefinitions.cs

@@ -27,7 +27,7 @@ namespace Avalonia.Controls
         public RowDefinitions(string s)
             : this()
         {
-            AddRange(GridLength.ParseLengths(s, CultureInfo.InvariantCulture).Select(x => new RowDefinition(x)));
+            AddRange(GridLength.ParseLengths(s).Select(x => new RowDefinition(x)));
         }
     }
 }

+ 18 - 22
src/Avalonia.Visuals/CornerRadius.cs

@@ -4,6 +4,7 @@
 using System;
 using System.Globalization;
 using System.Linq;
+using Avalonia.Utilities;
 
 namespace Avalonia
 {
@@ -53,31 +54,26 @@ namespace Avalonia
             return $"{TopLeft},{TopRight},{BottomRight},{BottomLeft}";
         }
 
-        public static CornerRadius Parse(string s, CultureInfo culture)
+        public static CornerRadius Parse(string s)
         {
-            var parts = s.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)
-                .Select(x => x.Trim())
-                .ToList();
-
-            switch (parts.Count)
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Thickness"))
             {
-                case 1:
-                    var uniform = double.Parse(parts[0], culture);
-                    return new CornerRadius(uniform);
-                case 2:
-                    var top = double.Parse(parts[0], culture);
-                    var bottom = double.Parse(parts[1], culture);
-                    return new CornerRadius(top, bottom);
-                case 4:
-                    var topLeft = double.Parse(parts[0], culture);
-                    var topRight = double.Parse(parts[1], culture);
-                    var bottomRight = double.Parse(parts[2], culture);
-                    var bottomLeft = double.Parse(parts[3], culture);
-                    return new CornerRadius(topLeft, topRight, bottomRight, bottomLeft);
-                default:
+                if (tokenizer.TryReadDouble(out var a))
+                {
+                    if (tokenizer.TryReadDouble(out var b))
                     {
-                        throw new FormatException("Invalid CornerRadius.");
+                        if (tokenizer.TryReadDouble(out var c))
+                        {
+                            return new CornerRadius(a, b, c, tokenizer.ReadDouble());
+                        }
+
+                        return new CornerRadius(a, b);
                     }
+
+                    return new CornerRadius(a);
+                }
+
+                throw new FormatException("Invalid CornerRadius.");
             }
         }
 
@@ -85,7 +81,7 @@ namespace Avalonia
         {
             return cr1.TopLeft.Equals(cr2.TopLeft)
                    && cr1.TopRight.Equals(cr2.TopRight)
-                   && cr1.BottomRight.Equals(cr2.BottomRight) 
+                   && cr1.BottomRight.Equals(cr2.BottomRight)
                    && cr1.BottomLeft.Equals(cr2.BottomLeft);
         }
 

+ 2 - 3
src/Avalonia.Visuals/Matrix.cs

@@ -314,11 +314,10 @@ namespace Avalonia
         /// Parses a <see cref="Matrix"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="Matrix"/>.</returns>
-        public static Matrix Parse(string s, CultureInfo culture)
+        public static Matrix Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid Matrix"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Matrix"))
             {
                 return new Matrix(
                     tokenizer.ReadDouble(),

+ 2 - 3
src/Avalonia.Visuals/Point.cs

@@ -170,11 +170,10 @@ namespace Avalonia
         /// Parses a <see cref="Point"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="Thickness"/>.</returns>
-        public static Point Parse(string s, CultureInfo culture)
+        public static Point Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid Point"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Point"))
             {
                 return new Point(
                     tokenizer.ReadDouble(),

+ 2 - 3
src/Avalonia.Visuals/Rect.cs

@@ -487,11 +487,10 @@ namespace Avalonia
         /// Parses a <see cref="Rect"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The parsed <see cref="Rect"/>.</returns>
-        public static Rect Parse(string s, CultureInfo culture)
+        public static Rect Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid Rect"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Rect"))
             {
                 return new Rect(
                     tokenizer.ReadDouble(),

+ 4 - 5
src/Avalonia.Visuals/RelativePoint.cs

@@ -154,11 +154,10 @@ namespace Avalonia
         /// Parses a <see cref="RelativePoint"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The parsed <see cref="RelativePoint"/>.</returns>
-        public static RelativePoint Parse(string s, CultureInfo culture)
+        public static RelativePoint Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid RelativePoint"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid RelativePoint"))
             {
                 var x = tokenizer.ReadString();
                 var y = tokenizer.ReadString();
@@ -180,8 +179,8 @@ namespace Avalonia
                 }
 
                 return new RelativePoint(
-                    double.Parse(x, culture) * scale,
-                    double.Parse(y, culture) * scale,
+                    double.Parse(x, CultureInfo.InvariantCulture) * scale,
+                    double.Parse(y, CultureInfo.InvariantCulture) * scale,
                     unit);
             }
         }

+ 6 - 7
src/Avalonia.Visuals/RelativeRect.cs

@@ -167,11 +167,10 @@ namespace Avalonia
         /// Parses a <see cref="RelativeRect"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The parsed <see cref="RelativeRect"/>.</returns>
-        public static RelativeRect Parse(string s, CultureInfo culture)
+        public static RelativeRect Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid RelativeRect"))
+            using (var tokenizer = new StringTokenizer(s, exceptionMessage: "Invalid RelativeRect"))
             {
                 var x = tokenizer.ReadString();
                 var y = tokenizer.ReadString();
@@ -202,10 +201,10 @@ namespace Avalonia
                 }
 
                 return new RelativeRect(
-                    double.Parse(x, culture) * scale,
-                    double.Parse(y, culture) * scale,
-                    double.Parse(width, culture) * scale,
-                    double.Parse(height, culture) * scale,
+                    double.Parse(x, CultureInfo.InvariantCulture) * scale,
+                    double.Parse(y, CultureInfo.InvariantCulture) * scale,
+                    double.Parse(width, CultureInfo.InvariantCulture) * scale,
+                    double.Parse(height, CultureInfo.InvariantCulture) * scale,
                     unit);
             }
         }

+ 2 - 3
src/Avalonia.Visuals/Size.cs

@@ -150,11 +150,10 @@ namespace Avalonia
         /// Parses a <see cref="Size"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="Size"/>.</returns>
-        public static Size Parse(string s, CultureInfo culture)
+        public static Size Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid Size"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Size"))
             {
                 return new Size(
                     tokenizer.ReadDouble(),

+ 13 - 11
src/Avalonia.Visuals/Thickness.cs

@@ -165,25 +165,27 @@ namespace Avalonia
         /// Parses a <see cref="Thickness"/> string.
         /// </summary>
         /// <param name="s">The string.</param>
-        /// <param name="culture">The current culture.</param>
         /// <returns>The <see cref="Thickness"/>.</returns>
-        public static Thickness Parse(string s, CultureInfo culture)
+        public static Thickness Parse(string s)
         {
-            using (var tokenizer = new StringTokenizer(s, culture, exceptionMessage: "Invalid Thickness"))
+            using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid Thickness"))
             {
-                var a = tokenizer.ReadDouble();
-
-                if (tokenizer.TryReadDouble(out var b))
+                if(tokenizer.TryReadDouble(out var a))
                 {
-                    if (tokenizer.TryReadDouble(out var c))
+                    if (tokenizer.TryReadDouble(out var b))
                     {
-                        return new Thickness(a, b, c, tokenizer.ReadDouble());
+                        if (tokenizer.TryReadDouble(out var c))
+                        {
+                            return new Thickness(a, b, c, tokenizer.ReadDouble());
+                        }
+
+                        return new Thickness(a, b);
                     }
 
-                    return new Thickness(a, b);
+                    return new Thickness(a);
                 }
-                
-                return new Thickness(a);
+
+                throw new FormatException("Invalid Thickness.");
             }
         }
 

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/CornerRadiusTypeConverter.cs

@@ -13,7 +13,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return CornerRadius.Parse((string)value, culture);
+            return CornerRadius.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/GridLengthTypeConverter.cs

@@ -18,7 +18,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return GridLength.Parse((string)value, culture);
+            return GridLength.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/MatrixTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return Matrix.Parse((string)value, culture);
+            return Matrix.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/PointTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return Point.Parse((string)value, culture);
+            return Point.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/PointsListTypeConverter.cs

@@ -23,7 +23,7 @@ namespace Avalonia.Markup.Xaml.Converters
             var result = new List<Point>(pointStrs.Length);
             foreach (var pointStr in pointStrs)
             {
-                result.Add(Point.Parse(pointStr, culture));
+                result.Add(Point.Parse(pointStr));
             }
 
             return result;

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/RectTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return Rect.Parse((string)value, culture);
+            return Rect.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/RelativePointTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return RelativePoint.Parse((string)value, culture);
+            return RelativePoint.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/RelativeRectTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return RelativeRect.Parse((string)value, culture);
+            return RelativeRect.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/SizeTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return Size.Parse((string)value, culture);
+            return Size.Parse((string)value);
         }
     }
 }

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml/Converters/ThicknessTypeConverter.cs

@@ -17,7 +17,7 @@ namespace Avalonia.Markup.Xaml.Converters
 
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
-            return Thickness.Parse((string)value, culture);
+            return Thickness.Parse((string)value);
         }
     }
 }

+ 9 - 9
tests/Avalonia.Controls.UnitTests/GridLengthTests.cs

@@ -13,7 +13,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Parse_Auto()
         {
-            var result = GridLength.Parse("Auto", CultureInfo.InvariantCulture);
+            var result = GridLength.Parse("Auto");
 
             Assert.Equal(GridLength.Auto, result);
         }
@@ -21,7 +21,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Parse_Auto_Lowercase()
         {
-            var result = GridLength.Parse("auto", CultureInfo.InvariantCulture);
+            var result = GridLength.Parse("auto");
 
             Assert.Equal(GridLength.Auto, result);
         }
@@ -29,7 +29,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Parse_Star()
         {
-            var result = GridLength.Parse("*", CultureInfo.InvariantCulture);
+            var result = GridLength.Parse("*");
 
             Assert.Equal(new GridLength(1, GridUnitType.Star), result);
         }
@@ -37,7 +37,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Parse_Star_Value()
         {
-            var result = GridLength.Parse("2*", CultureInfo.InvariantCulture);
+            var result = GridLength.Parse("2*");
 
             Assert.Equal(new GridLength(2, GridUnitType.Star), result);
         }
@@ -45,7 +45,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Parse_Pixel_Value()
         {
-            var result = GridLength.Parse("2", CultureInfo.InvariantCulture);
+            var result = GridLength.Parse("2");
 
             Assert.Equal(new GridLength(2, GridUnitType.Pixel), result);
         }
@@ -53,13 +53,13 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Parse_Should_Throw_FormatException_For_Invalid_String()
         {
-            Assert.Throws<FormatException>(() => GridLength.Parse("2x", CultureInfo.InvariantCulture));
+            Assert.Throws<FormatException>(() => GridLength.Parse("2x"));
         }
 
         [Fact]
         public void ParseLengths_Accepts_Comma_Separators()
         {
-            var result = GridLength.ParseLengths("*,Auto,2*,4", CultureInfo.InvariantCulture).ToList();
+            var result = GridLength.ParseLengths("*,Auto,2*,4").ToList();
 
             Assert.Equal(
                 new[]
@@ -75,7 +75,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void ParseLengths_Accepts_Space_Separators()
         {
-            var result = GridLength.ParseLengths("* Auto 2* 4", CultureInfo.InvariantCulture).ToList();
+            var result = GridLength.ParseLengths("* Auto 2* 4").ToList();
 
             Assert.Equal(
                 new[]
@@ -91,7 +91,7 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void ParseLengths_Accepts_Comma_Separators_With_Spaces()
         {
-            var result = GridLength.ParseLengths("*, Auto, 2* ,4", CultureInfo.InvariantCulture).ToList();
+            var result = GridLength.ParseLengths("*, Auto, 2* ,4").ToList();
 
             Assert.Equal(
                 new[]

+ 4 - 4
tests/Avalonia.Visuals.UnitTests/CornerRadiusTests.cs

@@ -11,7 +11,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_Single_Uniform_Radius()
         {
-            var result = CornerRadius.Parse("3.4", CultureInfo.InvariantCulture);
+            var result = CornerRadius.Parse("3.4");
 
             Assert.Equal(new CornerRadius(3.4), result);
         }
@@ -19,7 +19,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_Top_Bottom()
         {
-            var result = CornerRadius.Parse("1.1,2.2", CultureInfo.InvariantCulture);
+            var result = CornerRadius.Parse("1.1,2.2");
 
             Assert.Equal(new CornerRadius(1.1, 2.2), result);
         }
@@ -27,7 +27,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_TopLeft_TopRight_BottomRight_BottomLeft()
         {
-            var result = CornerRadius.Parse("1.1,2.2,3.3,4.4", CultureInfo.InvariantCulture);
+            var result = CornerRadius.Parse("1.1,2.2,3.3,4.4");
 
             Assert.Equal(new CornerRadius(1.1, 2.2, 3.3, 4.4), result);
         }
@@ -35,7 +35,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Accepts_Spaces()
         {
-            var result = CornerRadius.Parse("1.1 2.2 3.3 4.4", CultureInfo.InvariantCulture);
+            var result = CornerRadius.Parse("1.1 2.2 3.3 4.4");
 
             Assert.Equal(new CornerRadius(1.1, 2.2, 3.3, 4.4), result);
         }

+ 1 - 1
tests/Avalonia.Visuals.UnitTests/Media/MatrixTests.cs

@@ -8,7 +8,7 @@ namespace Avalonia.Visuals.UnitTests.Media
         [Fact]
         public void Parse_Parses()
         {
-            var matrix = Matrix.Parse("1,2,3,-4,5 6", CultureInfo.CurrentCulture);
+            var matrix = Matrix.Parse("1,2,3,-4,5 6");
             var expected = new Matrix(1, 2, 3, -4, 5, 6);
             Assert.Equal(expected, matrix);
         }

+ 1 - 1
tests/Avalonia.Visuals.UnitTests/Media/RectTests.cs

@@ -8,7 +8,7 @@ namespace Avalonia.Visuals.UnitTests.Media
         [Fact]
         public void Parse_Parses()
         {
-            var rect = Rect.Parse("1,2 3,-4", CultureInfo.CurrentCulture);
+            var rect = Rect.Parse("1,2 3,-4");
             var expected = new Rect(1, 2, 3, -4);
             Assert.Equal(expected, rect);
         }

+ 2 - 2
tests/Avalonia.Visuals.UnitTests/RelativePointTests.cs

@@ -11,7 +11,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Should_Accept_Absolute_Value()
         {
-            var result = RelativePoint.Parse("4,5", CultureInfo.InvariantCulture);
+            var result = RelativePoint.Parse("4,5");
 
             Assert.Equal(new RelativePoint(4, 5, RelativeUnit.Absolute), result);
         }
@@ -19,7 +19,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Should_Accept_Relative_Value()
         {
-            var result = RelativePoint.Parse("25%, 50%", CultureInfo.InvariantCulture);
+            var result = RelativePoint.Parse("25%, 50%");
 
             Assert.Equal(new RelativePoint(0.25, 0.5, RelativeUnit.Relative), result);
         }

+ 3 - 3
tests/Avalonia.Visuals.UnitTests/RelativeRectTests.cs

@@ -14,7 +14,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Should_Accept_Absolute_Value()
         {
-            var result = RelativeRect.Parse("4,5,50,60", CultureInfo.InvariantCulture);
+            var result = RelativeRect.Parse("4,5,50,60");
 
             Assert.Equal(new RelativeRect(4, 5, 50, 60, RelativeUnit.Absolute), result, Compare);
         }
@@ -22,7 +22,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Should_Accept_Relative_Value()
         {
-            var result = RelativeRect.Parse("10%, 20%, 40%, 70%", CultureInfo.InvariantCulture);
+            var result = RelativeRect.Parse("10%, 20%, 40%, 70%");
 
             Assert.Equal(new RelativeRect(0.1, 0.2, 0.4, 0.7, RelativeUnit.Relative), result, Compare);
         }
@@ -31,7 +31,7 @@ namespace Avalonia.Visuals.UnitTests
         public void Parse_Should_Throw_Mixed_Values()
         {
             Assert.Throws<FormatException>(() =>
-                RelativeRect.Parse("10%, 20%, 40, 70%", CultureInfo.InvariantCulture));
+                RelativeRect.Parse("10%, 20%, 40, 70%"));
         }
     }
 }

+ 4 - 4
tests/Avalonia.Visuals.UnitTests/ThicknessTests.cs

@@ -11,7 +11,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_Single_Uniform_Size()
         {
-            var result = Thickness.Parse("1.2", CultureInfo.InvariantCulture);
+            var result = Thickness.Parse("1.2");
 
             Assert.Equal(new Thickness(1.2), result);
         }
@@ -19,7 +19,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_Horizontal_Vertical()
         {
-            var result = Thickness.Parse("1.2,3.4", CultureInfo.InvariantCulture);
+            var result = Thickness.Parse("1.2,3.4");
 
             Assert.Equal(new Thickness(1.2, 3.4), result);
         }
@@ -27,7 +27,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Parses_Left_Top_Right_Bottom()
         {
-            var result = Thickness.Parse("1.2, 3.4, 5, 6", CultureInfo.InvariantCulture);
+            var result = Thickness.Parse("1.2, 3.4, 5, 6");
 
             Assert.Equal(new Thickness(1.2, 3.4, 5, 6), result);
         }
@@ -35,7 +35,7 @@ namespace Avalonia.Visuals.UnitTests
         [Fact]
         public void Parse_Accepts_Spaces()
         {
-            var result = Thickness.Parse("1.2 3.4 5 6", CultureInfo.InvariantCulture);
+            var result = Thickness.Parse("1.2 3.4 5 6");
 
             Assert.Equal(new Thickness(1.2, 3.4, 5, 6), result);
         }