Skip to content

Commit 27b1e91

Browse files
committed
Fixed culture sensitivity when parsing AspectRatio components
1 parent 6fd3327 commit 27b1e91

File tree

5 files changed

+42
-20
lines changed

5 files changed

+42
-20
lines changed

Microsoft.Toolkit.Uwp.UI.Controls.Primitives/ConstrainedBox/AspectRatio.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using System;
5+
using System.Globalization;
66

77
namespace Microsoft.Toolkit.Uwp.UI.Controls
88
{
@@ -75,11 +75,14 @@ public static AspectRatio ConvertToAspectRatio(string rawString)
7575

7676
if (ratio.Length == 2)
7777
{
78-
return new AspectRatio(Convert.ToDouble(ratio[0]), Convert.ToDouble(ratio[1]));
78+
double width = double.Parse(ratio[0], NumberStyles.Float, CultureInfo.InvariantCulture);
79+
double height = double.Parse(ratio[1], NumberStyles.Float, CultureInfo.InvariantCulture);
80+
81+
return new AspectRatio(width, height);
7982
}
8083
else if (ratio.Length == 1)
8184
{
82-
return new AspectRatio(Convert.ToDouble(ratio[0]));
85+
return new AspectRatio(double.Parse(ratio[0], NumberStyles.Float, CultureInfo.InvariantCulture));
8386
}
8487

8588
return new AspectRatio(1);

Microsoft.Toolkit.Uwp.UI.Controls.Primitives/ConstrainedBox/ConstrainedBox.Properties.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using System;
6-
using System.Collections.Generic;
7-
using System.Linq;
8-
using System.Text;
9-
using System.Threading.Tasks;
10-
using Windows.Foundation;
115
using Windows.UI.Xaml;
12-
using Windows.UI.Xaml.Controls;
136

147
namespace Microsoft.Toolkit.Uwp.UI.Controls
158
{

Microsoft.Toolkit.Uwp.UI.Controls.Primitives/ConstrainedBox/ConstrainedBox.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6-
using System.Collections.Generic;
7-
using System.Linq;
8-
using System.Text;
9-
using System.Threading.Tasks;
106
using Windows.Foundation;
117
using Windows.UI.Xaml;
128
using Windows.UI.Xaml.Controls;

UnitTests/UnitTests.UWP/UI/Controls/Test_ConstrainedBox.Alignment.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using System.Linq;
65
using System.Threading.Tasks;
76
using Microsoft.Toolkit.Uwp;
87
using Microsoft.Toolkit.Uwp.UI;
98
using Microsoft.Toolkit.Uwp.UI.Controls;
109
using Microsoft.VisualStudio.TestTools.UnitTesting;
11-
using Microsoft.VisualStudio.TestTools.UnitTesting.AppContainer;
12-
using Windows.Foundation;
1310
using Windows.UI.Xaml;
1411
using Windows.UI.Xaml.Controls;
1512
using Windows.UI.Xaml.Markup;

UnitTests/UnitTests.UWP/UI/Controls/Test_ConstrainedBox.AspectRatio.cs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using System.Linq;
5+
using System.Globalization;
66
using System.Threading.Tasks;
77
using Microsoft.Toolkit.Uwp;
88
using Microsoft.Toolkit.Uwp.UI;
99
using Microsoft.Toolkit.Uwp.UI.Controls;
1010
using Microsoft.VisualStudio.TestTools.UnitTesting;
11-
using Microsoft.VisualStudio.TestTools.UnitTesting.AppContainer;
12-
using Windows.Foundation;
1311
using Windows.UI.Xaml;
1412
using Windows.UI.Xaml.Controls;
1513
using Windows.UI.Xaml.Markup;
@@ -92,5 +90,40 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
9290
Assert.AreEqual(200, child.ActualHeight, 0.01, "Actual height does not meet expected value of 200");
9391
});
9492
}
93+
94+
[TestCategory("ConstrainedBox")]
95+
[TestMethod]
96+
public void Test_ConstrainedBox_AspectRatioParsing()
97+
{
98+
CultureInfo currentCulture = CultureInfo.CurrentCulture;
99+
100+
try
101+
{
102+
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
103+
104+
AspectRatio ratio = AspectRatio.ConvertToAspectRatio("1.666");
105+
106+
Assert.AreEqual(ratio.Width, 1.666);
107+
Assert.AreEqual(ratio.Height, 1);
108+
109+
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("it-IT");
110+
111+
ratio = AspectRatio.ConvertToAspectRatio("1.666");
112+
113+
Assert.AreEqual(ratio.Width, 1.666);
114+
Assert.AreEqual(ratio.Height, 1);
115+
116+
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr-FR");
117+
118+
ratio = AspectRatio.ConvertToAspectRatio("1.666");
119+
120+
Assert.AreEqual(ratio.Width, 1.666);
121+
Assert.AreEqual(ratio.Height, 1);
122+
}
123+
finally
124+
{
125+
CultureInfo.CurrentCulture = currentCulture;
126+
}
127+
}
95128
}
96129
}

0 commit comments

Comments
 (0)