public void ReportingProgressRaisesPropertyChangedEvents() { var tested = new TestedProgressReporter(); tested.Start(2); var receivedEvents = new HashSet <string>(); tested.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { receivedEvents.Add(e.PropertyName); }; tested.ReportProgress(); Assert.Contains(nameof(tested.AverageCycleDuration), receivedEvents); Assert.Contains(nameof(tested.AverageCycleStep), receivedEvents); Assert.Contains(nameof(tested.CompletedPercent), receivedEvents); Assert.Contains(nameof(tested.CompletedRawValue), receivedEvents); Assert.Contains(nameof(tested.CurrentCycle), receivedEvents); Assert.Contains(nameof(tested.CurrentRawValue), receivedEvents); Assert.Contains(nameof(tested.Elapsed), receivedEvents); Assert.Contains(nameof(tested.IsIdle), receivedEvents); Assert.Contains(nameof(tested.IsRunning), receivedEvents); Assert.Contains(nameof(tested.LastCycleStep), receivedEvents); Assert.Contains(nameof(tested.PreviousRawValue), receivedEvents); Assert.Contains(nameof(tested.RemainingCyclesEstimate), receivedEvents); Assert.Contains(nameof(tested.RemainingPercent), receivedEvents); Assert.Contains(nameof(tested.RemainingRawValue), receivedEvents); Assert.Contains(nameof(tested.RemainingTimeEstimate), receivedEvents); Assert.Contains(nameof(tested.UsedAtLestOnce), receivedEvents); Assert.Contains(nameof(tested.LastCycleTotalMillisecondsElapsed), receivedEvents); Assert.Contains(nameof(tested.CurrentCycleDuration), receivedEvents); Assert.Contains(nameof(tested.LastCycleDurationMs), receivedEvents); }
public void CurrentCycleCannotBeGreaterThanTargetValue() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Throws <ArgumentOutOfRangeException>(() => tested.ReportProgress(201)); }
public void TestedProgressReporterCompletedPercentNeverGoesAbove100() { var tested = new TestedProgressReporter(); tested.Start(1); tested.ReportProgress(); try { tested.ReportProgress(); } catch { } Assert.Equal(100, tested.CompletedPercent); }
public void ProgressReporterCompletedPercentIsCorrect() { var tested = new TestedProgressReporter(); tested.Start(1); Assert.Equal(0, tested.CompletedPercent); tested.ReportProgress(); Assert.Equal(100, tested.CompletedPercent); }
public void ProgressCannotRegress() { var tested = new TestedProgressReporter(); tested.Start(200); tested.ReportProgress(100); Assert.Throws <ArgumentException>(() => tested.ReportProgress(99)); }
public void ProgressReporterIsIdleIsCorrect() { var tested = new TestedProgressReporter(); tested.Start(1); Assert.False(tested.IsIdle); tested.ReportProgress(); Assert.True(tested.IsIdle); try { tested.ReportProgress(); } catch { } Assert.True(tested.IsIdle); }
public void CurrentCycleStopsIncrementingAfterCompletion() { var tested = new TestedProgressReporter(); tested.Start(200); tested.ReportProgress(200); try { tested.ReportProgress(200); } catch { } try { tested.ReportProgress(200); } catch { } try { tested.ReportProgress(200); } catch { } try { tested.ReportProgress(200); } catch { } Assert.Equal(1, tested.CurrentCycle); }
public void TargetCycleEstimateIsZeroWhenFinished() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(200, tested.TargetCycleEstimate); tested.ReportProgress(100); tested.ReportProgress(200); Assert.Equal(2, tested.TargetCycleEstimate, 1); }
public void ProgressReportProgressIsThreadSafe() { var tested = new TestedProgressReporter(); tested.Start(100); Parallel.For(0, 100, (i) => { tested.ReportProgress(); }); Assert.Equal(100, tested.CurrentRawValue); Assert.False(tested.IsRunning); Assert.True(tested.IsIdle); }
public void ReportingProgressProperlyUpdatesRemaingPercent(int iterations) { var tested = new TestedProgressReporter(); tested.Start(iterations); var step = 100 / iterations; for (int i = 0; i < iterations; ++i) { tested.ReportProgress(); var expectedCompletedPercent = step * (i + 1); var expectedRemaingPercent = 100 - expectedCompletedPercent; Assert.Equal(expectedRemaingPercent, tested.RemainingPercent, 1); } }
public void UnpauseUnpauses() { var tested = new TestedProgressReporter(); tested.Start(2); tested.ReportProgress(); tested.Pause(); tested.UnPause(); var elapsed = tested.Elapsed; Thread.Sleep(1); Assert.True(tested.Elapsed > elapsed); }
public void ReportingProgressWithArgumentProperlyUpdatesRemainingRawValue() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(200, tested.RemainingRawValue, 1); tested.ReportProgress(100); Assert.Equal(100, tested.RemainingRawValue, 1); tested.ReportProgress(200); Assert.Equal(0, tested.RemainingRawValue, 1); }
public void ReportingProgressWithArgumentProperlyUpdatesCurrentCycle() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(0, tested.CurrentCycle); tested.ReportProgress(100); Assert.Equal(1, tested.CurrentCycle); tested.ReportProgress(200); Assert.Equal(2, tested.CurrentCycle); }
public void PausePauses() { var tested = new TestedProgressReporter(); 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 LastCycleStepIsCorrect() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(0, tested.LastCycleStep); tested.ReportProgress(100); Assert.Equal(100, tested.LastCycleStep); tested.ReportProgress(150); Assert.Equal(50, tested.LastCycleStep); tested.ReportProgress(200); Assert.Equal(50, tested.LastCycleStep); }
public void AverageCycleStepIsCorrect() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(0, tested.AverageCycleStep); tested.ReportProgress(100); Assert.Equal(100, tested.AverageCycleStep); tested.ReportProgress(150); Assert.Equal(75.0, tested.AverageCycleStep, 1); tested.ReportProgress(200); Assert.Equal(66.7, tested.AverageCycleStep, 1); }
public void TargetCycleEstimateIsCorrectEnough() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(200, tested.TargetCycleEstimate); tested.ReportProgress(100); Assert.Equal(2, tested.TargetCycleEstimate, 1); tested.ReportProgress(100); Assert.Equal(4, tested.TargetCycleEstimate, 1); tested.ReportProgress(200); Assert.Equal(3, tested.TargetCycleEstimate, 1); }
public void RemainingCyclesEstimateIsCorrectEnough() { var tested = new TestedProgressReporter(); tested.Start(200); Assert.Equal(200, tested.RemainingCyclesEstimate); tested.ReportProgress(99); Assert.Equal(1, tested.RemainingCyclesEstimate, 1); tested.ReportProgress(100); Assert.Equal(2, tested.RemainingCyclesEstimate, 1); tested.ReportProgress(101); Assert.Equal(2.9, tested.RemainingCyclesEstimate, 1); tested.ReportProgress(200); Assert.Equal(0, tested.RemainingCyclesEstimate, 1); }
public void ThrowsExceptionWhenTargetValueInvalid() { var tested = new TestedProgressReporter(); Assert.Throws <ArgumentOutOfRangeException>(() => { tested.Start(-100); }); }