public void TestInsert() { StrKeyCollection collection = new StrKeyCollection(EqualityComparer <string> .Default, 2); #if NOT_IMPLEMENTED Assert.IsNull(collection.GetDictionary(), "Dictionary created too early"); // There can't be a dictionary yet #endif collection.Add("One"); // Key:First #if NOT_IMPLEMENTED Assert.IsNull(collection.GetDictionary(), "Dictionary created too early"); // There can't be a dictionary yet #endif collection.Add("Two"); // Key:Two #if NOT_IMPLEMENTED Assert.IsNull(collection.GetDictionary(), "Dictionary created too early"); // There can't be a dictionary yet #endif collection.Add("Four"); // Key:Four Assert.IsNotNull(collection.GetDictionary(), "Dictionary created too late"); // There must be a dictionary collection.Insert(2, "Three"); // Key:Three Assert.AreEqual(collection.Count, 4, "Collection count not equal to 4"); // check if all items are ordered correctly Assert.AreEqual(collection [0], "One"); Assert.AreEqual(collection [1], "Two"); Assert.AreEqual(collection [2], "Three"); Assert.AreEqual(collection [3], "Four"); Assert.AreEqual(collection ["Key:One"], "One"); Assert.AreEqual(collection ["Key:Two"], "Two"); Assert.AreEqual(collection ["Key:Three"], "Three"); Assert.AreEqual(collection ["Key:Four"], "Four"); Assert.AreEqual(collection.GetDictionary().Count, 4); try { collection ["UnkownKey"].ToString(); Assert.Fail("Unknown key should fail"); } catch (KeyNotFoundException e) { e.ToString(); // avoid warning // oke } }
public void TestDelete() { StrKeyCollection collection = new StrKeyCollection(EqualityComparer <string> .Default, 2); collection.Add("One"); // Key:First collection.Add("Two"); // Key:Two Assert.IsTrue(collection.Remove("Key:One")); collection.Add("Four"); // Key:Four collection.Insert(2, "Three"); // Key:Three Assert.IsTrue(collection.Remove("Key:Three")); Assert.IsFalse(collection.Remove("Unknown")); Assert.AreEqual(collection.GetDictionary().Count, 2); Assert.AreEqual(collection.Count, 2, "Collection count not equal to 2"); // check if all items are ordered correctly Assert.AreEqual(collection [0], "Two"); Assert.AreEqual(collection [1], "Four"); Assert.AreEqual(collection ["Key:Two"], "Two"); Assert.AreEqual(collection ["Key:Four"], "Four"); try { collection ["Key:One"].ToString(); Assert.Fail("Unknown key should fail"); } catch (KeyNotFoundException e) { e.ToString(); // avoid warning // oke } try { collection ["Key:One"].ToString(); Assert.Fail("Unknown key should fail"); } catch (KeyNotFoundException e) { e.ToString(); // avoid warning // oke } }
public void Insert_DuplicateKey_NoDictionary() { StrKeyCollection collection = new StrKeyCollection(EqualityComparer <string> .Default, 4); collection.Add("One"); try { collection.Add("One"); Assert.Fail("Duplicate keys should throw ArgumentException."); } catch (ArgumentException) { } catch (Exception e) { Assert.Fail("Invalid exception type: expected ArgumentOutOfRangeException, got " + e.GetType().Name); } Assert.AreEqual(1, collection.Count); Assert.AreEqual(null, collection.GetDictionary()); }