From 0d18c5a9f7641449d23c5d91efe80e3cad54b18b Mon Sep 17 00:00:00 2001 From: Peter Breen Date: Mon, 17 Oct 2022 11:25:44 +0100 Subject: [PATCH 1/6] Added Base64 encode and decode string extension methods --- src/ByteDev.Strings/StringToExtensions.cs | 32 ++++++++ .../StringToExtensionsTests.cs | 77 +++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/src/ByteDev.Strings/StringToExtensions.cs b/src/ByteDev.Strings/StringToExtensions.cs index 65fa888..9ab607a 100644 --- a/src/ByteDev.Strings/StringToExtensions.cs +++ b/src/ByteDev.Strings/StringToExtensions.cs @@ -320,5 +320,37 @@ public static MemoryStream ToMemoryStream(this string source, Encoding encoding) return new MemoryStream(bytes); } + + /// + /// Encodes the string to Base64 using the passed encoding (defaults to UTF8 if not passed) + /// + /// The string to perform this operation on. + /// Encoding to use. + /// Base64 encoded string + public static string ToBase64String(this string source, Encoding encoding = null) + { + if (string.IsNullOrEmpty(source)) + return source; + + var encodingToUse = encoding ?? Encoding.UTF8; + var bytes = source.ToByteArray(encodingToUse); + return bytes.Any() ? Convert.ToBase64String(bytes) : source; + } + + /// + /// Decodes the string from Base64 using the passed encoding (defaults to UTF8 if not passed) + /// + /// The encoded string to perform this operation on. + /// Encoding to use. + /// The original string decoded from Base64 + public static string ToDecodedBase64String(this string source, Encoding encoding = null) + { + if (string.IsNullOrEmpty(source)) + return source; + + var encodingToUse = encoding ?? Encoding.UTF8; + var decodedBytes = Convert.FromBase64String(source); + return decodedBytes.Any() ? encodingToUse.GetString(decodedBytes) : source; + } } } \ No newline at end of file diff --git a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs index 0e4c81b..b54c1cf 100644 --- a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Text; using ByteDev.Collections; using ByteDev.Io; using NUnit.Framework; @@ -721,5 +722,81 @@ public void WhenNotEmpty_ThenReturnStream() Assert.That(result.ReadAsString(), Is.EqualTo(sut)); } } + + [TestFixture] + public class ToBase64String + { + [TestCase(null)] + [TestCase("")] + public void WhenIsNullOrEmpty_DefaultEncoding_ThenReturnNullOrEmpty(string sut) + { + var result = sut.ToBase64String(); + Assert.AreEqual(sut, result); + } + + [TestCase(null)] + [TestCase("")] + public void WhenIsNullOrEmpty_AsciiEncoding_ThenReturnNullOrEmpty(string sut) + { + var result = sut.ToBase64String(Encoding.ASCII); + Assert.AreEqual(sut, result); + } + + [TestCase("M", "TQ==")] + [TestCase("My test string", "TXkgdGVzdCBzdHJpbmc=")] + [TestCase("My tè$t, 5trīng!", "TXkgdMOoJHQsIDV0csSrbmch")] + public void WhenIsNotEmpty_DefaultEncoding_ThenReturnExpectedEncodedString(string sut, string expected) + { + var result = sut.ToBase64String(); + Assert.AreEqual(expected, result); + } + + [TestCase("M", "AE0=")] + [TestCase("My test string", "AE0AeQAgAHQAZQBzAHQAIABzAHQAcgBpAG4AZw==")] + [TestCase("My tè$t, 5trīng!", "AE0AeQAgAHQA6AAkAHQALAAgADUAdAByASsAbgBnACE=")] + public void WhenIsNotEmpty_Utf16Encoding_ThenReturnExpectedEncodedString(string sut, string expected) + { + var result = sut.ToBase64String(Encoding.BigEndianUnicode); + Assert.AreEqual(expected, result); + } + } + + [TestFixture] + public class ToDecodedBase64String + { + [TestCase(null)] + [TestCase("")] + public void WhenIsNullOrEmpty_DefaultEncoding_ThenReturnNullOrEmpty(string sut) + { + var result = sut.ToDecodedBase64String(); + Assert.AreEqual(sut, result); + } + + [TestCase(null)] + [TestCase("")] + public void WhenIsNullOrEmpty_AsciiEncoding_ThenReturnNullOrEmpty(string sut) + { + var result = sut.ToDecodedBase64String(Encoding.ASCII); + Assert.AreEqual(sut, result); + } + + [TestCase("TQ==", "M")] + [TestCase("TXkgdGVzdCBzdHJpbmc=", "My test string")] + [TestCase("TXkgdMOoJHQsIDV0csSrbmch", "My tè$t, 5trīng!")] + public void WhenIsNotEmpty_DefaultEncoding_ThenReturnExpectedEncodedString(string sut, string expected) + { + var result = sut.ToDecodedBase64String(); + Assert.AreEqual(expected, result); + } + + [TestCase("AE0=", "M")] + [TestCase("AE0AeQAgAHQAZQBzAHQAIABzAHQAcgBpAG4AZw==", "My test string")] + [TestCase("AE0AeQAgAHQA6AAkAHQALAAgADUAdAByASsAbgBnACE=", "My tè$t, 5trīng!")] + public void WhenIsNotEmpty_Utf16Encoding_ThenReturnExpectedEncodedString(string sut, string expected) + { + var result = sut.ToDecodedBase64String(Encoding.BigEndianUnicode); + Assert.AreEqual(expected, result); + } + } } } \ No newline at end of file From 8c634449f048106fedb08cee17160211efa8c3d6 Mon Sep 17 00:00:00 2001 From: Peter Breen Date: Thu, 3 Nov 2022 09:24:14 +0000 Subject: [PATCH 2/6] Added ExtractStringBetween: Extracts the string between the specified start and end string. --- src/ByteDev.Strings/StringExtensions.cs | 30 ++++++++++++ .../StringExtensionsTests.cs | 46 ++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/ByteDev.Strings/StringExtensions.cs b/src/ByteDev.Strings/StringExtensions.cs index 0a79686..1b8d9e2 100644 --- a/src/ByteDev.Strings/StringExtensions.cs +++ b/src/ByteDev.Strings/StringExtensions.cs @@ -223,5 +223,35 @@ public static string InsertBeforeUpperCase(this string source, string delimiter) return sb.ToString(); } + + /// + /// Extracts the string between the specified start and end string. + /// e.g. for "The quick brown fox jumps over the lazy dog", the string between "quick" and "jumps" is " brown fox ". + /// If there are multiple instances of a start or end string, it will use the first instance. + /// An empty string will be returned if no matches were found. + /// + /// String to perform the operation on. + /// The start string to find + /// The end string to find after the startString + /// The string comparison to use (defaults to StringComparison.OrdinalIgnoreCase) + /// The string in between startString and endString, or empty string if not found + public static string ExtractStringBetween(this string source, string startString, string endString, StringComparison stringComparison = StringComparison.OrdinalIgnoreCase) + { + if (string.IsNullOrEmpty(source) || string.IsNullOrEmpty(startString) || string.IsNullOrEmpty(endString)) + return string.Empty; + + var extractedString = string.Empty; + var startIndex = source.IndexOf(startString, stringComparison); + + if (startIndex > -1) + { + startIndex += startString.Length; + var endIndex = source.IndexOf(endString, startIndex, stringComparison); + if (endIndex > -1) + extractedString = source.SafeSubstring(startIndex, endIndex - startIndex); + } + + return extractedString; + } } } \ No newline at end of file diff --git a/tests/ByteDev.Strings.UnitTests/StringExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringExtensionsTests.cs index 29781ff..501a0e3 100644 --- a/tests/ByteDev.Strings.UnitTests/StringExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringExtensionsTests.cs @@ -561,5 +561,49 @@ public void WhenHasUpperCase_ThenReturnString(string sut, string expected) Assert.That(result, Is.EqualTo(expected)); } } + + [TestFixture] + public class ExtractStringBetween + { + [TestCase(null)] + [TestCase("")] + public void WhenSourceIsNullOrEmpty_ThenReturnEmptyString(string source) + { + var result = source.ExtractStringBetween("test1", "test2"); + + Assert.That(result, Is.EqualTo(string.Empty)); + } + + [TestCase("The quick brown fox jumps over the lazy dog", "quick1", "jumps")] + [TestCase("The quick brown fox jumps over the lazy dog", "the", "not found")] + public void WhenIsNotAMatchingSearch_ThenReturnEmptyString(string source, string startString, string endString) + { + var result = source.ExtractStringBetween(startString, endString); + + Assert.That(result, Is.EqualTo(string.Empty)); + } + + [TestCase("The quick brown fox jumps over the lazy dog", "quick", "jumps", " brown fox ")] + [TestCase("The quick brown fox jumps over the lazy dog", "the", "dog", " quick brown fox jumps over the lazy ")] + [TestCase("The quick brown fox jumps over the lazy dog", "lazy", "dog", " ")] + [TestCase("My test string", "", "", "My test string")] + [TestCase("My test string", " Date: Thu, 3 Nov 2022 09:27:44 +0000 Subject: [PATCH 3/6] Remove Base64 methods --- src/ByteDev.Strings/StringToExtensions.cs | 32 -------- .../StringToExtensionsTests.cs | 76 ------------------- 2 files changed, 108 deletions(-) diff --git a/src/ByteDev.Strings/StringToExtensions.cs b/src/ByteDev.Strings/StringToExtensions.cs index 9ab607a..65fa888 100644 --- a/src/ByteDev.Strings/StringToExtensions.cs +++ b/src/ByteDev.Strings/StringToExtensions.cs @@ -320,37 +320,5 @@ public static MemoryStream ToMemoryStream(this string source, Encoding encoding) return new MemoryStream(bytes); } - - /// - /// Encodes the string to Base64 using the passed encoding (defaults to UTF8 if not passed) - /// - /// The string to perform this operation on. - /// Encoding to use. - /// Base64 encoded string - public static string ToBase64String(this string source, Encoding encoding = null) - { - if (string.IsNullOrEmpty(source)) - return source; - - var encodingToUse = encoding ?? Encoding.UTF8; - var bytes = source.ToByteArray(encodingToUse); - return bytes.Any() ? Convert.ToBase64String(bytes) : source; - } - - /// - /// Decodes the string from Base64 using the passed encoding (defaults to UTF8 if not passed) - /// - /// The encoded string to perform this operation on. - /// Encoding to use. - /// The original string decoded from Base64 - public static string ToDecodedBase64String(this string source, Encoding encoding = null) - { - if (string.IsNullOrEmpty(source)) - return source; - - var encodingToUse = encoding ?? Encoding.UTF8; - var decodedBytes = Convert.FromBase64String(source); - return decodedBytes.Any() ? encodingToUse.GetString(decodedBytes) : source; - } } } \ No newline at end of file diff --git a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs index b54c1cf..f674da9 100644 --- a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs @@ -722,81 +722,5 @@ public void WhenNotEmpty_ThenReturnStream() Assert.That(result.ReadAsString(), Is.EqualTo(sut)); } } - - [TestFixture] - public class ToBase64String - { - [TestCase(null)] - [TestCase("")] - public void WhenIsNullOrEmpty_DefaultEncoding_ThenReturnNullOrEmpty(string sut) - { - var result = sut.ToBase64String(); - Assert.AreEqual(sut, result); - } - - [TestCase(null)] - [TestCase("")] - public void WhenIsNullOrEmpty_AsciiEncoding_ThenReturnNullOrEmpty(string sut) - { - var result = sut.ToBase64String(Encoding.ASCII); - Assert.AreEqual(sut, result); - } - - [TestCase("M", "TQ==")] - [TestCase("My test string", "TXkgdGVzdCBzdHJpbmc=")] - [TestCase("My tè$t, 5trīng!", "TXkgdMOoJHQsIDV0csSrbmch")] - public void WhenIsNotEmpty_DefaultEncoding_ThenReturnExpectedEncodedString(string sut, string expected) - { - var result = sut.ToBase64String(); - Assert.AreEqual(expected, result); - } - - [TestCase("M", "AE0=")] - [TestCase("My test string", "AE0AeQAgAHQAZQBzAHQAIABzAHQAcgBpAG4AZw==")] - [TestCase("My tè$t, 5trīng!", "AE0AeQAgAHQA6AAkAHQALAAgADUAdAByASsAbgBnACE=")] - public void WhenIsNotEmpty_Utf16Encoding_ThenReturnExpectedEncodedString(string sut, string expected) - { - var result = sut.ToBase64String(Encoding.BigEndianUnicode); - Assert.AreEqual(expected, result); - } - } - - [TestFixture] - public class ToDecodedBase64String - { - [TestCase(null)] - [TestCase("")] - public void WhenIsNullOrEmpty_DefaultEncoding_ThenReturnNullOrEmpty(string sut) - { - var result = sut.ToDecodedBase64String(); - Assert.AreEqual(sut, result); - } - - [TestCase(null)] - [TestCase("")] - public void WhenIsNullOrEmpty_AsciiEncoding_ThenReturnNullOrEmpty(string sut) - { - var result = sut.ToDecodedBase64String(Encoding.ASCII); - Assert.AreEqual(sut, result); - } - - [TestCase("TQ==", "M")] - [TestCase("TXkgdGVzdCBzdHJpbmc=", "My test string")] - [TestCase("TXkgdMOoJHQsIDV0csSrbmch", "My tè$t, 5trīng!")] - public void WhenIsNotEmpty_DefaultEncoding_ThenReturnExpectedEncodedString(string sut, string expected) - { - var result = sut.ToDecodedBase64String(); - Assert.AreEqual(expected, result); - } - - [TestCase("AE0=", "M")] - [TestCase("AE0AeQAgAHQAZQBzAHQAIABzAHQAcgBpAG4AZw==", "My test string")] - [TestCase("AE0AeQAgAHQA6AAkAHQALAAgADUAdAByASsAbgBnACE=", "My tè$t, 5trīng!")] - public void WhenIsNotEmpty_Utf16Encoding_ThenReturnExpectedEncodedString(string sut, string expected) - { - var result = sut.ToDecodedBase64String(Encoding.BigEndianUnicode); - Assert.AreEqual(expected, result); - } - } } } \ No newline at end of file From 94989f6424b4f5cd7e7b3b8d1f22941007dd49e1 Mon Sep 17 00:00:00 2001 From: Peter Breen Date: Thu, 3 Nov 2022 09:29:32 +0000 Subject: [PATCH 4/6] Remove unnecessary using --- tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs index f674da9..0e4c81b 100644 --- a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using System.Text; using ByteDev.Collections; using ByteDev.Io; using NUnit.Framework; From 8f931f7584dabfba0587ae8af0cec33cba582fc0 Mon Sep 17 00:00:00 2001 From: Peter Breen Date: Thu, 5 Jan 2023 12:04:09 +0000 Subject: [PATCH 5/6] Added ToConvertedSequence: Returns the string as a sequence with each value determined by the specified char delimiter, and converted to the specified type. --- src/ByteDev.Strings/StringToExtensions.cs | 40 +++++++++++--- .../StringToExtensionsTests.cs | 52 ++++++++++++++++++- 2 files changed, 83 insertions(+), 9 deletions(-) diff --git a/src/ByteDev.Strings/StringToExtensions.cs b/src/ByteDev.Strings/StringToExtensions.cs index 65fa888..08fa55b 100644 --- a/src/ByteDev.Strings/StringToExtensions.cs +++ b/src/ByteDev.Strings/StringToExtensions.cs @@ -35,7 +35,7 @@ public static string ToTitleCase(this string source) { if (source == null) return null; - + return CultureInfo.InvariantCulture.TextInfo.ToTitleCase(source.ToLower()); } @@ -49,7 +49,7 @@ public static IEnumerable ToLines(this string source, bool ignoreEmptyLi { if (source == null) source = string.Empty; - + using (var reader = new StringReader(source)) { string line; @@ -111,7 +111,7 @@ public static byte[] ToByteArray(this string source, Encoding encoding) { if (string.IsNullOrEmpty(source)) return new byte[0]; - + return encoding.GetBytes(source); } @@ -195,7 +195,7 @@ public static IEnumerable ToSequence(this string source, char delimiter, string[] parts = source.Split(delimiter); - if (!trimValues) + if (!trimValues) return parts; return parts.Select(a => a.Trim()).Where(s => s != string.Empty); @@ -210,7 +210,7 @@ public static IEnumerable ToSequence(this string source, char delimiter, /// Collection of values; otherwise empty. public static IEnumerable ToSequence(this string source, string delimiter, bool trimValues = false) { - return ToSequence(source, new[] {delimiter}, trimValues); + return ToSequence(source, new[] { delimiter }, trimValues); } /// @@ -227,7 +227,7 @@ public static IEnumerable ToSequence(this string source, string[] delimi string[] parts = source.Split(delimiters, StringSplitOptions.None); - if (!trimValues) + if (!trimValues) return parts; return parts.Select(a => a.Trim()).Where(s => s != string.Empty); @@ -297,7 +297,7 @@ public static KeyValuePair ToKeyValuePair(this string source, st return new KeyValuePair(key, value); } - + /// /// Returns the string as a MemoryStream using UTF-8 encoding. /// @@ -320,5 +320,31 @@ public static MemoryStream ToMemoryStream(this string source, Encoding encoding) return new MemoryStream(bytes); } + + /// + /// Returns the string as a sequence with each value determined by the specified char delimiter, and converted to the specified type. + /// + /// The type to convert each item into. + /// The string to perform this operation on. + /// Value delimiter. + /// True trim each value; false do nothing. + /// Collection of values; otherwise empty. Throws exception if values cannot be converted. + public static IEnumerable ToConvertedSequence(this string sourceString, char delimiter = ',', bool trimValues = false) + where T : struct, IConvertible + { + if (string.IsNullOrEmpty(sourceString)) + return Enumerable.Empty(); + + try + { + IEnumerable stringValues = sourceString.ToSequence(delimiter, trimValues); + + return stringValues.Select(stringValue => (T)Convert.ChangeType(stringValue, typeof(T))); + } + catch (Exception) + { + return Enumerable.Empty(); + } + } } } \ No newline at end of file diff --git a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs index 0e4c81b..2a68ccc 100644 --- a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs @@ -135,7 +135,7 @@ public void WhenHasThreeLines_ThenReturnThreeLines() [Test] public void WhenIgnoreEmptyLines_ThenReturnNonEmptyLines() { - const string sut = "Hello World\r\n" + + const string sut = "Hello World\r\n" + NewLineStrings.Windows + " " + NewLineStrings.Windows + " " + NewLineStrings.Windows + @@ -222,7 +222,7 @@ public void WhenHasThreeLines_ThenReturnThreeLines() [Test] public void WhenIgnoreEmptyLines_ThenReturnNonEmptyLines() { - const string sut = "Hello World\r\n" + + const string sut = "Hello World\r\n" + NewLineStrings.Windows + " " + NewLineStrings.Windows + " " + NewLineStrings.Windows + @@ -721,5 +721,53 @@ public void WhenNotEmpty_ThenReturnStream() Assert.That(result.ReadAsString(), Is.EqualTo(sut)); } } + + [TestFixture] + public class ToConvertedSequence + { + [TestCase(null)] + [TestCase("")] + public void WhenIsNullOrEmpty_ThenReturnEmptyList(string sut) + { + var result = sut.ToConvertedSequence(); + + Assert.IsNotNull(result); + Assert.That(result.Count(), Is.EqualTo(0)); + } + + [TestCase("1")] + [TestCase("489")] + [TestCase("2147483647")] + public void WhenDoesNotContainDelimiter_ThenReturnListWithOneValue(string sut) + { + var result = sut.ToConvertedSequence(); + + Assert.IsNotNull(result); + var resultAsList = result.ToList(); + Assert.That(resultAsList.Count, Is.EqualTo(1)); + Assert.That(resultAsList[0], Is.EqualTo(Convert.ToInt32(sut))); + } + + [TestCase("1,444,44", ',')] + [TestCase("89,092,7,9", ',')] + [TestCase("0:7", ':')] + [TestCase("8?99?5432?900", '?')] + public void WhenContainsDelimiter_ThenReturnListWithValues(string sut, char delimiter) + { + var expected = sut.Split(delimiter).Select(s => Convert.ToInt64(s)); + var result = sut.ToConvertedSequence(delimiter); + + Assert.IsNotNull(result); + Assert.That(result, Is.EqualTo(expected)); + } + + [TestCase("abc", ',')] + [TestCase("1,444,44", ':')] + [TestCase("0:7", ',')] + public void WhenInvalidValues_ThenThrowException(string sut, char delimiter) + { + Assert.Throws(() => sut.ToConvertedSequence(delimiter).ToList(), "Input string was not in a correct format."); + } + } } } \ No newline at end of file From 89a818e07d9781ff19f9e77a5c97f2f824ed3f9c Mon Sep 17 00:00:00 2001 From: Peter Breen Date: Thu, 5 Jan 2023 13:06:57 +0000 Subject: [PATCH 6/6] Adding back white space that was altered by my Visual Studio --- src/ByteDev.Strings/StringToExtensions.cs | 14 +++++++------- .../StringToExtensionsTests.cs | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ByteDev.Strings/StringToExtensions.cs b/src/ByteDev.Strings/StringToExtensions.cs index 08fa55b..f10a97e 100644 --- a/src/ByteDev.Strings/StringToExtensions.cs +++ b/src/ByteDev.Strings/StringToExtensions.cs @@ -35,7 +35,7 @@ public static string ToTitleCase(this string source) { if (source == null) return null; - + return CultureInfo.InvariantCulture.TextInfo.ToTitleCase(source.ToLower()); } @@ -49,7 +49,7 @@ public static IEnumerable ToLines(this string source, bool ignoreEmptyLi { if (source == null) source = string.Empty; - + using (var reader = new StringReader(source)) { string line; @@ -111,7 +111,7 @@ public static byte[] ToByteArray(this string source, Encoding encoding) { if (string.IsNullOrEmpty(source)) return new byte[0]; - + return encoding.GetBytes(source); } @@ -195,7 +195,7 @@ public static IEnumerable ToSequence(this string source, char delimiter, string[] parts = source.Split(delimiter); - if (!trimValues) + if (!trimValues) return parts; return parts.Select(a => a.Trim()).Where(s => s != string.Empty); @@ -210,7 +210,7 @@ public static IEnumerable ToSequence(this string source, char delimiter, /// Collection of values; otherwise empty. public static IEnumerable ToSequence(this string source, string delimiter, bool trimValues = false) { - return ToSequence(source, new[] { delimiter }, trimValues); + return ToSequence(source, new[] {delimiter}, trimValues); } /// @@ -227,7 +227,7 @@ public static IEnumerable ToSequence(this string source, string[] delimi string[] parts = source.Split(delimiters, StringSplitOptions.None); - if (!trimValues) + if (!trimValues) return parts; return parts.Select(a => a.Trim()).Where(s => s != string.Empty); @@ -297,7 +297,7 @@ public static KeyValuePair ToKeyValuePair(this string source, st return new KeyValuePair(key, value); } - + /// /// Returns the string as a MemoryStream using UTF-8 encoding. /// diff --git a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs index 2a68ccc..29208e9 100644 --- a/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs +++ b/tests/ByteDev.Strings.UnitTests/StringToExtensionsTests.cs @@ -135,7 +135,7 @@ public void WhenHasThreeLines_ThenReturnThreeLines() [Test] public void WhenIgnoreEmptyLines_ThenReturnNonEmptyLines() { - const string sut = "Hello World\r\n" + + const string sut = "Hello World\r\n" + NewLineStrings.Windows + " " + NewLineStrings.Windows + " " + NewLineStrings.Windows + @@ -222,7 +222,7 @@ public void WhenHasThreeLines_ThenReturnThreeLines() [Test] public void WhenIgnoreEmptyLines_ThenReturnNonEmptyLines() { - const string sut = "Hello World\r\n" + + const string sut = "Hello World\r\n" + NewLineStrings.Windows + " " + NewLineStrings.Windows + " " + NewLineStrings.Windows +