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]);
+ }
+ }
+}
diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs
index cdf343b..80e23df 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");
@@ -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;
diff --git a/ICD.Common.Utils/StringUtils.cs b/ICD.Common.Utils/StringUtils.cs
index 4a18951..8a27161 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();