diff --git a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs index ba3473267330..f3c85df1b445 100644 --- a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs +++ b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs @@ -126,6 +126,20 @@ public void IDictionary_NonGeneric_Contains_KeyOfWrongType(int count) } } + [Fact] + public void Clear_OnEmptyCollection_DoesNotInvalidateEnumerator() + { + if (ModifyEnumeratorAllowed.HasFlag(ModifyOperation.Clear)) + { + IDictionary dictionary = new Dictionary(); + IEnumerator valuesEnum = dictionary.GetEnumerator(); + + dictionary.Clear(); + Assert.Empty(dictionary); + Assert.False(valuesEnum.MoveNext()); + } + } + #endregion #region ICollection tests @@ -250,6 +264,18 @@ public void Remove_NonExistentEntries_DoesNotPreventEnumeration() } } + [Fact] + public void TryAdd_ItemAlreadyExists_DoesNotInvalidateEnumerator() + { + var dictionary = new Dictionary(); + dictionary.Add("a", "b"); + + IEnumerator valuesEnum = dictionary.GetEnumerator(); + Assert.False(dictionary.TryAdd("a", "c")); + + Assert.True(valuesEnum.MoveNext()); + } + [Theory] [MemberData(nameof(CopyConstructorInt32Data))] public void CopyConstructorInt32(int size, Func keyValueSelector, Func, IDictionary> dictionarySelector)