* SqlNotificationRequestTest.cs: Added ctor and property tests.
authorGert Driesen <drieseng@users.sourceforge.net>
Mon, 28 Jul 2008 11:57:05 +0000 (11:57 -0000)
committerGert Driesen <drieseng@users.sourceforge.net>
Mon, 28 Jul 2008 11:57:05 +0000 (11:57 -0000)
* SqlNotificationRequest.cs: Implemented ctors, and fixed
argument checks.
* System.Data_test.dll.sources: Added SqlNotificationRequestTest.cs.

svn path=/trunk/mcs/; revision=108988

mcs/class/System.Data/ChangeLog
mcs/class/System.Data/System.Data.Sql/ChangeLog
mcs/class/System.Data/System.Data.Sql/SqlNotificationRequest.cs
mcs/class/System.Data/System.Data_test.dll.sources
mcs/class/System.Data/Test/System.Data.Sql/ChangeLog [new file with mode: 0644]
mcs/class/System.Data/Test/System.Data.Sql/SqlNotificationRequestTest.cs [new file with mode: 0644]

index 7bffed61ccb3b3ea41652b95428acff94705a74a..2761da48220831f2a46b854e1ce42228ac68e695 100644 (file)
@@ -1,3 +1,7 @@
+2008-07-28  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * System.Data_test.dll.sources: Added SqlNotificationRequestTest.cs.
+
 2008-07-01  Marek Safar  <marek.safar@gmail.com>
 
        * SqlDataReader.cs: Schema key is always a string.
index 8f2b3e72181665e430788d5973116533e88c5112..687b2173b2b3d90e4dfed7b26b86499879b41633 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-28  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * SqlNotificationRequest.cs: Implemented ctors, and fixed
+       argument checks.
+
 2006-02-17  Chris Toshok  <toshok@ximian.com>
 
        * SqlNotificationRequest.cs: class is sealed, and s/id/userData
index 4adfd7dcdaff5053367bc9732b18c7e13b3e9b3a..1461a174995c1d634f977f3de336ba73d9cd02eb 100644 (file)
@@ -34,8 +34,9 @@
 
 using System;
 
