public void Regress_Mutation_ConstructThroughDictionaryIsShallowCopy() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); CopyOnWriteHashtable refc = new CopyOnWriteHashtable((IDictionary)c, StringComparer.OrdinalIgnoreCase); Assertion.Assert(refc.IsShallowCopy); }
public void Regress450669_CaseSensitiveBatch_HashtableCopyRespectsComparer() { Hashtable c = new Hashtable(StringComparer.OrdinalIgnoreCase); c["key"] = null; CopyOnWriteHashtable refc = new CopyOnWriteHashtable(c, StringComparer.OrdinalIgnoreCase); Assertion.Assert(c.ContainsKey("kEy")); Assertion.Assert(refc.ContainsKey("kEy")); }
public void Regress_Mutation_WritingSameValueShouldNotCauseDeepCopy() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); c["answer"] = "yes"; CopyOnWriteHashtable refc = new CopyOnWriteHashtable(c, StringComparer.OrdinalIgnoreCase); Assertion.Assert(refc.IsShallowCopy); refc["answer"] = "yes"; Assertion.Assert(refc.IsShallowCopy); // Setting the same value should not cause a deep copy. }
public void Regress_SettingWhenValueNull() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); CopyOnWriteHashtable refc = new CopyOnWriteHashtable(c, StringComparer.OrdinalIgnoreCase); Hashtable h = new Hashtable(); refc["key"] = null; h["key"] = null; Assertion.AssertEquals(h.ContainsKey("key"), refc.ContainsKey("key")); Assertion.Assert(!c.ContainsKey("key")); }
public void Regress_Mutation_ClearReadOnlyData() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); c["key"] = "value"; CopyOnWriteHashtable refc = new CopyOnWriteHashtable(c, StringComparer.OrdinalIgnoreCase); Assertion.Assert(refc.ContainsKey("key")); Assertion.Assert(refc.IsShallowCopy); c.Clear(); Assertion.Assert(refc.ContainsKey("key")); Assertion.Assert(!c.ContainsKey("key")); }
public void Basic() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); CopyOnWriteHashtable b = (CopyOnWriteHashtable)c.Clone(); CopyOnWriteHashtable a = (CopyOnWriteHashtable)b.Clone(); c["Foo"] = "Bar"; // Just wrote to 'c' so it should contain data. Assertion.Assert(c.ContainsKey("Foo")); // Writing to a depended upon hashtable should not be visible to the dependents. Assertion.Assert(!a.ContainsKey("Foo")); Assertion.Assert(!b.ContainsKey("Foo")); }
public void Regress450669_CaseSensitiveBatch_WeDontAllowChangingCaseOnCopiedHashTable() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(StringComparer.OrdinalIgnoreCase); CopyOnWriteHashtable refc = new CopyOnWriteHashtable(c, StringComparer.Ordinal); // Different case. }
public void Regress_Mutation_MustHaveNonNullStringComparer2() { CopyOnWriteHashtable c = new CopyOnWriteHashtable(null, null); }