public void IgnoresCase() { CaseInsensitiveHashtable st = new CaseInsensitiveHashtable(); st.Add("key", "value"); Assert.AreEqual("value", st["KEY"]); st["KeY"] = "value2"; Assert.AreEqual(1, st.Count); Assert.AreEqual("value2", st["key"]); try { st.Add("KEY", "value2"); Assert.Fail(); } catch (ArgumentException) { } Hashtable ht = new Hashtable(); ht.Add("key", "value"); ht.Add("KEY", "value"); try { st = new CaseInsensitiveHashtable(ht, CultureInfo.InvariantCulture); Assert.Fail(); } catch (ArgumentException) { } }
public void ComparePerformance() { const int runs = 30000000; StopWatch watch = new StopWatch(); Hashtable ht = CollectionsUtil.CreateCaseInsensitiveHashtable(); for (int i = 0; i < 1000000; i++) { ht.Add(Guid.NewGuid().ToString(), "val"); // gen. higher number of elements results in OOM exception???? } CaseInsensitiveHashtable ciht = new CaseInsensitiveHashtable(ht, CultureInfo.InvariantCulture); using (watch.Start("Duration: {0}")) { for (int i = 0; i < runs; i++) { object v = ht["somekey"]; } } using (watch.Start("Duration: {0}")) { for (int i = 0; i < runs; i++) { object v = ciht["somekey"]; } } }
public void AcceptsNonStringKeys() { CaseInsensitiveHashtable st = new CaseInsensitiveHashtable(); object key = new object(); st.Add(key, "value"); Assert.AreEqual(1, st.Count); Assert.AreEqual("value", st[key]); Assert.IsNull(st[new object()]); }
public void IsSerializable() { CaseInsensitiveHashtable storiginal = new CaseInsensitiveHashtable(); storiginal.Add("key", "value"); CaseInsensitiveHashtable st = (CaseInsensitiveHashtable)SerializeDeserializeObject(storiginal); Assert.AreNotSame(storiginal, st); Assert.AreEqual("value", st["KEY"]); Assert.AreEqual(1, st.Count); }
public void InitializeFromOtherCopiesValues() { Hashtable ht = new Hashtable(); ht["key"] = "value"; ht["key2"] = "value2"; CaseInsensitiveHashtable st = new CaseInsensitiveHashtable(ht, CultureInfo.InvariantCulture); Assert.AreEqual(2, st.Count); ht.Remove("key"); Assert.AreEqual(1, ht.Count); Assert.AreEqual(2, st.Count); }