public void TestEnumerator() { ImmutableSortedTreeList <int> .Builder list = ImmutableSortedTreeList.CreateBuilder <int>(); ImmutableSortedTreeList <int> .Enumerator enumerator = list.GetEnumerator(); Assert.Equal(0, enumerator.Current); Assert.False(enumerator.MoveNext()); Assert.Equal(0, enumerator.Current); Assert.False(enumerator.MoveNext()); Assert.Equal(0, enumerator.Current); // Adding an item to the list invalidates it, but Current is still unchecked CollectionAssert.EnumeratorInvalidated(list, () => list.Add(1)); Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); Assert.Equal(0, enumerator.Current); enumerator = list.GetEnumerator(); Assert.Equal(0, enumerator.Current); Assert.True(enumerator.MoveNext()); Assert.Equal(1, enumerator.Current); // Reset has no effect due to boxing the value type ((IEnumerator <int>)enumerator).Reset(); Assert.Equal(1, enumerator.Current); Assert.False(enumerator.MoveNext()); Assert.Equal(1, enumerator.Current); }