From 7d84d7ecdc7338f9b18702a29423552d38a90516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaya=20Da=CC=81vid?= Date: Fri, 13 Jul 2018 23:29:23 +0200 Subject: [PATCH] Version increment for TrimExcess and EnsureCapacity (#31007) Tests for version increment in TrimExcess and EnsureCapacity (#31007) Revert "Version increment for TrimExcess and EnsureCapacity (#31007)" This reverts commit 92d8f19e11e01948fdbdd3c87867b019a4250006. Tests for enumeration invalidation in TrimExcess and EnsureCapacity (#31007) --- .../Dictionary.Generic.Tests.netcoreapp.cs | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) 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 } }