コード例 #1
0
        public void AbortWriteIfTransmissionEventIsAborting()
        {
            var transmission = new FileTransmissionEvent(this.transmissionType, this.filename);

            using (var stream = new MemoryStream())
                using (var progressStream = new ProgressStream(stream, transmission))
                {
                    transmission.ReportProgress(new TransmissionProgressEventArgs()
                    {
                        Aborting = true
                    });
                    Assert.Throws <AbortException>(() => progressStream.WriteByte(new byte()));
                }
        }
コード例 #2
0
        public void ResumeTest()
        {
            byte[] inputContent = new byte[100];
            long   offset       = 100;

            using (Stream stream = new MemoryStream(inputContent))
                using (OffsetStream offsetstream = new OffsetStream(stream, offset))
                {
                    FileTransmissionEvent transmissionEvent = new FileTransmissionEvent(this.transmissionType, this.filename);
                    transmissionEvent.TransmissionStatus += delegate(object sender, TransmissionProgressEventArgs args) {
                        if (args.ActualPosition != null && args.Percent != null)
                        {
                            this.position = (long)args.ActualPosition;
                            this.percent  = (double)args.Percent;
                        }
                    };
                    using (ProgressStream progress = new ProgressStream(offsetstream, transmissionEvent)) {
                        progress.Seek(0, SeekOrigin.Begin);
                        Assert.AreEqual(offset, this.position);
                        Assert.AreEqual(50, this.percent);
                        progress.Seek(10, SeekOrigin.Current);
                        Assert.AreEqual(offset + 10, this.position);
                        progress.Seek(0, SeekOrigin.End);
                        Assert.AreEqual(100, this.percent);
                        Assert.AreEqual(offset + inputContent.Length, this.position);
                        progress.Seek(0, SeekOrigin.Begin);
                        progress.WriteByte(0);
                        Assert.AreEqual(offset + 1, this.position);
                        Assert.AreEqual(50.5, this.percent);
                        progress.WriteByte(0);
                        Assert.AreEqual(offset + 2, this.position);
                        Assert.AreEqual(51, this.percent);
                        progress.Write(new byte[10], 0, 10);
                        Assert.AreEqual(56, this.percent);
                    }
                }
        }
コード例 #3
0
        public void ResumeTest()
        {
            byte[] inputContent = new byte[100];
            long   offset       = 100;

            using (var stream = new MemoryStream(inputContent))
                using (var offsetstream = new OffsetStream(stream, offset)) {
                    using (var progress = new ProgressStream(offsetstream)) {
                        progress.PropertyChanged += delegate(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
                            var p = sender as ProgressStream;
                            if (e.PropertyName == Utils.NameOf(() => p.Position))
                            {
                                this.position = (long)p.Position;
                                this.percent  = p.Percent.GetValueOrDefault();
                            }
                        };
                        progress.Seek(0, SeekOrigin.Begin);
                        Assert.AreEqual(offset, this.position);
                        Assert.AreEqual(50, this.percent);
                        progress.Seek(10, SeekOrigin.Current);
                        Assert.AreEqual(offset + 10, this.position);
                        progress.Seek(0, SeekOrigin.End);
                        Assert.AreEqual(100, this.percent);
                        Assert.AreEqual(offset + inputContent.Length, this.position);
                        progress.Seek(0, SeekOrigin.Begin);
                        progress.WriteByte(0);
                        Assert.AreEqual(offset + 1, this.position);
                        Assert.AreEqual(50.5, this.percent);
                        progress.WriteByte(0);
                        Assert.AreEqual(offset + 2, this.position);
                        Assert.AreEqual(51, this.percent);
                        progress.Write(new byte[10], 0, 10);
                        Assert.AreEqual(56, this.percent);
                    }
                }
        }