Author: gert
Date: 2007-09-05 09:14:24 -0400 (Wed, 05 Sep 2007)
New Revision: 85358

Modified:
   trunk/mcs/class/System/Test/System.Timers/ChangeLog
   trunk/mcs/class/System/Test/System.Timers/TimerTest.cs
Log:
* TimerTest.cs: Added NotWorking test for bug #82701. Added ctor
and trivial property tests.


Modified: trunk/mcs/class/System/Test/System.Timers/ChangeLog
===================================================================
--- trunk/mcs/class/System/Test/System.Timers/ChangeLog 2007-09-05 13:13:38 UTC 
(rev 85357)
+++ trunk/mcs/class/System/Test/System.Timers/ChangeLog 2007-09-05 13:14:24 UTC 
(rev 85358)
@@ -1,3 +1,8 @@
+2007-09-05  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * TimerTest.cs: Added NotWorking test for bug #82701. Added ctor
+       and trivial property tests.
+
 2006-12-18  Robert Jordan  <[EMAIL PROTECTED]>
 
        * TimerTest.cs: Add NotWorking test case for bug #77847.

Modified: trunk/mcs/class/System/Test/System.Timers/TimerTest.cs
===================================================================
--- trunk/mcs/class/System/Test/System.Timers/TimerTest.cs      2007-09-05 
13:13:38 UTC (rev 85357)
+++ trunk/mcs/class/System/Test/System.Timers/TimerTest.cs      2007-09-05 
13:14:24 UTC (rev 85358)
@@ -37,14 +37,16 @@
 namespace MonoTests.System.Timers
 {
        [TestFixture]
-       public class TimerTest : Assertion
+       public class TimerTest
        {
                Timer timer;
+               int _elapsedCount;
 
                [SetUp]
                public void SetUp ()
                {
-                       timer = new Timer();
+                       timer = new Timer ();
+                       _elapsedCount = 0;
                }
 
                [TearDown]
@@ -54,29 +56,190 @@
                }
 
                [Test]
+               public void Constructor0 ()
+               {
+                       Assert.IsTrue (timer.AutoReset, "#1");
+                       Assert.IsFalse (timer.Enabled, "#2");
+                       Assert.AreEqual (100, timer.Interval, "#3");
+                       Assert.IsNull (timer.SynchronizingObject, "#4");
+               }
+
+               [Test]
+               public void Constructor1 ()
+               {
+                       timer = new Timer (1);
+                       Assert.IsTrue (timer.AutoReset, "#A1");
+                       Assert.IsFalse (timer.Enabled, "#A2");
+                       Assert.AreEqual (1, timer.Interval, "#A3");
+                       Assert.IsNull (timer.SynchronizingObject, "#A4");
+
+                       timer = new Timer (int.MaxValue);
+                       Assert.IsTrue (timer.AutoReset, "#B1");
+                       Assert.IsFalse (timer.Enabled, "#B2");
+                       Assert.AreEqual (int.MaxValue, timer.Interval, "#B3");
+                       Assert.IsNull (timer.SynchronizingObject, "#B4");
+               }
+
+               [Test]
+               public void Constructor1_Interval_Negative ()
+               {
+                       try {
+                               new Timer (-1);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException ex) {
+                               // Invalid value -1 for parameter interval
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                       }
+               }
+
+               [Test]
+               public void Constructor1_Interval_Zero ()
+               {
+                       try {
+                               new Timer (0);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException ex) {
+                               // Invalid value 0 for parameter interval
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                       }
+               }
+
+               [Test]
+               public void Constructor1_Interval_Max ()
+               {
+#if NET_2_0
+                       try {
+                               new Timer (0x80000000);
+                               Assert.Fail ("#A1");
+                       } catch (ArgumentException ex) {
+                               // Invalid value 2147483648 for parameter 
interval
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#A2");
+                               Assert.IsNull (ex.InnerException, "#A3");
+                               Assert.IsNotNull (ex.Message, "#A4");
+                       }
+
+                       try {
+                               new Timer (double.MaxValue);
+                               Assert.Fail ("#B1");
+                       } catch (ArgumentException ex) {
+                               // Invalid value 1.79769313486232E+308 for 
parameter interval
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#B2");
+                               Assert.IsNull (ex.InnerException, "#B3");
+                               Assert.IsNotNull (ex.Message, "#B4");
+                       }
+#else
+                       timer = new Timer (0x80000000);
+                       Assert.AreEqual (0x80000000, timer.Interval, "#1");
+                       timer = new Timer (double.MaxValue);
+                       Assert.AreEqual (double.MaxValue, timer.Interval, "#2");
+#endif
+               }
+
+               [Test]
+               public void AutoReset ()
+               {
+                       Assert.IsTrue (timer.AutoReset, "#1");
+                       timer.AutoReset = false;
+                       Assert.IsFalse (timer.AutoReset, "#2");
+               }
+
+               [Test]
+               public void Interval ()
+               {
+                       timer.Interval = 1;
+                       Assert.AreEqual (1, timer.Interval, "#1");
+                       timer.Interval = 500;
+                       Assert.AreEqual (500, timer.Interval, "#2");
+                       timer.Interval = double.MaxValue;
+                       Assert.AreEqual (double.MaxValue, timer.Interval, "#3");
+               }
+
+               [Test]
+               public void Interval_Negative ()
+               {
+                       try {
+                               timer.Interval = -1;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException ex) {
+                               // '0' is not a valid value for 'Interval'. 
'Interval' must be greater than 0
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                       }
+               }
+
+               [Test]
+               public void Interval_Zero ()
+               {
+                       try {
+                               timer.Interval = 0;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException ex) {
+                               // '0' is not a valid value for 'Interval'. 
'Interval' must be greater than 0
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                       }
+               }
+
+               [Test]
                public void StartStopEnabled ()
                {
-                       timer.Start();
-                       Assert ("#A01 !Enabled after Start()", timer.Enabled);
-                       timer.Stop();
-                       Assert ("#A02 Enabled after Stop()", !timer.Enabled);
+                       timer.Start ();
+                       Assert.IsTrue (timer.Enabled, "#1");
+                       timer.Stop ();
+                       Assert.IsFalse (timer.Enabled, "#2");
                }
 
                [Test]
-               public void CloseEnabled () {
-                       Assert ("#A01 Enabled after created", !timer.Enabled);
+               public void CloseEnabled ()
+               {
+                       Assert.IsFalse (timer.Enabled, "#1");
                        timer.Enabled = true;
-                       Assert ("#A02 !Enabled after Enabled = true", 
timer.Enabled);
-                       timer.Close();
-                       Assert ("#A02 Enabled after Close()", !timer.Enabled);
+                       Assert.IsTrue (timer.Enabled, "#2");
+                       timer.Close ();
+                       Assert.IsFalse (timer.Enabled, "#3");
                }
 
+               [Test] // bug #82701
+               [Category ("NotWorking")]
+               public void EnabledInElapsed ()
+               {
+                       timer.AutoReset = false;
+                       timer.Elapsed += new ElapsedEventHandler 
(EnabledInElapsed_Elapsed);
+                       timer.Start ();
+
+                       ST.Thread.Sleep (400);
+                       timer.Stop ();
+                       Assert.IsTrue (_elapsedCount > 2);
+               }
+
                [Test]
                public void TestRaceCondition ()
                {
-                       Assert ("#B01", new RaceTest (true).Success);
-                       Assert ("#B02", new RaceTest (false).Success);
+                       Assert.IsTrue (new RaceTest (true).Success, "#1");
+                       Assert.IsTrue (new RaceTest (false).Success, "#2");
                }
+
+               void EnabledInElapsed_Elapsed (object sender, ElapsedEventArgs 
e)
+               {
+                       if (_elapsedCount == -1)
+                               return;
+
+                       _elapsedCount++;
+                       Timer t = sender as Timer;
+                       if (t.Enabled) {
+                               _elapsedCount = -1;
+                               return;
+                       }
+                       t.Enabled = true;
+                       if (!t.Enabled)
+                               _elapsedCount = -1;
+               }
        }
 
        class RaceTest
@@ -96,11 +259,10 @@
                {
                        timer = new Timer ();
                        timer.AutoReset = autoReset;
-                       timer.Interval = 100;
-                               timer.Elapsed += new ElapsedEventHandler (Tick);
+                       timer.Interval = 100;
+                       timer.Elapsed += new ElapsedEventHandler (Tick);
                        timer.Start ();
 
-
                        ST.Thread[] tl = new ST.Thread [Threads];
 
                        for (int i = 0; i < Threads; i++) {


Property changes on: trunk/mcs/class/System/Test/System.Timers/TimerTest.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to