public void DisposeCallsUnderlyingDispose() { var fakeEnumerator = new Mock <IEnumerator <int?> >(); fakeEnumerator.Setup(e => e.MoveNext()).Returns(true); fakeEnumerator.Setup(e => e.Dispose()).Verifiable(); var refresher = new RefreshEnumerator <int?>(() => fakeEnumerator.Object); refresher.MoveNext(); refresher.Dispose(); fakeEnumerator.Verify(enumerator => enumerator.Dispose(), Times.Once); refresher.Dispose(); }
public void RefreshesAfterMoveNextReturnsFalse() { var refreshCount = 0; var list = new List <int?> { 1, 2 }; var refresher = new RefreshEnumerator <int?>(() => { refreshCount++; return(list.GetEnumerator()); }); Assert.IsTrue(refresher.MoveNext()); Assert.AreEqual(1, refreshCount); Assert.AreEqual(1, refresher.Current); Assert.IsTrue(refresher.MoveNext()); Assert.AreEqual(1, refreshCount); Assert.AreEqual(2, refresher.Current); Assert.IsTrue(refresher.MoveNext()); Assert.AreEqual(1, refreshCount); Assert.AreEqual(default(int?), refresher.Current); Assert.IsTrue(refresher.MoveNext()); Assert.AreEqual(2, refreshCount); Assert.AreEqual(1, refresher.Current); Assert.IsTrue(refresher.MoveNext()); Assert.AreEqual(2, refreshCount); Assert.AreEqual(2, refresher.Current); refresher.Dispose(); }
public void MoveNextReturnsTrueWhenUnderlyingEnumeratorReturnsFalse() { var refresher = new RefreshEnumerator <int?>(() => new List <int?>().GetEnumerator()); Assert.IsTrue(refresher.MoveNext()); refresher.Dispose(); }
public void CurrentIsDefault_T_WhenUnderlyingEnumeratorReturnsFalse() { var refresher = new RefreshEnumerator <int?>(() => new List <int?>().GetEnumerator()); refresher.MoveNext(); Assert.AreEqual(default(int?), refresher.Current); refresher.Dispose(); }
public void RefreshesEnumeratorOnFirstMoveNext() { var refreshed = false; var refresher = new RefreshEnumerator <int?>(() => { refreshed = true; return(new List <int?>().GetEnumerator()); }); refresher.MoveNext(); Assert.IsTrue(refreshed); refresher.Dispose(); }