PageRenderTime 36ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/System.Reactive.Tests/System.Reactive.Concurrency/TaskPoolSchedulerTest.cs

https://github.com/gshackles/mono-reactive
C# | 46 lines | 43 code | 2 blank | 1 comment | 0 complexity | fffd5d7179b2a9f3002d6612ce9555dd MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reactive;
  6. using System.Reactive.Concurrency;
  7. using System.Reactive.Disposables;
  8. using System.Reactive.Linq;
  9. using System.Threading;
  10. using NUnit.Framework;
  11. namespace System.Reactive.Concurrency.Tests
  12. {
  13. [TestFixture]
  14. public class TaskPoolSchedulerTest
  15. {
  16. [Test]
  17. public void Cancellation ()
  18. {
  19. bool raised = false;
  20. var dis = Scheduler.TaskPool.Schedule<object> (null, TimeSpan.FromMilliseconds (100), (sch, stat) => raised = true);
  21. Assert.IsFalse (raised, "#1");
  22. dis.Dispose (); // immediately, to not raise event.
  23. Thread.Sleep (200);
  24. Assert.IsFalse (raised, "#2");
  25. }
  26. [Test]
  27. public void Order ()
  28. {
  29. // It is time-dependent test (i.e. lengthy and inconsistent), which is not very good but we cannot use HistoricalScheduler to test it...
  30. var s = Scheduler.TaskPool;
  31. var l = new List<int> ();
  32. var dis = new CompositeDisposable ();
  33. try {
  34. dis.Add (s.Schedule (() => { Thread.Sleep (1200); l.Add (1); }));
  35. dis.Add (s.Schedule (() => { Thread.Sleep (800); l.Add (2); }));
  36. dis.Add (s.Schedule (() => { Thread.Sleep (50); l.Add (3); }));
  37. Thread.Sleep (1500);
  38. Assert.AreEqual (new int [] {3, 2, 1}, l.ToArray (), "#1");
  39. } finally {
  40. dis.Dispose ();
  41. }
  42. }
  43. }
  44. }