fix CurrencyFormatterTests for Windows 10 Build 10586
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Microsoft.Win32;
|
||||
|
||||
namespace Spring.Globalization
|
||||
{
|
||||
@@ -43,12 +44,21 @@ namespace Spring.Globalization
|
||||
{
|
||||
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures))
|
||||
{
|
||||
//address changes in 2006 (see blog posts above)
|
||||
if (ci.Name.Equals("sr-Latn-CS"))
|
||||
{
|
||||
srLatn = "sr-Latn-CS";
|
||||
srCyrl = "sr-Cyrl-CS";
|
||||
break;
|
||||
}
|
||||
|
||||
//address changes introduced in Windows 10 "November 2015 Update" (build 10586)
|
||||
if (ci.Name.Equals("sr-Latn-RS"))
|
||||
{
|
||||
srLatn = "sr-Latn-RS";
|
||||
srCyrl = "sr-Cyrl-RS";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,11 +72,48 @@ namespace Spring.Globalization
|
||||
get { return srLatn; }
|
||||
}
|
||||
|
||||
public static bool OperatingSystemIsLaterThanWindows7
|
||||
public static bool OperatingSystemIsAfterWindows7
|
||||
{
|
||||
get { return Environment.OSVersion.Version.Major >= 6 && Environment.OSVersion.Version.Minor >= 2; }
|
||||
}
|
||||
|
||||
|
||||
public static bool OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586
|
||||
{
|
||||
get { return OperatingSystemIsAfterWindows7 && !OperatingSystemIsAtLeastWindows10Build10586; }
|
||||
}
|
||||
|
||||
public static bool OperatingSystemIsAtLeastWindows10Build10586
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
var registryBuildNumberString = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "CurrentBuildNumber", string.Empty) as string;
|
||||
|
||||
//if null or empty, we coudn't find the value or it couldn't be cast to a string
|
||||
if (!string.IsNullOrEmpty(registryBuildNumberString))
|
||||
{
|
||||
int buildNumber;
|
||||
|
||||
//if we can convert the value to an int...
|
||||
if (int.TryParse(registryBuildNumberString, out buildNumber))
|
||||
{
|
||||
//do the comparison
|
||||
return buildNumber >= 10586;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//if anythign at all goes wrong, presume we're not on Windows 10 Build 10586 or later
|
||||
return false;
|
||||
}
|
||||
|
||||
//if we get this far, we can't tell WTF is going on, so just return FALSE
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ClrIsVersion4OrLater
|
||||
{
|
||||
get { return Environment.Version.Major >= 4; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#region License
|
||||
#region License
|
||||
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
@@ -19,7 +19,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
|
||||
using System.Globalization;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Spring.Globalization.Formatters
|
||||
@@ -66,13 +66,22 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianLatinCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("1.234,00 din.", fmt.Format(1234));
|
||||
Assert.AreEqual("1.234,56 din.", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1.234,00 din.", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1.234,56 din.", fmt.Format(-1234.56));
|
||||
}
|
||||
|
||||
else if (CultureInfoUtils.OperatingSystemIsAtLeastWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("1.234 RSD", fmt.Format(1234));
|
||||
Assert.AreEqual("1.235 RSD", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1.234 RSD", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1.235 RSD", fmt.Format(-1234.56));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Assert.AreEqual("1.234,00 Din.", fmt.Format(1234));
|
||||
@@ -83,7 +92,7 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("1.234,00 дин.", fmt.Format(1234));
|
||||
Assert.AreEqual("1.234,56 дин.", fmt.Format(1234.56));
|
||||
@@ -111,13 +120,20 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianLatinCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual(1234, fmt.Parse("1.234,00 din."));
|
||||
Assert.AreEqual(1234.56, fmt.Parse("1.234,56 din."));
|
||||
Assert.AreEqual(-1234, fmt.Parse("-1.234,00 din."));
|
||||
Assert.AreEqual(-1234.56, fmt.Parse("-1.234,56 din."));
|
||||
}
|
||||
|
||||
else if (CultureInfoUtils.OperatingSystemIsAtLeastWindows10Build10586)
|
||||
{
|
||||
Assert.AreEqual(1234, fmt.Parse("1.234 RSD"));
|
||||
Assert.AreEqual(-1234, fmt.Parse("-1.234 RSD"));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Assert.AreEqual(1234, fmt.Parse("1.234,00 Din."));
|
||||
@@ -128,7 +144,7 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual(1234, fmt.Parse("1.234,00 дин."));
|
||||
Assert.AreEqual(1234.56, fmt.Parse("1.234,56 дин."));
|
||||
@@ -159,22 +175,36 @@ namespace Spring.Globalization.Formatters
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianLatinCultureName);
|
||||
fmt.PositivePattern = 1;
|
||||
fmt.CurrencySymbol = "din";
|
||||
Assert.AreEqual("1.234,00din", fmt.Format(1234));
|
||||
Assert.AreEqual("1.234,56din", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1.234,00 din", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1.234,56 din", fmt.Format(-1234.56));
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsAtLeastWindows10Build10586)
|
||||
{
|
||||
Assert.AreEqual("1.234din", fmt.Format(1234));
|
||||
Assert.AreEqual("1.235din", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1.234 din", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1.235 din", fmt.Format(-1234.56));
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.AreEqual("1.234,00din", fmt.Format(1234));
|
||||
Assert.AreEqual("1.234,56din", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1.234,00 din", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1.234,56 din", fmt.Format(-1234.56));
|
||||
}
|
||||
|
||||
|
||||
|
||||
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName);
|
||||
fmt.GroupSizes = new int[] { 1, 2 };
|
||||
fmt.GroupSeparator = "'";
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("1'23'4,00 дин.", fmt.Format(1234));
|
||||
Assert.AreEqual("1'23'4,56 дин.", fmt.Format(1234.56));
|
||||
Assert.AreEqual("-1'23'4,00 дин.", fmt.Format(-1234));
|
||||
Assert.AreEqual("-1'23'4,56 дин.", fmt.Format(-1234.56));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Assert.AreEqual("1'23'4,00 Дин.", fmt.Format(1234));
|
||||
@@ -207,7 +237,7 @@ namespace Spring.Globalization.Formatters
|
||||
fmt.GroupSizes = new int[] { 1, 2 };
|
||||
fmt.GroupSeparator = "'";
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual(1234, fmt.Parse("1'23'4,00 дин."));
|
||||
Assert.AreEqual(1234.56, fmt.Parse("1'23'4,56 дин."));
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace Spring.Globalization.Formatters
|
||||
Console.WriteLine("Steve: " + Environment.Version);
|
||||
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("14. avgust 2004.", fmt.Format(new DateTime(2004, 8, 14)));
|
||||
Assert.AreEqual("24. avgust 1974.", fmt.Format(new DateTime(1974, 8, 24)));
|
||||
@@ -84,7 +84,7 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new DateTimeFormatter("dd-MMM-yyyy", CultureInfoUtils.SerbianCyrillicCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual("14-авг.-2004", fmt.Format(new DateTime(2004, 8, 14)));
|
||||
Assert.AreEqual("24-авг.-1974", fmt.Format(new DateTime(1974, 8, 24)));
|
||||
@@ -110,7 +110,7 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new DateTimeFormatter("D", CultureInfoUtils.SerbianLatinCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14. avgust 2004."));
|
||||
Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24. avgust 1974."));
|
||||
@@ -123,7 +123,7 @@ namespace Spring.Globalization.Formatters
|
||||
|
||||
fmt = new DateTimeFormatter("dd-MMM-yyyy", CultureInfoUtils.SerbianCyrillicCultureName);
|
||||
|
||||
if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
if (CultureInfoUtils.OperatingSystemIsAfterWindows7AndBeforeWindows10Build10586 && CultureInfoUtils.ClrIsVersion4OrLater)
|
||||
{
|
||||
Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-авг.-2004"));
|
||||
Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-авг.-1974"));
|
||||
|
||||
Reference in New Issue
Block a user