public void Test_Add_Remove_CopyTo_Keys_Values() { var table = new SlimHashTable <string, string>(x => x, 10); table.Add("foo"); AssertTableContents(table); var count = 32 * 5; for (var i = 0; i < count; i++) { table.Add("foo" + i); AssertTableContents(table); } AssertTableContents(table); Assert.IsTrue(table.Contains("foo")); Assert.AreEqual(count + 1, table.Count); Assert.IsFalse(table.Contains("bar")); AssertTableContents(table); for (var i = count - 1; i >= 0; i--) { var removed = table.Remove("foo" + i); Assert.IsTrue(removed); AssertTableContents(table); } Assert.IsTrue(table.Contains("foo")); Assert.AreEqual(1, table.Count); Assert.IsFalse(table.Contains("bar")); Assert.IsTrue(table.Remove("foo")); Assert.IsFalse(table.Contains("foo")); Assert.AreEqual(0, table.Count); }
private void AssertTableContents(SlimHashTable <string, string> table) { var dic = table.ToDictionary(x => x.Key, x => x.Value); var keySet = new HashSet <string>(table.Keys); var valueSet = new HashSet <string>(table.Values); var kvp = new KeyValuePair <string, string> [table.Count]; table.CopyTo(kvp, 0); var dic2 = kvp.ToDictionary(x => x.Key, x => x.Value); if (table.Count >= 1) { Assert.IsTrue(table.Contains("foo")); Assert.IsTrue(dic.ContainsKey("foo")); Assert.IsTrue(dic2.ContainsKey("foo")); Assert.IsTrue(keySet.Contains("foo")); Assert.IsTrue(valueSet.Contains("foo")); } for (var i = 0; i < table.Count - 1; i++) { var key = "foo" + (table.Count - 2 - i); Assert.IsTrue(table.Contains(key)); Assert.IsTrue(dic.ContainsKey(key)); Assert.IsTrue(dic2.ContainsKey(key)); Assert.IsTrue(keySet.Contains(key)); Assert.IsTrue(valueSet.Contains(key)); } }
public void TestUpdateValueType() { var table = new SlimHashTable <string, MyTestValueType>(x => x.Key, 10); table.Add(new MyTestValueType("test", 5)); Assert.IsTrue(table.Contains("test")); Assert.AreEqual(5, table["test"].Value); table["test"] = new MyTestValueType("test", 15); Assert.IsTrue(table.Contains("test")); Assert.AreEqual(15, table["test"].Value); }