windows-installer-progress.cpp 1.1 KB

123456789101112131415161718192021222324252627
  1. // Deterministic user-visible progress scenarios; no wall-clock sleeps or file operations.
  2. #include "../installer/progress.h"
  3. #include <cassert>
  4. int main() {
  5. InstallProgress progress(0);
  6. progress.Advance(0, 100);
  7. assert(progress.value < 2);
  8. progress.Advance(1, 200);
  9. assert(progress.value < 2);
  10. for (std::uint64_t now = 300; now <= 30200; now += 100) progress.Advance(1, now);
  11. assert(progress.value > 20 && progress.value < 22);
  12. progress.Advance(2, 30300);
  13. double previous = progress.value;
  14. for (std::uint64_t now = 30400; now <= 150300; now += 100) {
  15. progress.Advance(2, now);
  16. assert(progress.value >= previous && progress.value - previous <= 1.01);
  17. assert(progress.value < 92);
  18. previous = progress.value;
  19. }
  20. progress.Advance(1, 150400);
  21. assert(progress.stage == 2 && progress.value >= previous);
  22. progress.Advance(3, 150500);
  23. progress.Advance(4, 150600);
  24. for (std::uint64_t now = 150700; now <= 300600; now += 100) progress.Advance(4, now);
  25. assert(progress.value > 98 && progress.value < 100);
  26. }