diff --git a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs index 9a3b6982283b..3440130c874c 100644 --- a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs +++ b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs @@ -90,25 +90,15 @@ public void Dictionary_Generic_RemoveKey_DefaultKeyContainedInDictionary(int cou [Theory] [MemberData(nameof(ValidCollectionSizes))] - public void EnsureCapacity_Generic_RequestingLargerCapacity_DoesNotInvalidateEnumeration(int count) + public void EnsureCapacity_Generic_RequestingLargerCapacity_DoesInvalidateEnumeration(int count) { var dictionary = (Dictionary)(GenericIDictionaryFactory(count)); var capacity = dictionary.EnsureCapacity(0); - IEnumerator keysEnum = dictionary.Keys.GetEnumerator(); - IEnumerator valuesEnum = dictionary.Values.GetEnumerator(); - IEnumerator keysListEnum = new List(dictionary.Keys).GetEnumerator(); - IEnumerator valuesListEnum = new List(dictionary.Values).GetEnumerator(); + var enumerator = dictionary.GetEnumerator(); - dictionary.EnsureCapacity(capacity + 1); // Verify EnsureCapacity does not invalidate enumeration + dictionary.EnsureCapacity(capacity + 1); // Verify EnsureCapacity does invalidate enumeration - while(keysEnum.MoveNext()) - { - valuesEnum.MoveNext(); - keysListEnum.MoveNext(); - valuesListEnum.MoveNext(); - Assert.Equal(keysListEnum.Current, keysEnum.Current); - Assert.Equal(valuesListEnum.Current, valuesEnum.Current); - } + Assert.Throws(() => enumerator.MoveNext()); } [Fact] @@ -417,6 +407,17 @@ public void TrimExcess_DictionaryHasElementsChainedWithSameHashcode_Success() Assert.True(dictionary.TryGetValue(chained[1], out val)); } + [Fact] + public void TrimExcess_Generic_DoesInvalidateEnumeration() + { + var dictionary = new Dictionary(20); + var enumerator = dictionary.GetEnumerator(); + + dictionary.TrimExcess(7); // Verify TrimExcess does invalidate enumeration + + Assert.Throws(() => enumerator.MoveNext()); + } + #endregion } }