fix CurrencyFormatterTests for Windows 10 Build 10586

This commit is contained in:
Steve Bohlen
2015-11-24 18:55:20 -05:00
parent b283a6f34d
commit 6d95db75aa
3 changed files with 95 additions and 18 deletions

View File

@@ -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; }

View File

@@ -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 дин."));

View File

@@ -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"));