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,32 +11,85 @@ namespace ICD.Common.Utils.Tests.Extensions
[Test]
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]
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]
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]
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]
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]
public void GetKeyTest()

View File

@@ -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);
}
/// <summary>