PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/System.Reactive.Tests/Mono.Reactive.Testing/TestSchedulerTest.cs

https://github.com/gshackles/mono-reactive
C# | 67 lines | 62 code | 5 blank | 0 comment | 0 complexity | dfb185ec90ae314650fafe8b58fe8a88 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 Mono.Reactive.Testing.Tests
  12. {
  13. [TestFixture]
  14. public class TestSchedulerTest
  15. {
  16. class MyTestScheduler : TestScheduler
  17. {
  18. public long PublicAdd (long time)
  19. {
  20. return Add (Clock, time);
  21. }
  22. public long PublicToRelative (TimeSpan time)
  23. {
  24. return ToRelative (time);
  25. }
  26. public IScheduledItem<long> PublicGetNext ()
  27. {
  28. return GetNext ();
  29. }
  30. }
  31. [Test]
  32. public void Clock ()
  33. {
  34. var scheduler = new TestScheduler ();
  35. Assert.AreEqual (0, scheduler.Clock, "#1"); // default
  36. scheduler.AdvanceBy (TimeSpan.FromDays (1).Ticks);
  37. Assert.AreEqual (TimeSpan.FromDays (1).Ticks, scheduler.Clock, "#2");
  38. var dt = new DateTimeOffset (2012, 1, 1, 0, 0, 0, TimeSpan.Zero);
  39. scheduler.AdvanceTo (dt.Ticks);
  40. Assert.AreEqual (dt, new DateTimeOffset (scheduler.Clock, TimeSpan.Zero), "#3");
  41. }
  42. [Test]
  43. public void AdvanceByRaisesEvent ()
  44. {
  45. var scheduler = new MyTestScheduler ();
  46. Assert.AreEqual (TimeSpan.FromDays (1).Ticks, scheduler.PublicAdd (TimeSpan.FromDays (1).Ticks), "#0");
  47. Assert.AreEqual (TimeSpan.FromDays (1).Ticks, scheduler.PublicToRelative (TimeSpan.FromDays (1)), "#0-2");
  48. var source = Observable.Interval (TimeSpan.FromDays (1), scheduler);
  49. int x = 0;
  50. var dis = source.Subscribe (v => x++);
  51. Assert.IsNotNull (scheduler.PublicGetNext (), "#1");
  52. Assert.AreEqual (0, x, "#2");
  53. scheduler.AdvanceBy (TimeSpan.FromHours (1).Ticks);
  54. Assert.AreEqual (0, x, "#3");
  55. scheduler.AdvanceBy (TimeSpan.FromDays (1).Ticks);
  56. var item = scheduler.PublicGetNext ();
  57. Assert.IsNotNull (item, "#5");
  58. Assert.AreEqual (1, x, "#5");
  59. dis.Dispose ();
  60. }
  61. }
  62. }