From 1c70c78cedfc6da34510f78fcf9443f98b97d542 Mon Sep 17 00:00:00 2001 From: Benjamin Michaelis Date: Wed, 28 Aug 2024 10:07:40 -0700 Subject: [PATCH 1/4] feat: Update example of 2.9 --- ...2.09.FormattingUsingTheRFormatSpecifier.cs | 24 --------------- .../Listing02.09.UsingStringFormat.cs | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 24 deletions(-) delete mode 100644 src/Chapter02/Listing02.09.FormattingUsingTheRFormatSpecifier.cs create mode 100644 src/Chapter02/Listing02.09.UsingStringFormat.cs diff --git a/src/Chapter02/Listing02.09.FormattingUsingTheRFormatSpecifier.cs b/src/Chapter02/Listing02.09.FormattingUsingTheRFormatSpecifier.cs deleted file mode 100644 index cf5b85d72..000000000 --- a/src/Chapter02/Listing02.09.FormattingUsingTheRFormatSpecifier.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter02.Listing02_09; - -public class Program -{ - public static void Main() - { - #region INCLUDE - // ... - const double number = 1.618033988749895; - double result; - string text; - - text = $"{number}"; - result = double.Parse(text); - Console.WriteLine($"{result == number}: {result} == {number}"); - - text = $"{number:R}"; - result = double.Parse(text); - Console.WriteLine($"{result == number}: {result} == {number}"); - - // ... - #endregion INCLUDE - } -} \ No newline at end of file diff --git a/src/Chapter02/Listing02.09.UsingStringFormat.cs b/src/Chapter02/Listing02.09.UsingStringFormat.cs new file mode 100644 index 000000000..71e33fd21 --- /dev/null +++ b/src/Chapter02/Listing02.09.UsingStringFormat.cs @@ -0,0 +1,30 @@ +namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter02.Listing02_09; + +using System.Globalization; + +public class Program +{ + public static void Main() + { + #region INCLUDE + // ... + const double number = 86540910.21; + string currencyText; + + currencyText = $"{number}"; + Console.WriteLine(currencyText); + + currencyText = $"{number:C}"; + Console.WriteLine(currencyText); + + // Prove that string interpolation and the ToString method produce equivalent results with format specifiers + string toStringCurrencyText = number.ToString("C"); + Console.WriteLine($"{currencyText == toStringCurrencyText}: {currencyText} == {toStringCurrencyText}"); + + toStringCurrencyText = number.ToString("C", CultureInfo.GetCultureInfo("fr-FR")); + Console.WriteLine(toStringCurrencyText); + + // ... + #endregion INCLUDE + } +} \ No newline at end of file From 7110fa7e92ed159b54b2a18899c269d0626ddcc5 Mon Sep 17 00:00:00 2001 From: Benjamin Michaelis Date: Wed, 28 Aug 2024 10:23:28 -0700 Subject: [PATCH 2/4] update tests --- src/Chapter02.Tests/Listing02.09.Tests.cs | 21 ++++++------------- .../Listing02.09.UsingStringFormat.cs | 2 +- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/Chapter02.Tests/Listing02.09.Tests.cs b/src/Chapter02.Tests/Listing02.09.Tests.cs index fc739b86b..c1aa5993b 100644 --- a/src/Chapter02.Tests/Listing02.09.Tests.cs +++ b/src/Chapter02.Tests/Listing02.09.Tests.cs @@ -1,5 +1,3 @@ -using AddisonWesley.Michaelis.EssentialCSharp.Shared; - namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter02.Listing02_09.Tests; [TestClass] @@ -8,19 +6,12 @@ public class ProgramTests [TestMethod] public void Main_WriteBooleanStatements() { - string netCoreApp2expected = -$@"False: {1.61803398874989} == {1.61803398874989} -True: {1.61803398874989} == {1.61803398874989}"; - - string expected = // netcoreapp3.0 and later -$@"True: {1.618033988749895} == {1.618033988749895} -True: {1.618033988749895} == {1.618033988749895}"; - - string netCoreVersion = NetCore.GetNetCoreVersion(); - if (string.Compare(netCoreVersion, "3")<0) - { - expected = netCoreApp2expected; - } + string currentCultureString = 86540910.21.ToString("C"); + string expected = +$@"86540910.21 +{currentCultureString} +True: {currentCultureString} == {currentCultureString} +86.540.910,21 €"; IntelliTect.TestTools.Console.ConsoleAssert.Expect( expected, Program.Main); diff --git a/src/Chapter02/Listing02.09.UsingStringFormat.cs b/src/Chapter02/Listing02.09.UsingStringFormat.cs index 71e33fd21..44394fdbc 100644 --- a/src/Chapter02/Listing02.09.UsingStringFormat.cs +++ b/src/Chapter02/Listing02.09.UsingStringFormat.cs @@ -21,7 +21,7 @@ public static void Main() string toStringCurrencyText = number.ToString("C"); Console.WriteLine($"{currencyText == toStringCurrencyText}: {currencyText} == {toStringCurrencyText}"); - toStringCurrencyText = number.ToString("C", CultureInfo.GetCultureInfo("fr-FR")); + toStringCurrencyText = number.ToString("C", CultureInfo.GetCultureInfo("el-GR")); Console.WriteLine(toStringCurrencyText); // ... From 54cacf1e0e27845cd887ddf0b50bd5b13597c701 Mon Sep 17 00:00:00 2001 From: Benjamin Michaelis Date: Wed, 28 Aug 2024 14:22:38 -0700 Subject: [PATCH 3/4] PR Feedback --- src/Chapter02/Listing02.09.UsingStringFormat.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Chapter02/Listing02.09.UsingStringFormat.cs b/src/Chapter02/Listing02.09.UsingStringFormat.cs index 44394fdbc..8733a0190 100644 --- a/src/Chapter02/Listing02.09.UsingStringFormat.cs +++ b/src/Chapter02/Listing02.09.UsingStringFormat.cs @@ -21,6 +21,7 @@ public static void Main() string toStringCurrencyText = number.ToString("C"); Console.WriteLine($"{currencyText == toStringCurrencyText}: {currencyText} == {toStringCurrencyText}"); + // el-GR represents the Greek locale code toStringCurrencyText = number.ToString("C", CultureInfo.GetCultureInfo("el-GR")); Console.WriteLine(toStringCurrencyText); From 9d9dbb7542a66d77c9406d6848686a10b1553b65 Mon Sep 17 00:00:00 2001 From: Benjamin Michaelis Date: Wed, 4 Sep 2024 09:33:38 -0700 Subject: [PATCH 4/4] Update test --- src/Chapter02.Tests/Listing02.09.Tests.cs | 10 +++++++--- src/Chapter02/Listing02.09.UsingStringFormat.cs | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Chapter02.Tests/Listing02.09.Tests.cs b/src/Chapter02.Tests/Listing02.09.Tests.cs index c1aa5993b..fd50eef7a 100644 --- a/src/Chapter02.Tests/Listing02.09.Tests.cs +++ b/src/Chapter02.Tests/Listing02.09.Tests.cs @@ -1,3 +1,5 @@ +using System.Globalization; + namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter02.Listing02_09.Tests; [TestClass] @@ -6,12 +8,14 @@ public class ProgramTests [TestMethod] public void Main_WriteBooleanStatements() { - string currentCultureString = 86540910.21.ToString("C"); + var number = 86540910.21; + string currentCultureString = number.ToString("C"); + string greekCultureString = number.ToString("C", CultureInfo.GetCultureInfo("el-GR")); string expected = -$@"86540910.21 +$@"{number} {currentCultureString} True: {currentCultureString} == {currentCultureString} -86.540.910,21 €"; +{greekCultureString}"; IntelliTect.TestTools.Console.ConsoleAssert.Expect( expected, Program.Main); diff --git a/src/Chapter02/Listing02.09.UsingStringFormat.cs b/src/Chapter02/Listing02.09.UsingStringFormat.cs index 8733a0190..fa18afa26 100644 --- a/src/Chapter02/Listing02.09.UsingStringFormat.cs +++ b/src/Chapter02/Listing02.09.UsingStringFormat.cs @@ -1,5 +1,6 @@ namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter02.Listing02_09; +using System; using System.Globalization; public class Program