From f6a006c90da5877f19c7e67c473dca125dc51beb Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Fri, 14 Jul 2017 12:24:53 -0400 Subject: [PATCH 1/4] Fixing null ref in array formatting --- ICD.Common.Utils/StringUtils.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ICD.Common.Utils/StringUtils.cs b/ICD.Common.Utils/StringUtils.cs index e339eaf..4acac1c 100644 --- a/ICD.Common.Utils/StringUtils.cs +++ b/ICD.Common.Utils/StringUtils.cs @@ -115,6 +115,16 @@ namespace ICD.Common.Utils return string.Join("", strings); } + /// + /// Uses String.Format to properly handle null values. + /// + /// + /// + public static string ToString(object value) + { + return string.Format("{0}", value); + } + /// /// Converts bytes to an ascii string. /// @@ -360,7 +370,7 @@ namespace ICD.Common.Utils if (items == null) throw new ArgumentNullException("items"); - return string.Format("[{0}]", string.Join(", ", items.Select(i => i.ToString()).ToArray())); + return string.Format("[{0}]", string.Join(", ", items.Select(i => ToString(i)).ToArray())); } /// @@ -377,7 +387,7 @@ namespace ICD.Common.Utils string[] ranges = MathUtils.GetRanges(items) .Select(r => r[0] == r[1] - ? r[0].ToString() + ? ToString(r[0]) : string.Format("{0}-{1}", r[0], r[1])) .ToArray(); From 3479c20ff51cdbf0ae302da3bb9d698465f7e46b Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Mon, 17 Jul 2017 11:43:25 -0400 Subject: [PATCH 2/4] Adding "this" keyword to enumerable extension methods --- ICD.Common.Utils/Extensions/EnumerableExtensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index cdf343b..a2c121b 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -644,7 +644,7 @@ namespace ICD.Common.Utils.Extensions /// /// [PublicAPI] - public static IEnumerable Consolidate(IEnumerable extends) + public static IEnumerable Consolidate(this IEnumerable extends) { if (extends == null) throw new ArgumentNullException("extends"); @@ -664,7 +664,7 @@ namespace ICD.Common.Utils.Extensions /// /// [PublicAPI] - public static IEnumerable Consolidate(IEnumerable extends, IComparer comparer) + public static IEnumerable Consolidate(this IEnumerable extends, IComparer comparer) { if (extends == null) throw new ArgumentNullException("extends"); From 846df86b287f4e26c17dc81d9dacd7fca7cf2e69 Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Mon, 17 Jul 2017 12:14:16 -0400 Subject: [PATCH 3/4] Added test for EnumerableExtensions.Consolidate() --- .../Extensions/EnumerableExtensionsTest.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs diff --git a/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs b/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs new file mode 100644 index 0000000..d2244e4 --- /dev/null +++ b/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs @@ -0,0 +1,21 @@ +using ICD.Common.Utils.Extensions; +using NUnit.Framework; +using System.Linq; + +namespace ICD.Common.Utils.Tests_NetStandard.Extensions +{ + [TestFixture] + public sealed class EnumerableExtensionsTest + { + [Test] + public void ConsolidateTest() + { + string[] sequence = EnumerableExtensions.Consolidate(new string[] { "A", "B", "B", "C" }).ToArray(); + + Assert.AreEqual(3, sequence.Length, StringUtils.ArrayFormat(sequence)); + Assert.AreEqual("A", sequence[0]); + Assert.AreEqual("B", sequence[1]); + Assert.AreEqual("C", sequence[2]); + } + } +} From f120e2bef78c2ce0327ffd399bd42f25517eca17 Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Mon, 17 Jul 2017 12:14:30 -0400 Subject: [PATCH 4/4] Fixed stupid mistake in consolidation method --- ICD.Common.Utils/Extensions/EnumerableExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index a2c121b..80e23df 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -677,7 +677,7 @@ namespace ICD.Common.Utils.Extensions foreach (T item in extends) { - if (!first && comparer.Compare(last, item) != 0) + if (!first && comparer.Compare(last, item) == 0) continue; first = false;