From 02a321dfc74add527201f6865d707f65c25dc98e Mon Sep 17 00:00:00 2001 From: tutkus Date: Sat, 30 Apr 2022 20:03:21 +0200 Subject: [PATCH 1/5] Added CultureInfo to StringFormatConverter --- .../Converters/StringFormatConverter.cs | 77 ++++++++-- .../Converters/Test_StringFormatConverter.cs | 132 +++++++++++++++--- 2 files changed, 181 insertions(+), 28 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs index cb01f422c3f..53dfcf868f2 100644 --- a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Globalization; using Windows.UI.Xaml.Data; namespace Microsoft.Toolkit.Uwp.UI.Converters @@ -12,13 +13,26 @@ namespace Microsoft.Toolkit.Uwp.UI.Converters /// public class StringFormatConverter : IValueConverter { + /// + /// Gets or sets the CultureInfo to make converter culture sensitive. The default value is + /// + public CultureInfo CultureInfo { get; set; } + + /// + /// Initializes a new instance of the class. + /// + public StringFormatConverter() + { + CultureInfo = CultureInfo.CurrentCulture; + } + /// /// Return the formatted string version of the source object. /// /// Object to transform to string. /// The type of the target property, as a type reference /// An optional parameter to be used in the string.Format method. - /// The language of the conversion (not used). + /// The language of the conversion. If language is null or empty then will be used. /// Formatted string. public object Convert(object value, Type targetType, object parameter, string language) { @@ -27,20 +41,13 @@ public object Convert(object value, Type targetType, object parameter, string la return null; } - if (parameter == null) + string formatParameter = parameter as string; + if (formatParameter == null) { return value; } - try - { - return string.Format((string)parameter, value); - } - catch - { - } - - return value; + return FormatToString(value, formatParameter, GetCultureInfoOrDefault(language, () => GetDefaultCultureInfo())); } /// @@ -55,5 +62,53 @@ public object ConvertBack(object value, Type targetType, object parameter, strin { throw new NotImplementedException(); } + + private object FormatToString(object value, string parameter, CultureInfo cultureInfo) + { + try + { + return string.Format(cultureInfo, parameter, value); + } + catch + { + return value; + } + } + + private CultureInfo GetCultureInfoOrDefault(string language, Func getDefaultCultureInfo) + { + CultureInfo cultureInfo; + if (!TryGetCultureInfo(language, out cultureInfo)) + { + cultureInfo = getDefaultCultureInfo(); + } + + return cultureInfo; + } + + private bool TryGetCultureInfo(string language, out CultureInfo cultureInfo) + { + cultureInfo = null; + if (string.IsNullOrEmpty(language)) + { + return false; + } + + try + { + cultureInfo = CultureInfo.GetCultureInfo(language); + + return true; + } + catch + { + return false; + } + } + + private CultureInfo GetDefaultCultureInfo() + { + return CultureInfo ?? CultureInfo.InvariantCulture; + } } } \ No newline at end of file diff --git a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs index 8bf74420b30..51d3ece8d80 100644 --- a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs +++ b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs @@ -5,59 +5,157 @@ using Microsoft.Toolkit.Uwp.UI.Converters; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; +using System.Globalization; namespace UnitTests.Converters { [TestClass] public class Test_StringFormatConverter { - private static readonly object NullString = null; + private const string NullLanguage = null; + + private static readonly CultureInfo ConverterCultureInfo = new CultureInfo("pl-pl"); + private static readonly object NullString = null; private static readonly object NotEmptyString = "Hello, world"; private static readonly DateTime Date = DateTime.Now; + private static readonly decimal Amount = 333.4m; [TestCategory("Converters")] [TestMethod] - public void WhenValueIsNull_ThenReturnNull() + [DataRow(NullLanguage)] + [DataRow("en-us")] + public void WhenValueIsNull_ThenReturnNull(string language) { var converter = new StringFormatConverter(); - var result = converter.Convert(NullString, typeof(string), NullString, "en-us"); + var result = converter.Convert(NullString, typeof(string), NullString, language); Assert.IsNull(result); } [TestCategory("Converters")] [TestMethod] - public void WhenValueExistsAndParameterIsNull_ThenReturnValue() + [DataRow(NullLanguage)] + [DataRow("en-us")] + public void WhenValueExistsAndParameterIsNull_ThenReturnValue(string language) { var converter = new StringFormatConverter(); - var result = converter.Convert(NotEmptyString, typeof(string), NullString, "en-us"); + var result = converter.Convert(NotEmptyString, typeof(string), NullString, language); Assert.AreEqual(NotEmptyString, result); } [TestCategory("Converters")] [TestMethod] - public void WhenParameterIsTimeFormat_ThenReturnValueOfTimeFormat() + [DataRow(NullLanguage)] + [DataRow("en-us")] + public void WhenParameterIsInvalidFormat_ThenReturnValue(string language) { - var converter = new StringFormatConverter(); - var result = converter.Convert(Date, typeof(string), "{0:HH:mm}", "en-us"); - Assert.AreEqual(Date.ToString("HH:mm"), result); + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo + }; + var result = converter.Convert(Date, typeof(string), "{1:}", language); + Assert.AreEqual(Date, result); } [TestCategory("Converters")] [TestMethod] - public void WhenParameterIsInvalidFormat_ThenReturnValue() + [DataRow(NullLanguage)] + [DataRow("en-us")] + public void WhenParameterIsNotAString_ThenReturnValue(string language) { - var converter = new StringFormatConverter(); - var result = converter.Convert(Date, typeof(string), "{1:}", "en-us"); - Assert.AreEqual(Date, result); + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo + }; + var result = converter.Convert(NotEmptyString, typeof(string), 172, language); + Assert.AreEqual(NotEmptyString, result); + } + + [TestCategory("Converters")] + [TestMethod] + [DataRow("{0:ddd d MMM}", "ddd d MMM")] + [DataRow("{0:HH:mm}", "HH:mm")] + [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] + public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfTimeInInvariantCultureFormat(string converterParameter, string expectedFormat) + { + var converter = new StringFormatConverter() + { + CultureInfo = null + }; + var result = converter.Convert(Date, typeof(string), converterParameter, NullLanguage); + Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.InvariantCulture), result); } [TestCategory("Converters")] [TestMethod] - public void WhenParameterIsNotAString_ThenReturnValue() + [DataRow("{0:ddd d MMM}", "ddd d MMM")] + [DataRow("{0:HH:mm}", "HH:mm")] + [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] + public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturnValueOfTimeInConverterCultureInfoFormat(string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter(); - var result = converter.Convert(NotEmptyString, typeof(string), 172, "en-us"); - Assert.AreEqual(NotEmptyString, result); + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo + }; + var result = converter.Convert(Date, typeof(string), converterParameter, NullLanguage); + Assert.AreEqual(Date.ToString(expectedFormat, ConverterCultureInfo), result); + } + + [TestCategory("Converters")] + [TestMethod] + [DataRow("en-us", "{0:ddd d MMM}", "ddd d MMM")] + [DataRow("en-us", "{0:HH:mm}", "HH:mm")] + [DataRow("en-us", "{0:hh:mm:ss tt}", "hh:mm:ss tt")] + public void WhenValueIsDateTimeAndLanguageIsWellKnownAndCultureInfoIsSet_ThenReturnValueOfTimeInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) + { + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo, + }; + var result = converter.Convert(Date, typeof(string), converterParameter, language); + Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); + } + + [TestCategory("Converters")] + [TestMethod] + [DataRow("{0:C2}", "C2")] + [DataRow("{0:E}", "E")] + public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfDecimalInInvariantCultureFormat(string converterParameter, string expectedFormat) + { + var converter = new StringFormatConverter() + { + CultureInfo = null + }; + var result = converter.Convert(Amount, typeof(string), converterParameter, NullLanguage); + Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.InvariantCulture), result); } + + [TestCategory("Converters")] + [TestMethod] + [DataRow("{0:C2}", "C2")] + [DataRow("{0:E}", "E")] + public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturnValueOfDecimalInConverterCultureInfoFormat(string converterParameter, string expectedFormat) + { + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo + }; + var result = converter.Convert(Amount, typeof(string), converterParameter, NullLanguage); + Assert.AreEqual(Amount.ToString(expectedFormat, ConverterCultureInfo), result); + } + + [TestCategory("Converters")] + [TestMethod] + [DataRow("en-us", "{0:C2}", "C2")] + [DataRow("en-us", "{0:E}", "E")] + [DataRow("fr-FR", "{0:E}", "E")] + public void WhenValueIsDecimalAndLanguageIsWellKnownAndCultureInfoIsSet_ThenReturnValueOfDecimalInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) + { + var converter = new StringFormatConverter() + { + CultureInfo = ConverterCultureInfo, + }; + var result = converter.Convert(Amount, typeof(string), converterParameter, language); + Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); + } } } \ No newline at end of file From fc1f855b97d53a611ba1001865eac3943f8b76a9 Mon Sep 17 00:00:00 2001 From: Arlo Godfrey Date: Tue, 13 Sep 2022 12:18:54 -0500 Subject: [PATCH 2/5] Cleanup uneeded CultureInfo property --- .../Converters/StringFormatConverter.cs | 83 ++++------------ .../Converters/Test_StringFormatConverter.cs | 95 +++++++------------ 2 files changed, 50 insertions(+), 128 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs index 53dfcf868f2..c8d8108e144 100644 --- a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs @@ -13,19 +13,6 @@ namespace Microsoft.Toolkit.Uwp.UI.Converters /// public class StringFormatConverter : IValueConverter { - /// - /// Gets or sets the CultureInfo to make converter culture sensitive. The default value is - /// - public CultureInfo CultureInfo { get; set; } - - /// - /// Initializes a new instance of the class. - /// - public StringFormatConverter() - { - CultureInfo = CultureInfo.CurrentCulture; - } - /// /// Return the formatted string version of the source object. /// @@ -36,18 +23,30 @@ public StringFormatConverter() /// Formatted string. public object Convert(object value, Type targetType, object parameter, string language) { - if (value == null) + if (value is null) { return null; } - string formatParameter = parameter as string; - if (formatParameter == null) + // Retrieve the format string and use it to format the value. + string formatString = parameter as string; + CultureInfo culture = string.IsNullOrWhiteSpace(language) ? CultureInfo.InvariantCulture : new CultureInfo(language); + + if (string.IsNullOrEmpty(formatString)) { - return value; + // If the format string is null or empty, simply call ToString() + // on the value. + return value.ToString(); } - return FormatToString(value, formatParameter, GetCultureInfoOrDefault(language, () => GetDefaultCultureInfo())); + try + { + return string.Format(culture, formatString, value); + } + catch + { + return value; + } } /// @@ -62,53 +61,5 @@ public object ConvertBack(object value, Type targetType, object parameter, strin { throw new NotImplementedException(); } - - private object FormatToString(object value, string parameter, CultureInfo cultureInfo) - { - try - { - return string.Format(cultureInfo, parameter, value); - } - catch - { - return value; - } - } - - private CultureInfo GetCultureInfoOrDefault(string language, Func getDefaultCultureInfo) - { - CultureInfo cultureInfo; - if (!TryGetCultureInfo(language, out cultureInfo)) - { - cultureInfo = getDefaultCultureInfo(); - } - - return cultureInfo; - } - - private bool TryGetCultureInfo(string language, out CultureInfo cultureInfo) - { - cultureInfo = null; - if (string.IsNullOrEmpty(language)) - { - return false; - } - - try - { - cultureInfo = CultureInfo.GetCultureInfo(language); - - return true; - } - catch - { - return false; - } - } - - private CultureInfo GetDefaultCultureInfo() - { - return CultureInfo ?? CultureInfo.InvariantCulture; - } } } \ No newline at end of file diff --git a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs index 51d3ece8d80..9d615023dcf 100644 --- a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs +++ b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs @@ -6,70 +6,66 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Globalization; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; namespace UnitTests.Converters { [TestClass] public class Test_StringFormatConverter { - private const string NullLanguage = null; - - private static readonly CultureInfo ConverterCultureInfo = new CultureInfo("pl-pl"); - private static readonly object NullString = null; private static readonly object NotEmptyString = "Hello, world"; private static readonly DateTime Date = DateTime.Now; private static readonly decimal Amount = 333.4m; - + [TestCategory("Converters")] [TestMethod] - [DataRow(NullLanguage)] - [DataRow("en-us")] + [DataRow(null)] + [DataRow("en-us")] public void WhenValueIsNull_ThenReturnNull(string language) { var converter = new StringFormatConverter(); - var result = converter.Convert(NullString, typeof(string), NullString, language); + var result = converter.Convert(null, typeof(string), null, language); + Assert.IsNull(result); } [TestCategory("Converters")] [TestMethod] - [DataRow(NullLanguage)] + [DataRow(null)] [DataRow("en-us")] public void WhenValueExistsAndParameterIsNull_ThenReturnValue(string language) { var converter = new StringFormatConverter(); - var result = converter.Convert(NotEmptyString, typeof(string), NullString, language); + var result = converter.Convert(NotEmptyString, typeof(string), null, language); + Assert.AreEqual(NotEmptyString, result); } [TestCategory("Converters")] [TestMethod] - [DataRow(NullLanguage)] + [DataRow(null)] [DataRow("en-us")] public void WhenParameterIsInvalidFormat_ThenReturnValue(string language) { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo - }; + var converter = new StringFormatConverter(); var result = converter.Convert(Date, typeof(string), "{1:}", language); + Assert.AreEqual(Date, result); } [TestCategory("Converters")] [TestMethod] - [DataRow(NullLanguage)] + [DataRow(null)] [DataRow("en-us")] public void WhenParameterIsNotAString_ThenReturnValue(string language) { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo - }; + var converter = new StringFormatConverter(); var result = converter.Convert(NotEmptyString, typeof(string), 172, language); + Assert.AreEqual(NotEmptyString, result); } - + [TestCategory("Converters")] [TestMethod] [DataRow("{0:ddd d MMM}", "ddd d MMM")] @@ -77,11 +73,9 @@ public void WhenParameterIsNotAString_ThenReturnValue(string language) [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfTimeInInvariantCultureFormat(string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter() - { - CultureInfo = null - }; - var result = converter.Convert(Date, typeof(string), converterParameter, NullLanguage); + var converter = new StringFormatConverter(); + var result = converter.Convert(Date, typeof(string), converterParameter, null); + Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.InvariantCulture), result); } @@ -92,25 +86,20 @@ public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenRe [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturnValueOfTimeInConverterCultureInfoFormat(string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo - }; - var result = converter.Convert(Date, typeof(string), converterParameter, NullLanguage); - Assert.AreEqual(Date.ToString(expectedFormat, ConverterCultureInfo), result); + var converter = new StringFormatConverter(); + var result = converter.Convert(Date, typeof(string), converterParameter, null); + + Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.InvariantCulture), result); } [TestCategory("Converters")] - [TestMethod] + [TestMethod] [DataRow("en-us", "{0:ddd d MMM}", "ddd d MMM")] [DataRow("en-us", "{0:HH:mm}", "HH:mm")] [DataRow("en-us", "{0:hh:mm:ss tt}", "hh:mm:ss tt")] public void WhenValueIsDateTimeAndLanguageIsWellKnownAndCultureInfoIsSet_ThenReturnValueOfTimeInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo, - }; + var converter = new StringFormatConverter(); var result = converter.Convert(Date, typeof(string), converterParameter, language); Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); } @@ -121,26 +110,10 @@ public void WhenValueIsDateTimeAndLanguageIsWellKnownAndCultureInfoIsSet_ThenRet [DataRow("{0:E}", "E")] public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfDecimalInInvariantCultureFormat(string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter() - { - CultureInfo = null - }; - var result = converter.Convert(Amount, typeof(string), converterParameter, NullLanguage); - Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.InvariantCulture), result); - } + var converter = new StringFormatConverter(); + var result = converter.Convert(Amount, typeof(string), converterParameter, null); - [TestCategory("Converters")] - [TestMethod] - [DataRow("{0:C2}", "C2")] - [DataRow("{0:E}", "E")] - public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturnValueOfDecimalInConverterCultureInfoFormat(string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo - }; - var result = converter.Convert(Amount, typeof(string), converterParameter, NullLanguage); - Assert.AreEqual(Amount.ToString(expectedFormat, ConverterCultureInfo), result); + Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.InvariantCulture), result); } [TestCategory("Converters")] @@ -148,14 +121,12 @@ public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturn [DataRow("en-us", "{0:C2}", "C2")] [DataRow("en-us", "{0:E}", "E")] [DataRow("fr-FR", "{0:E}", "E")] - public void WhenValueIsDecimalAndLanguageIsWellKnownAndCultureInfoIsSet_ThenReturnValueOfDecimalInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) + public void WhenValueIsDecimalAndLanguageIsWellKnown_ThenReturnValueOfDecimalInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) { - var converter = new StringFormatConverter() - { - CultureInfo = ConverterCultureInfo, - }; + var converter = new StringFormatConverter(); var result = converter.Convert(Amount, typeof(string), converterParameter, language); + Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); - } + } } } \ No newline at end of file From 78b213ed9e32215d6f2a1ffa31ea27642a32214e Mon Sep 17 00:00:00 2001 From: Arlo Date: Tue, 11 Oct 2022 20:28:02 +0000 Subject: [PATCH 3/5] Only construct CultureInfo if needed --- Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs index c8d8108e144..fdf0d9b2bdc 100644 --- a/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI/Converters/StringFormatConverter.cs @@ -30,8 +30,6 @@ public object Convert(object value, Type targetType, object parameter, string la // Retrieve the format string and use it to format the value. string formatString = parameter as string; - CultureInfo culture = string.IsNullOrWhiteSpace(language) ? CultureInfo.InvariantCulture : new CultureInfo(language); - if (string.IsNullOrEmpty(formatString)) { // If the format string is null or empty, simply call ToString() @@ -41,6 +39,7 @@ public object Convert(object value, Type targetType, object parameter, string la try { + CultureInfo culture = string.IsNullOrWhiteSpace(language) ? CultureInfo.InvariantCulture : new CultureInfo(language); return string.Format(culture, formatString, value); } catch From 2ef533b45ddf8610b6031711337898c8bb0525f4 Mon Sep 17 00:00:00 2001 From: Arlo Date: Tue, 11 Oct 2022 20:42:48 +0000 Subject: [PATCH 4/5] Remove unnecessary tests --- .../Converters/Test_StringFormatConverter.cs | 63 ------------------- 1 file changed, 63 deletions(-) diff --git a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs index 9d615023dcf..45c972a39ca 100644 --- a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs +++ b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs @@ -65,68 +65,5 @@ public void WhenParameterIsNotAString_ThenReturnValue(string language) Assert.AreEqual(NotEmptyString, result); } - - [TestCategory("Converters")] - [TestMethod] - [DataRow("{0:ddd d MMM}", "ddd d MMM")] - [DataRow("{0:HH:mm}", "HH:mm")] - [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] - public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfTimeInInvariantCultureFormat(string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter(); - var result = converter.Convert(Date, typeof(string), converterParameter, null); - - Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.InvariantCulture), result); - } - - [TestCategory("Converters")] - [TestMethod] - [DataRow("{0:ddd d MMM}", "ddd d MMM")] - [DataRow("{0:HH:mm}", "HH:mm")] - [DataRow("{0:hh:mm:ss tt}", "hh:mm:ss tt")] - public void WhenValueIsDateTimeAndLanguageIsUnknownAndCultureInfoIsSet_ThenReturnValueOfTimeInConverterCultureInfoFormat(string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter(); - var result = converter.Convert(Date, typeof(string), converterParameter, null); - - Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.InvariantCulture), result); - } - - [TestCategory("Converters")] - [TestMethod] - [DataRow("en-us", "{0:ddd d MMM}", "ddd d MMM")] - [DataRow("en-us", "{0:HH:mm}", "HH:mm")] - [DataRow("en-us", "{0:hh:mm:ss tt}", "hh:mm:ss tt")] - public void WhenValueIsDateTimeAndLanguageIsWellKnownAndCultureInfoIsSet_ThenReturnValueOfTimeInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter(); - var result = converter.Convert(Date, typeof(string), converterParameter, language); - Assert.AreEqual(Date.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); - } - - [TestCategory("Converters")] - [TestMethod] - [DataRow("{0:C2}", "C2")] - [DataRow("{0:E}", "E")] - public void WhenValueIsDecimalAndLanguageIsUnknownAndCultureInfoIsNotSet_ThenReturnValueOfDecimalInInvariantCultureFormat(string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter(); - var result = converter.Convert(Amount, typeof(string), converterParameter, null); - - Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.InvariantCulture), result); - } - - [TestCategory("Converters")] - [TestMethod] - [DataRow("en-us", "{0:C2}", "C2")] - [DataRow("en-us", "{0:E}", "E")] - [DataRow("fr-FR", "{0:E}", "E")] - public void WhenValueIsDecimalAndLanguageIsWellKnown_ThenReturnValueOfDecimalInLanguageCultureFormat(string language, string converterParameter, string expectedFormat) - { - var converter = new StringFormatConverter(); - var result = converter.Convert(Amount, typeof(string), converterParameter, language); - - Assert.AreEqual(Amount.ToString(expectedFormat, CultureInfo.GetCultureInfo(language)), result); - } } } \ No newline at end of file From 71aea4773e23ff34e95c308a783552d859480383 Mon Sep 17 00:00:00 2001 From: Arlo Date: Tue, 11 Oct 2022 21:35:11 +0000 Subject: [PATCH 5/5] Remove unused decimal --- UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs index 45c972a39ca..74696aa7108 100644 --- a/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs +++ b/UnitTests/UnitTests.UWP/Converters/Test_StringFormatConverter.cs @@ -16,7 +16,6 @@ public class Test_StringFormatConverter { private static readonly object NotEmptyString = "Hello, world"; private static readonly DateTime Date = DateTime.Now; - private static readonly decimal Amount = 333.4m; [TestCategory("Converters")] [TestMethod]