Beispiel #1
0
        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);
                }
        }
Beispiel #2
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));
                }
        }