TimerTest.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // TimerTest.cs - NUnit test cases for System.Threading.Timer
  3. //
  4. // Author:
  5. // Zoltan Varga ([email protected])
  6. //
  7. // (C) 2004 Novell, Inc (http://www.novell.com)
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. using System.Threading;
  12. namespace MonoTests.System.Threading {
  13. [TestFixture]
  14. public class TimerTest : Assertion {
  15. public int counter;
  16. private void Callback (object foo) {
  17. counter ++;
  18. }
  19. public void TestDueTime ()
  20. {
  21. counter = 0;
  22. Timer t = new Timer (new TimerCallback (Callback), null, 200, Timeout.Infinite);
  23. Thread.Sleep (50);
  24. AssertEquals ("t0", 0, counter);
  25. Thread.Sleep (200);
  26. AssertEquals ("t1", 1, counter);
  27. Thread.Sleep (500);
  28. AssertEquals ("t2", 1, counter);
  29. t.Change (10, 10);
  30. Thread.Sleep (500);
  31. Assert ("t3", counter > 20);
  32. t.Dispose ();
  33. }
  34. public void TestChange ()
  35. {
  36. counter = 0;
  37. Timer t = new Timer (new TimerCallback (Callback), null, 1, 1);
  38. Thread.Sleep (500);
  39. int c = counter;
  40. Assert ("t1", c > 20);
  41. t.Change (100, 100);
  42. Thread.Sleep (500);
  43. Assert ("t2", counter <= c + 6);
  44. t.Dispose ();
  45. }
  46. public void TestZeroDueTime () {
  47. counter = 0;
  48. Timer t = new Timer (new TimerCallback (Callback), null, 0, Timeout.Infinite);
  49. Thread.Sleep (100);
  50. AssertEquals (1, counter);
  51. t.Change (0, Timeout.Infinite);
  52. Thread.Sleep (100);
  53. AssertEquals (2, counter);
  54. t.Dispose ();
  55. }
  56. public void TestDispose ()
  57. {
  58. counter = 0;
  59. Timer t = new Timer (new TimerCallback (CallbackTestDispose), null, 10, 10);
  60. Thread.Sleep (200);
  61. t.Dispose ();
  62. Thread.Sleep (20);
  63. int c = counter;
  64. Assert (counter > 5);
  65. Thread.Sleep (200);
  66. AssertEquals (c, counter);
  67. }
  68. private void CallbackTestDispose (object foo) {
  69. counter ++;
  70. }
  71. Timer t1;
  72. public void TestDisposeOnCallback () {
  73. counter = 0;
  74. t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), null, 0, 10);
  75. Thread.Sleep (200);
  76. AssertNull (t1);
  77. counter = 2;
  78. t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), null, 50, 0);
  79. Thread.Sleep (200);
  80. AssertNull (t1);
  81. }
  82. private void CallbackTestDisposeOnCallback (object foo)
  83. {
  84. if (++counter == 3) {
  85. t1.Dispose ();
  86. t1 = null;
  87. }
  88. }
  89. }
  90. }