public void EnsureCapacity_Generic_RequestingLargerCapacity_DoesNotInvalidateEnumeration(int setLength) { SegmentedHashSet <T> set = (SegmentedHashSet <T>)(GenericISetFactory(setLength)); var capacity = set.EnsureCapacity(0); IEnumerator valuesEnum = set.GetEnumerator(); IEnumerator valuesListEnum = new List <T>(set).GetEnumerator(); set.EnsureCapacity(capacity + 1); // Verify EnsureCapacity does not invalidate enumeration while (valuesEnum.MoveNext()) { valuesListEnum.MoveNext(); Assert.Equal(valuesListEnum.Current, valuesEnum.Current); } }
/// <inheritdoc cref="ImmutableHashSet{T}.Enumerator.Reset()"/> public void Reset() { // Create a new enumerator, since _enumerator.Reset() will fail for cases where the set was mutated // after enumeration started, and ImmutableSegmentHashSet<T>.Builder allows for this case without error. _enumerator = _set.GetEnumerator(); }
internal Enumerator(SegmentedHashSet <T> set) { _set = set; _enumerator = set.GetEnumerator(); }