From 0311d3694d7b23c70a789c1dcbb1273e714f7bc5 Mon Sep 17 00:00:00 2001 From: sbohlen Date: Tue, 11 Mar 2014 06:27:27 -0400 Subject: [PATCH] SPRNET-1570 make localization test assertions respond appropriately to differences in runtime OS --- .../Globalization/CultureInfoUtils.cs | 17 +- .../Formatters/CurrencyFormatterTests.cs | 159 ++++++++++-------- .../Formatters/DateTimeFormatterTests.cs | 87 ++++++---- 3 files changed, 159 insertions(+), 104 deletions(-) diff --git a/test/Spring/Spring.Core.Tests/Globalization/CultureInfoUtils.cs b/test/Spring/Spring.Core.Tests/Globalization/CultureInfoUtils.cs index 5b613e15..dbcca79c 100644 --- a/test/Spring/Spring.Core.Tests/Globalization/CultureInfoUtils.cs +++ b/test/Spring/Spring.Core.Tests/Globalization/CultureInfoUtils.cs @@ -18,17 +18,21 @@ #endregion +using System; using System.Globalization; namespace Spring.Globalization { /// - /// Helper class to pick the appropriate culture name for serbian due to changes of the CultureInfo classes - /// in recent releases of the .NET framework. + /// Helper class for Globalization Tests /// - /// In short, sr-SP-Latn->sr-Latn-CS and sr-SP-Cyrl->sr-Cyrl-CS. See http://blogs.msdn.com/kierans/archive/2006/08/02/687267.aspx + /// Ensure the appropriate culture name for serbian due to changes of the CultureInfo classes + /// in recent releases of the .NET framework.In short, sr-SP-Latn->sr-Latn-CS and sr-SP-Cyrl->sr-Cyrl-CS. See http://blogs.msdn.com/kierans/archive/2006/08/02/687267.aspx /// and http://blogs.msdn.com/shawnste/archive/2006/11/14/problems-compiling-resources-in-net-2-0-apps-after-updates.aspx for - /// additional information. + /// additional information. + /// Also, provide for detection of runtime OS to respond to need for different asserts to reflect changes in Serbian Localization within the OS + /// introduced after Windows7. + /// /// Mark Pollack public class CultureInfoUtils { @@ -57,5 +61,10 @@ namespace Spring.Globalization { get { return srLatn; } } + + public static bool OperatingSystemIsLaterThanWindows7 + { + get { return Environment.OSVersion.Version.Major >= 6 && Environment.OSVersion.Version.Minor >= 2; } + } } } diff --git a/test/Spring/Spring.Core.Tests/Globalization/Formatters/CurrencyFormatterTests.cs b/test/Spring/Spring.Core.Tests/Globalization/Formatters/CurrencyFormatterTests.cs index b013be0c..b82e46ad 100644 --- a/test/Spring/Spring.Core.Tests/Globalization/Formatters/CurrencyFormatterTests.cs +++ b/test/Spring/Spring.Core.Tests/Globalization/Formatters/CurrencyFormatterTests.cs @@ -65,29 +65,39 @@ namespace Spring.Globalization.Formatters Assert.AreEqual("($1,234.56)", fmt.Format(-1234.56)); fmt = new CurrencyFormatter(CultureInfoUtils.SerbianLatinCultureName); -#if NET_4_0 - 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 - 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)); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + 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 + { + 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)); + } + fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName); -#if NET_4_0 - Assert.AreEqual("1.234,00 дин.", fmt.Format(1234)); - Assert.AreEqual("1.234,56 дин.", fmt.Format(1234.56)); - Assert.AreEqual("-1.234,00 дин.", fmt.Format(-1234)); - Assert.AreEqual("-1.234,56 дин.", fmt.Format(-1234.56)); -#else - Assert.AreEqual("1.234,00 Дин.", fmt.Format(1234)); - Assert.AreEqual("1.234,56 Дин.", fmt.Format(1234.56)); - Assert.AreEqual("-1.234,00 Дин.", fmt.Format(-1234)); - Assert.AreEqual("-1.234,56 Дин.", fmt.Format(-1234.56)); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual("1.234,00 дин.", fmt.Format(1234)); + Assert.AreEqual("1.234,56 дин.", fmt.Format(1234.56)); + Assert.AreEqual("-1.234,00 дин.", fmt.Format(-1234)); + Assert.AreEqual("-1.234,56 дин.", fmt.Format(-1234.56)); + } + else + { + Assert.AreEqual("1.234,00 Дин.", fmt.Format(1234)); + Assert.AreEqual("1.234,56 Дин.", fmt.Format(1234.56)); + Assert.AreEqual("-1.234,00 Дин.", fmt.Format(-1234)); + Assert.AreEqual("-1.234,56 Дин.", fmt.Format(-1234.56)); + } + } [Test] @@ -100,30 +110,39 @@ namespace Spring.Globalization.Formatters Assert.AreEqual(-1234.56, fmt.Parse("($1,234.56)")); fmt = new CurrencyFormatter(CultureInfoUtils.SerbianLatinCultureName); -#if NET_4_0 - 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 - 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.")); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + 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 + { + 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.")); + } fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName); -#if NET_4_0 - Assert.AreEqual(1234, fmt.Parse("1.234,00 дин.")); - Assert.AreEqual(1234.56, fmt.Parse("1.234,56 дин.")); - Assert.AreEqual(-1234, fmt.Parse("-1.234,00 дин.")); - Assert.AreEqual(-1234.56, fmt.Parse("-1.234,56 дин.")); -#else - Assert.AreEqual(1234, fmt.Parse("1.234,00 Дин.")); - Assert.AreEqual(1234.56, fmt.Parse("1.234,56 Дин.")); - Assert.AreEqual(-1234, fmt.Parse("-1.234,00 Дин.")); - Assert.AreEqual(-1234.56, fmt.Parse("-1.234,56 Дин.")); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual(1234, fmt.Parse("1.234,00 дин.")); + Assert.AreEqual(1234.56, fmt.Parse("1.234,56 дин.")); + Assert.AreEqual(-1234, fmt.Parse("-1.234,00 дин.")); + Assert.AreEqual(-1234.56, fmt.Parse("-1.234,56 дин.")); + } + else + { + Assert.AreEqual(1234, fmt.Parse("1.234,00 Дин.")); + Assert.AreEqual(1234.56, fmt.Parse("1.234,56 Дин.")); + Assert.AreEqual(-1234, fmt.Parse("-1.234,00 Дин.")); + Assert.AreEqual(-1234.56, fmt.Parse("-1.234,56 Дин.")); + } + } [Test] @@ -149,17 +168,20 @@ namespace Spring.Globalization.Formatters fmt.GroupSizes = new int[] { 1, 2 }; fmt.GroupSeparator = "'"; -#if NET_4_0 - 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)); - 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)); -#endif + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + 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)); + 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)); + } } [Test] @@ -184,17 +206,22 @@ namespace Spring.Globalization.Formatters fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName); fmt.GroupSizes = new int[] { 1, 2 }; fmt.GroupSeparator = "'"; -#if NET_4_0 - Assert.AreEqual(1234, fmt.Parse("1'23'4,00 дин.")); - Assert.AreEqual(1234.56, fmt.Parse("1'23'4,56 дин.")); - Assert.AreEqual(-1234, fmt.Parse("-1'23'4,00 дин.")); - Assert.AreEqual(-1234.56, fmt.Parse("-1'23'4,56 дин.")); -#else - Assert.AreEqual(1234, fmt.Parse("1'23'4,00 Дин.")); - Assert.AreEqual(1234.56, fmt.Parse("1'23'4,56 Дин.")); - Assert.AreEqual(-1234, fmt.Parse("-1'23'4,00 Дин.")); - Assert.AreEqual(-1234.56, fmt.Parse("-1'23'4,56 Дин.")); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual(1234, fmt.Parse("1'23'4,00 дин.")); + Assert.AreEqual(1234.56, fmt.Parse("1'23'4,56 дин.")); + Assert.AreEqual(-1234, fmt.Parse("-1'23'4,00 дин.")); + Assert.AreEqual(-1234.56, fmt.Parse("-1'23'4,56 дин.")); + } + else + { + Assert.AreEqual(1234, fmt.Parse("1'23'4,00 Дин.")); + Assert.AreEqual(1234.56, fmt.Parse("1'23'4,56 Дин.")); + Assert.AreEqual(-1234, fmt.Parse("-1'23'4,00 Дин.")); + Assert.AreEqual(-1234.56, fmt.Parse("-1'23'4,56 Дин.")); + } + } #endif } diff --git a/test/Spring/Spring.Core.Tests/Globalization/Formatters/DateTimeFormatterTests.cs b/test/Spring/Spring.Core.Tests/Globalization/Formatters/DateTimeFormatterTests.cs index 56055a0d..2fb7af9d 100644 --- a/test/Spring/Spring.Core.Tests/Globalization/Formatters/DateTimeFormatterTests.cs +++ b/test/Spring/Spring.Core.Tests/Globalization/Formatters/DateTimeFormatterTests.cs @@ -24,13 +24,13 @@ using NUnit.Framework; namespace Spring.Globalization.Formatters { - /// - /// Unit tests for DateTimeFormatter class. - /// + /// + /// Unit tests for DateTimeFormatter class. + /// /// Aleksandar Seovic [TestFixture] public class DateTimeFormatterTests - { + { [Test] [ExpectedException(typeof(ArgumentNullException))] public void FormatNullValue() @@ -61,27 +61,37 @@ namespace Spring.Globalization.Formatters DateTimeFormatter fmt = new DateTimeFormatter("d", "en-US"); Assert.AreEqual("8/14/2004", fmt.Format(new DateTime(2004, 8, 14))); Assert.AreEqual("8/24/1974", fmt.Format(new DateTime(1974, 8, 24))); - + fmt = new DateTimeFormatter("dd-MMM-yyyy", "en-US"); Assert.AreEqual("14-Aug-2004", fmt.Format(new DateTime(2004, 8, 14))); Assert.AreEqual("24-Aug-1974", fmt.Format(new DateTime(1974, 8, 24))); fmt = new DateTimeFormatter("D", CultureInfoUtils.SerbianLatinCultureName); -#if NET_4_0 - Assert.AreEqual("14. avgust 2004.", fmt.Format(new DateTime(2004, 8, 14))); - Assert.AreEqual("24. avgust 1974.", fmt.Format(new DateTime(1974, 8, 24))); -#else - Assert.AreEqual("14. avgust 2004", fmt.Format(new DateTime(2004, 8, 14))); - Assert.AreEqual("24. avgust 1974", fmt.Format(new DateTime(1974, 8, 24))); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual("14. avgust 2004.", fmt.Format(new DateTime(2004, 8, 14))); + Assert.AreEqual("24. avgust 1974.", fmt.Format(new DateTime(1974, 8, 24))); + } + else + { + Assert.AreEqual("14. avgust 2004", fmt.Format(new DateTime(2004, 8, 14))); + Assert.AreEqual("24. avgust 1974", fmt.Format(new DateTime(1974, 8, 24))); + } + fmt = new DateTimeFormatter("dd-MMM-yyyy", CultureInfoUtils.SerbianCyrillicCultureName); -#if NET_4_0 - Assert.AreEqual("14-авг.-2004", fmt.Format(new DateTime(2004, 8, 14))); - Assert.AreEqual("24-авг.-1974", fmt.Format(new DateTime(1974, 8, 24))); -#else - Assert.AreEqual("14-авг-2004", fmt.Format(new DateTime(2004, 8, 14))); - Assert.AreEqual("24-авг-1974", fmt.Format(new DateTime(1974, 8, 24))); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual("14-авг.-2004", fmt.Format(new DateTime(2004, 8, 14))); + Assert.AreEqual("24-авг.-1974", fmt.Format(new DateTime(1974, 8, 24))); + } + else + { + Assert.AreEqual("14-авг-2004", fmt.Format(new DateTime(2004, 8, 14))); + Assert.AreEqual("24-авг-1974", fmt.Format(new DateTime(1974, 8, 24))); + } + } [Test] @@ -90,28 +100,37 @@ namespace Spring.Globalization.Formatters DateTimeFormatter fmt = new DateTimeFormatter("d", "en-US"); Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("8/14/2004")); Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("8/24/1974")); - + fmt = new DateTimeFormatter("dd-MMM-yyyy", "en-US"); Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-Aug-2004")); Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-Aug-1974")); fmt = new DateTimeFormatter("D", CultureInfoUtils.SerbianLatinCultureName); -#if NET_4_0 - Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14. avgust 2004.")); - Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24. avgust 1974.")); -#else - Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14. avgust 2004")); - Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24. avgust 1974")); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14. avgust 2004.")); + Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24. avgust 1974.")); + } + else + { + Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14. avgust 2004")); + Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24. avgust 1974")); + } fmt = new DateTimeFormatter("dd-MMM-yyyy", CultureInfoUtils.SerbianCyrillicCultureName); -#if NET_4_0 - Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-авг.-2004")); - Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-авг.-1974")); -#else - Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-авг-2004")); - Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-авг-1974")); -#endif + + if (CultureInfoUtils.OperatingSystemIsLaterThanWindows7) + { + Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-авг.-2004")); + Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-авг.-1974")); + } + else + { + Assert.AreEqual(new DateTime(2004, 8, 14), fmt.Parse("14-авг-2004")); + Assert.AreEqual(new DateTime(1974, 8, 24), fmt.Parse("24-авг-1974")); + } + } #endif }