ProgressTest.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. namespace MeloongCore.Tests;
  2. public class ProgressTest : TestBase {
  3. [Test]
  4. public async Task ProgressChanged_主进度实际改变时触发() {
  5. var progress = new ProgressProvider();
  6. int changedCount = 0;
  7. progress.ProgressChanged += () => changedCount++;
  8. progress.Set(0.2);
  9. progress.Set(0.2);
  10. progress.Add(0.1);
  11. progress.Add(0);
  12. progress.Set(0.5, skiped: true);
  13. await Assert.That(changedCount).IsEqualTo(3);
  14. }
  15. [Test]
  16. public async Task ProgressChanged_子进度改变时向父级传播() {
  17. var progress = new ProgressProvider();
  18. int changedCount = 0;
  19. progress.ProgressChanged += () => changedCount++;
  20. var sub = progress.SplitBy(0.5).Single();
  21. sub.Set(0.5);
  22. sub.Set(0.5);
  23. await Assert.That(changedCount).IsEqualTo(2);
  24. }
  25. [Test]
  26. public async Task ProgressChanged_不会触发Observe() {
  27. var progress = new ProgressProvider();
  28. int changedCount = 0;
  29. progress.ProgressChanged += () => changedCount++;
  30. progress.Set(0.5);
  31. progress.Set(0.75, skiped: true);
  32. await Assert.That(changedCount).IsEqualTo(2);
  33. await Assert.That(Math.Abs(progress.Observe() - 2.0 / 3) < 0.000001).IsTrue();
  34. }
  35. }