From 2a139e4f3d785b1238da26345941e3b4e1f0937a Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Tue, 26 Sep 2017 13:52:27 -0400 Subject: [PATCH] Fixing bug in dictionary extensions, additional tests --- .../Extensions/DictionaryExtensionsTest.cs | 73 ++++++++++++++++--- .../Extensions/DictionaryExtensions.cs | 12 +-- 2 files changed, 67 insertions(+), 18 deletions(-) diff --git a/ICD.Common.Utils.Tests/Extensions/DictionaryExtensionsTest.cs b/ICD.Common.Utils.Tests/Extensions/DictionaryExtensionsTest.cs index 0a33ef5..9745299 100644 --- a/ICD.Common.Utils.Tests/Extensions/DictionaryExtensionsTest.cs +++ b/ICD.Common.Utils.Tests/Extensions/DictionaryExtensionsTest.cs @@ -11,32 +11,85 @@ namespace ICD.Common.Utils.Tests.Extensions [Test] public void RemoveValueTest() { - Assert.Inconclusive(); - } + Dictionary dict = new Dictionary + { + { 1, 10 }, + { 2, 20 }, + { 3, 30 }, + { 4, 40 }, + }; + + Assert.IsTrue(dict.RemoveValue(10)); + Assert.IsFalse(dict.RemoveValue(0)); + + Assert.IsFalse(dict.ContainsKey(1)); + Assert.AreEqual(3, dict.Count); + } [Test] public void RemoveAllValuesTest() { - Assert.Inconclusive(); - } + Dictionary dict = new Dictionary + { + { 1, 10 }, + { 2, 10 }, + { 3, 30 }, + { 4, 40 }, + }; + + dict.RemoveAllValues(10); + + Assert.IsFalse(dict.ContainsKey(1)); + Assert.IsFalse(dict.ContainsKey(2)); + Assert.AreEqual(2, dict.Count); + } [Test] public void GetDefaultTest() { - Assert.Inconclusive(); - } + Dictionary dict = new Dictionary + { + { 1, 10 }, + { 2, 10 }, + { 3, 30 }, + { 4, 40 }, + }; + + Assert.AreEqual(10, dict.GetDefault(1)); + Assert.AreEqual(0, dict.GetDefault(0)); + } [Test] public void GetDefaultValueTest() { - Assert.Inconclusive(); - } + Dictionary dict = new Dictionary + { + { 1, 10 }, + { 2, 10 }, + { 3, 30 }, + { 4, 40 }, + }; + + Assert.AreEqual(10, dict.GetDefault(1, 1000)); + Assert.AreEqual(1000, dict.GetDefault(0, 1000)); + } [Test] public void GetOrAddDefaultTest() { - Assert.Inconclusive(); - } + Dictionary dict = new Dictionary + { + { 1, 10 }, + { 2, 10 }, + { 3, 30 }, + { 4, 40 }, + }; + + Assert.AreEqual(10, dict.GetOrAddDefault(1, 1000)); + Assert.AreEqual(1000, dict.GetOrAddDefault(0, 1000)); + Assert.AreEqual(1000, dict[0]); + Assert.AreEqual(5, dict.Count); + } [Test] public void GetKeyTest() diff --git a/ICD.Common.Utils/Extensions/DictionaryExtensions.cs b/ICD.Common.Utils/Extensions/DictionaryExtensions.cs index d362a3a..f131204 100644 --- a/ICD.Common.Utils/Extensions/DictionaryExtensions.cs +++ b/ICD.Common.Utils/Extensions/DictionaryExtensions.cs @@ -21,15 +21,11 @@ namespace ICD.Common.Utils.Extensions if (extends == null) throw new ArgumentNullException("extends"); - try - { - TKey key = extends.GetKey(value); - return extends.Remove(key); - } - catch (ArgumentOutOfRangeException) - { + TKey key; + if (!extends.TryGetKey(value, out key)) return false; - } + + return extends.Remove(key); } ///