Fixing bug in dictionary extensions, additional tests

This commit is contained in:
Chris Cameron
2017-09-26 13:52:27 -04:00
parent 750d039794
commit 2a139e4f3d
2 changed files with 67 additions and 18 deletions

View File

@@ -11,31 +11,84 @@ namespace ICD.Common.Utils.Tests.Extensions
[Test] [Test]
public void RemoveValueTest() public void RemoveValueTest()
{ {
Assert.Inconclusive(); Dictionary<int, int> dict = new Dictionary<int, int>
{
{ 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] [Test]
public void RemoveAllValuesTest() public void RemoveAllValuesTest()
{ {
Assert.Inconclusive(); Dictionary<int, int> dict = new Dictionary<int, int>
{
{ 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] [Test]
public void GetDefaultTest() public void GetDefaultTest()
{ {
Assert.Inconclusive(); Dictionary<int, int> dict = new Dictionary<int, int>
{
{ 1, 10 },
{ 2, 10 },
{ 3, 30 },
{ 4, 40 },
};
Assert.AreEqual(10, dict.GetDefault(1));
Assert.AreEqual(0, dict.GetDefault(0));
} }
[Test] [Test]
public void GetDefaultValueTest() public void GetDefaultValueTest()
{ {
Assert.Inconclusive(); Dictionary<int, int> dict = new Dictionary<int, int>
{
{ 1, 10 },
{ 2, 10 },
{ 3, 30 },
{ 4, 40 },
};
Assert.AreEqual(10, dict.GetDefault(1, 1000));
Assert.AreEqual(1000, dict.GetDefault(0, 1000));
} }
[Test] [Test]
public void GetOrAddDefaultTest() public void GetOrAddDefaultTest()
{ {
Assert.Inconclusive(); Dictionary<int, int> dict = new Dictionary<int, int>
{
{ 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] [Test]

View File

@@ -21,15 +21,11 @@ namespace ICD.Common.Utils.Extensions
if (extends == null) if (extends == null)
throw new ArgumentNullException("extends"); throw new ArgumentNullException("extends");
try TKey key;
{ if (!extends.TryGetKey(value, out key))
TKey key = extends.GetKey(value);
return extends.Remove(key);
}
catch (ArgumentOutOfRangeException)
{
return false; return false;
}
return extends.Remove(key);
} }
/// <summary> /// <summary>