public void SetLength() {
var mockedStream = new Mock<Stream>();
mockedStream.Setup(s => s.SetLength(It.IsAny<long>())).Callback<long>((l) => mockedStream.Setup(mock => mock.Length).Returns(l));
using (ProgressStream progress = new ProgressStream(mockedStream.Object)) {
progress.PropertyChanged += delegate(object sender, System.ComponentModel.PropertyChangedEventArgs args) {
if (args.PropertyName == Utils.NameOf((ProgressStream s) => s.Length)) {
this.lengthCalls++;
}
};
progress.SetLength(100);
progress.SetLength(100);
Assert.AreEqual(1, this.lengthCalls);
Assert.That(progress.Length, Is.EqualTo(100));
}
}