(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / corlib / Test / System.Threading / TimerTest.cs
blob688210e949f972a97e882b20e48afda007b59bad
1 //
2 // TimerTest.cs - NUnit test cases for System.Threading.Timer
3 //
4 // Author:
5 // Zoltan Varga (vargaz@freemail.hu)
6 //
7 // (C) 2004 Novell, Inc (http://www.novell.com)
8 //
10 using NUnit.Framework;
11 using System;
12 using System.Threading;
14 namespace MonoTests.System.Threading {
16 [TestFixture]
17 public class TimerTest : Assertion {
19 public int counter;
21 private void Callback (object foo) {
22 counter ++;
25 public void TestDueTime ()
27 counter = 0;
28 Timer t = new Timer (new TimerCallback (Callback), null, 200, Timeout.Infinite);
29 Thread.Sleep (50);
30 AssertEquals ("t0", 0, counter);
31 Thread.Sleep (200);
32 AssertEquals ("t1", 1, counter);
33 Thread.Sleep (500);
34 AssertEquals ("t2", 1, counter);
36 t.Change (10, 10);
37 Thread.Sleep (500);
38 Assert ("t3", counter > 20);
39 t.Dispose ();
42 public void TestChange ()
44 counter = 0;
45 Timer t = new Timer (new TimerCallback (Callback), null, 1, 1);
46 Thread.Sleep (500);
47 int c = counter;
48 Assert ("t1", c > 20);
49 t.Change (100, 100);
50 Thread.Sleep (500);
51 Assert ("t2", counter <= c + 6);
52 t.Dispose ();
55 public void TestZeroDueTime () {
56 counter = 0;
58 Timer t = new Timer (new TimerCallback (Callback), null, 0, Timeout.Infinite);
59 Thread.Sleep (100);
60 AssertEquals (1, counter);
61 t.Change (0, Timeout.Infinite);
62 Thread.Sleep (100);
63 AssertEquals (2, counter);
64 t.Dispose ();
67 public void TestDispose ()
69 counter = 0;
70 Timer t = new Timer (new TimerCallback (CallbackTestDispose), null, 10, 10);
71 Thread.Sleep (200);
72 t.Dispose ();
73 Thread.Sleep (20);
74 int c = counter;
75 Assert (counter > 5);
76 Thread.Sleep (200);
77 AssertEquals (c, counter);
80 private void CallbackTestDispose (object foo) {
81 counter ++;
84 Timer t1;
85 public void TestDisposeOnCallback () {
86 counter = 0;
87 t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), null, 0, 10);
88 Thread.Sleep (200);
89 AssertNull (t1);
91 counter = 2;
92 t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), null, 50, 0);
93 Thread.Sleep (200);
94 AssertNull (t1);
97 private void CallbackTestDisposeOnCallback (object foo)
99 if (++counter == 3) {
100 t1.Dispose ();
101 t1 = null;