Example #1
0
        public async Task TestEventListeners()
        {
            using (ProgressV2 progress = new ProgressV2("p3", 200)) {
                var progressEventTriggered = false;
                progress.ProgressChanged += (o, newValue) => {
                    Log.e(JsonWriter.AsPrettyString(o));
                    Assert.Equal(100, newValue);
                    progressEventTriggered = true;
                };
                await TaskV2.Run(() => {
                    ((IProgress <double>)progress).Report(100);
                    Assert.False(progressEventTriggered);
                    Assert.Equal(100, progress.GetCount());
                    Assert.Equal(50, progress.percent);
                });

                Assert.Equal(100, progress.GetCount());
                Assert.Equal(50, progress.percent);

                // The progress callback is dispatched using the SynchronizationContext
                // of the constructor, so it will have some delay before being called:
                Assert.False(progressEventTriggered);
                await TaskV2.Delay(50); // Wait for progress update to be invoked

                Assert.True(progressEventTriggered);
            }
        }
Example #2
0
        public void TestIProgressDispose()
        {
            ProgressV2 progress = new ProgressV2("p3", 200);

            Assert.NotEqual(100, progress.percent);
            Assert.NotEqual(200, progress.GetCount());
            progress.Dispose();
            Assert.Equal(200, progress.totalCount);
            Assert.Equal(100, progress.percent);
            Assert.Equal(200, progress.GetCount());
        }
Example #3
0
 public void TestIProgressReport()
 {
     using (ProgressV2 progress = new ProgressV2("p2", 100)) {
         // Can be used as a System.IProgress:
         IProgress <double> sysProgr = progress;
         sysProgr.Report(99);
         Assert.Equal(100, progress.totalCount);
         Assert.Equal(99, progress.percent);
         Assert.Equal(99, progress.GetCount());
     }
 }
        public async Task ExampleUsage2()
        {
            var timer = CountdownTimer.StartNew(100);
            await Task.Delay(10);

            IProgress p = new ProgressV2("TimerProgress", 1);

            timer.AddProgressListener(p, updateIntervalInMs: 5);
            Assert.True(10 < p.percent); // 10% of the countdown must already have passed
            await timer.timerTask;       // Wait for the end of the timer
            await Task.Delay(20);        // Delay to ensure at least one more update to p happened

            Assert.Equal(100, p.percent);
            Assert.True(p.IsComplete());
        }
Example #5
0
        public void TestDispose()
        {
            ProgressV2 progress = new ProgressV2("testDispose", 200);

            progress.percent = 50;
            Assert.Equal(100, progress.GetCount());
            progress.totalCount = 400;
            Assert.Equal(100, progress.GetCount());
            Assert.Equal(25, progress.percent);

            progress.Dispose();
            Assert.Throws <ObjectDisposedException>(() => progress.totalCount = 100);
            Assert.Throws <ObjectDisposedException>(() => progress.percent    = 1);
            Assert.Throws <ObjectDisposedException>(() => progress.SetCount(2));
            Assert.Throws <ObjectDisposedException>(() => ((IProgress <double>)progress).Report(3));
        }
Example #6
0
        public void ExampleUsage1()
        {
            using (IProgress progress = new ProgressV2(id: "Download Progress 1", totalCount: 10)) {
                Assert.Equal(10, progress.totalCount);

                progress.SetCount(7); // 7/10 will be complete
                Assert.Equal(70, progress.percent);

                progress.IncrementCount(); // 8/10 will be complete
                Assert.Equal(80, progress.percent);

                progress.percent = 90; // 9/10 will be complete
                Assert.Equal(9, progress.GetCount());

                progress.SetComplete(); // 10/10 will be complete
                Assert.True(progress.IsComplete());
                Assert.Equal(100, progress.percent);
            }
        }