-namespace System.Data.Sql {
-       public sealed class SqlNotificationRequest 
+namespace System.Data.Sql
+{
+       public sealed class SqlNotificationRequest
        {
                #region Fields
 
@@ -47,20 +48,12 @@ namespace System.Data.Sql {
 
                #region Constructors
 
-               [MonoTODO]
                public SqlNotificationRequest ()
-                       : this (null, null, 0)
                {
                }
 
-               [MonoTODO]
                public SqlNotificationRequest (string userData, string options, int timeout)
                {
-                       if (options == null)
-                               throw new ArgumentNullException ();
-                       if (timeout < 0)
-                               throw new ArgumentOutOfRangeException ();
-
                        UserData = userData;
                        Options = options;
                        Timeout = timeout;
@@ -72,17 +65,32 @@ namespace System.Data.Sql {
 
                public string UserData {
                        get { return userData; }
-                       set { userData = value; }
+                       set {
+                               if (value != null && value.Length > 0xffff)
+                                       throw new ArgumentOutOfRangeException (
+                                               "UserData");
+                               userData = value;
+                       }
                }
 
                public string Options {
                        get { return options; }
-                       set { options = value; }
+                       set {
+                               if (value != null && value.Length > 0xffff)
+                                       throw new ArgumentOutOfRangeException (
+                                               "Service");
+                               options = value;
+                       }
                }
 
                public int Timeout {
                        get { return timeout; }
-                       set { timeout = value; }
+                       set {
+                               if (value < 0)
+                                       throw new ArgumentOutOfRangeException (
+                                               "Timeout");
+                               timeout = value;
+                       }
                }
 
                #endregion // Properties
index 9ef227049df56bbb5dc6a0cc31d34274ea716d89..9d742aefc776ea702792879c22717f577399ea6f 100644 (file)
@@ -105,6 +105,7 @@ System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs
 System.Data.OleDb/OleDbParameterCollectionTest.cs
 System.Data.OleDb/OleDbPermissionAttributeTest.cs
 System.Data.OleDb/OleDbPermissionTest.cs
+System.Data.Sql/SqlNotificationRequestTest.cs
 System.Data.SqlClient/SqlCommandTest.cs
 System.Data.SqlClient/SqlConnectionTest.cs
 System.Data.SqlClient/SqlConnectionStringBuilderTest.cs
diff --git a/mcs/class/System.Data/Test/System.Data.Sql/ChangeLog b/mcs/class/System.Data/Test/System.Data.Sql/ChangeLog
new file mode 100644 (file)
index 0000000..60a2403
--- /dev/null
@@ -0,0 +1,3 @@
+2008-07-28  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * SqlNotificationRequestTest.cs: Added ctor and property tests.
diff --git a/mcs/class/System.Data/Test/System.Data.Sql/SqlNotificationRequestTest.cs b/mcs/class/System.Data/Test/System.Data.Sql/SqlNotificationRequestTest.cs
new file mode 100644 (file)
index 0000000..868b871
--- /dev/null
@@ -0,0 +1,227 @@
+//
+// SqlNotificationRequestTest.cs - NUnit Test Cases for testing
+// System.Data.Sql.SqlNotificationRequest
+//
+// Author:
+//      Gert Driesen (drieseng@users.sourceforge.net)
+//
+// Copyright (c) 2008 Gert Driesen
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Data.Sql;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Sql
+{
+       [TestFixture]
+       public class SqlNotificationRequestTest
+       {
+               [Test] // ctor ()
+               public void Constructor1 ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       Assert.IsNull (nr.Options, "#1");
+                       Assert.AreEqual (0, nr.Timeout, "#2");
+                       Assert.IsNull (nr.UserData, "#3");
+               }
+
+               [Test] // ctor (String, String, Int32)
+               public void Constructor2 ()
+               {
+                       SqlNotificationRequest nr;
+                       
+                       nr = new SqlNotificationRequest ("UD", "options", 5);
+                       Assert.AreEqual ("options", nr.Options, "#A1");
+                       Assert.AreEqual (5, nr.Timeout, "#A2");
+                       Assert.AreEqual ("UD", nr.UserData, "#A3");
+
+                       nr = new SqlNotificationRequest (string.Empty, " ", 0);
+                       Assert.AreEqual (" ", nr.Options, "#B1");
+                       Assert.AreEqual (0, nr.Timeout, "#B2");
+                       Assert.AreEqual (string.Empty, nr.UserData, "#B3");
+
+                       nr = new SqlNotificationRequest (" ", "O", int.MaxValue);
+                       Assert.AreEqual ("O", nr.Options, "#C1");
+                       Assert.AreEqual (int.MaxValue, nr.Timeout, "#C2");
+                       Assert.AreEqual (" ", nr.UserData, "#C3");
+
+                       nr = new SqlNotificationRequest ((string) null, "O", 7);
+                       Assert.AreEqual ("O", nr.Options, "#D1");
+                       Assert.AreEqual (7, nr.Timeout, "#D2");
+                       Assert.IsNull (nr.UserData, "#D3");
+
+                       nr = new SqlNotificationRequest ("UD", (string) null, 14);
+                       Assert.IsNull (nr.Options, "#E1");
+                       Assert.AreEqual (14, nr.Timeout, "#E2");
+                       Assert.AreEqual ("UD", nr.UserData, "#E3");
+
+                       nr = new SqlNotificationRequest (new string ('A', 0xffff), new string ('X', 0xffff), 3);
+                       Assert.AreEqual (new string ('X', 0xffff), nr.Options, "#F1");
+                       Assert.AreEqual (3, nr.Timeout, "#F2");
+                       Assert.AreEqual (new string ('A', 0xffff), nr.UserData, "#F3");
+               }
+
+               [Test] // ctor (String, String, Int32)
+               public void Constructor2_Options_ExceedMaxLength ()
+               {
+                       string options = new string ('X', 0x10000);
+                       try {
+                               new SqlNotificationRequest ("UD", options, 5);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("Service", ex.ParamName, "#5");
+                       }
+               }
+
+               [Test] // ctor (String, String, Int32)
+               public void Constructor2_Timeout_Negative ()
+               {
+                       try {
+                               new SqlNotificationRequest ("UD", "options", -1);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("Timeout", ex.ParamName, "#5");
+                       }
+               }
+
+               [Test] // ctor (String, String, Int32)
+               public void Constructor2_UserData_ExceedMaxLength ()
+               {
+                       string userData = new string ('X', 0x10000);
+                       try {
+                               new SqlNotificationRequest (userData, "options", 5);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("UserData", ex.ParamName, "#5");
+                       }
+               }
+
+               [Test]
+               public void Options ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       nr.Options = "XYZ";
+                       Assert.AreEqual ("XYZ", nr.Options, "#1");
+                       nr.Options = null;
+                       Assert.IsNull (nr.Options, "#2");
+                       nr.Options = " \r ";
+                       Assert.AreEqual (" \r ", nr.Options, "#3");
+                       nr.Options = string.Empty;
+                       Assert.AreEqual (string.Empty, nr.Options, "#4");
+                       nr.Options = new string ('X', 0xffff);
+                       Assert.AreEqual (new string ('X', 0xffff), nr.Options, "#5");
+               }
+
+               [Test]
+               public void Options_Value_ExceedMaxLength ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       string options = new string ('X', 0x10000);
+
+                       try {
+                               nr.Options = options;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("Service", ex.ParamName, "#5");
+                       }
+               }
+
+               [Test]
+               public void Timeout ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       nr.Timeout = 5;
+                       Assert.AreEqual (5, nr.Timeout, "#1");
+                       nr.Timeout = 0;
+                       Assert.AreEqual (0, nr.Timeout, "#2");
+                       nr.Timeout = int.MaxValue;
+                       Assert.AreEqual (int.MaxValue, nr.Timeout, "#3");
+               }
+
+               [Test]
+               public void Timeout_Value_Negative ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       
+                       try {
+                               nr.Timeout = -1;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("Timeout", ex.ParamName, "#5");
+                       }
+               }
+
+               [Test]
+               public void UserData ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       nr.UserData = "XYZ";
+                       Assert.AreEqual ("XYZ", nr.UserData, "#1");
+                       nr.UserData = null;
+                       Assert.IsNull (nr.UserData, "#2");
+                       nr.UserData = " \r ";
+                       Assert.AreEqual (" \r ", nr.UserData, "#3");
+                       nr.UserData = string.Empty;
+                       Assert.AreEqual (string.Empty, nr.UserData, "#4");
+                       nr.UserData = new string ('X', 0xffff);
+                       Assert.AreEqual (new string ('X', 0xffff), nr.UserData, "#5");
+               }
+
+               [Test]
+               public void UserData_Value_ExceedMaxLength ()
+               {
+                       SqlNotificationRequest nr = new SqlNotificationRequest ();
+                       string userData = new string ('X', 0x10000);
+
+                       try {
+                               nr.UserData = userData;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentOutOfRangeException ex) {
+                               Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.AreEqual ("UserData", ex.ParamName, "#5");
+                       }
+               }
+       }
+}
+
+#endif