public void ConfigureLimitsTest() { long limit = this.length; using (Stream memory = new MemoryStream(this.buffer)) using (BandwidthLimitedStream limited = new BandwidthLimitedStream(memory)) { Assert.Less(limited.ReadLimit, 0); Assert.Less(limited.WriteLimit, 0); limited.ReadLimit = limit; Assert.AreEqual(limit, limited.ReadLimit); Assert.Less(limited.WriteLimit, 0); limited.WriteLimit = limit; Assert.AreEqual(limit, limited.ReadLimit); Assert.AreEqual(limit, limited.WriteLimit); limited.DisableLimits(); Assert.Less(limited.ReadLimit, 0); Assert.Less(limited.WriteLimit, 0); limited.ReadLimit = limit; limited.WriteLimit = limit; Assert.AreEqual(limit, limited.ReadLimit); Assert.AreEqual(limit, limited.WriteLimit); limited.DisableReadLimit(); Assert.Less(limited.ReadLimit, 0); Assert.AreEqual(limit, limited.WriteLimit); limited.DisableWriteLimit(); Assert.Less(limited.ReadLimit, 0); Assert.Less(limited.WriteLimit, 0); } }
public void ChangingLimitsNotifiesListener() { using (var memory = new MemoryStream(this.buffer)) using (var underTest = new BandwidthLimitedStream(memory)) { int readLimitNotified = 0; int writeLimitNotified = 0; long?expectedReadLimit = this.limit; long?expectedWriteLimit = this.limit; underTest.PropertyChanged += (sender, e) => { Assert.That(sender, Is.EqualTo(underTest)); if (e.PropertyName == Utils.NameOf((BandwidthLimitedStream s) => s.ReadLimit)) { readLimitNotified++; Assert.That((sender as BandwidthLimitedStream).ReadLimit, Is.EqualTo(expectedReadLimit)); } else if (e.PropertyName == Utils.NameOf((BandwidthLimitedStream s) => s.WriteLimit)) { writeLimitNotified++; Assert.That((sender as BandwidthLimitedStream).WriteLimit, Is.EqualTo(expectedWriteLimit)); } }; underTest.WriteLimit = expectedWriteLimit; underTest.ReadLimit = expectedReadLimit; Assert.That(readLimitNotified, Is.EqualTo(1)); Assert.That(writeLimitNotified, Is.EqualTo(1)); expectedReadLimit = null; expectedWriteLimit = null; underTest.DisableLimits(); Assert.That(readLimitNotified, Is.EqualTo(2)); Assert.That(writeLimitNotified, Is.EqualTo(2)); } }