Skip to content

Commit

Permalink
Version increment for TrimExcess and EnsureCapacity (#31007)
Browse files Browse the repository at this point in the history
Tests for version increment in TrimExcess and EnsureCapacity (#31007)

Revert "Version increment for TrimExcess and EnsureCapacity (#31007)"

This reverts commit 92d8f19.

Tests for enumeration invalidation in TrimExcess and EnsureCapacity (#31007)
  • Loading branch information
davidkaya authored and danmoseley committed Jul 29, 2018
1 parent 461bc9a commit 7d84d7e
Showing 1 changed file with 15 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<TKey, TValue>)(GenericIDictionaryFactory(count));
var capacity = dictionary.EnsureCapacity(0);
IEnumerator keysEnum = dictionary.Keys.GetEnumerator();
IEnumerator valuesEnum = dictionary.Values.GetEnumerator();
IEnumerator keysListEnum = new List<TKey>(dictionary.Keys).GetEnumerator();
IEnumerator valuesListEnum = new List<TValue>(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<InvalidOperationException>(() => enumerator.MoveNext());
}

[Fact]
Expand Down Expand Up @@ -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<TKey, TValue>(20);
var enumerator = dictionary.GetEnumerator();

dictionary.TrimExcess(7); // Verify TrimExcess does invalidate enumeration

Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext());
}

#endregion
}
}

0 comments on commit 7d84d7e

Please sign in to comment.