public void PauseDoesNothingWhenNotRunning()
        {
            var tested = new TestedTransferProgress();

            Assert.False(tested.IsRunning);
            Assert.True(tested.IsIdle);
            tested.Pause();
            Assert.False(tested.IsRunning);
            Assert.True(tested.IsIdle);
        }
        public void UnpauseUnpauses()
        {
            var tested = new TestedTransferProgress();

            tested.Start(2);

            tested.ReportProgress();
            tested.Pause();

            tested.UnPause();
            var elapsed = tested.Elapsed;

            Thread.Sleep(1);
            Assert.True(tested.Elapsed > elapsed);
        }
        public void PausePauses()
        {
            var tested = new TestedTransferProgress();

            tested.Start(2);

            tested.ReportProgress();
            tested.Pause();

            var elapsed = tested.Elapsed;

            Thread.Sleep(1);

            Assert.Equal(elapsed, tested.Elapsed);
            Assert.False(tested.IsRunning);
            Assert.True(tested.IsIdle);
        }
        public void FinishTest()
        {
            const int numberOfIterations = 5;
            var       tested             = new TestedTransferProgress();

            Assert.False(tested.IsRunning);
            tested.Restart(numberOfIterations * 2);
            for (var i = 0; i < numberOfIterations; ++i)
            {
                Assert.True(tested.IsRunning);
                tested.ReportProgress();
            }
            Assert.False(tested.IsIdle);
            Assert.True(tested.IsRunning);
            tested.Pause();

            Assert.False(tested.IsRunning);
            Assert.True(tested.IsIdle);
        }