2 // SqlConnectionTest.cs - NUnit Test Cases for testing the
5 // Senganal T (tsenganal@novell.com)
7 // Copyright (c) 2004 Novell Inc., and the individuals listed
8 // on the ChangeLog entries.
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System.Data.SqlClient;
34 using NUnit.Framework;
35 using System.Collections;
37 namespace MonoTests.System.Data
40 [Category ("sqlserver")]
41 public class SqlConnectionTest
44 String connectionString = ConnectionManager.Singleton.ConnectionString;
50 events = new ArrayList ();
54 public void TearDown ()
61 public void OverloadedConstructorTest ()
64 //do i need to check for all the synonyms..
65 conn = new SqlConnection ("Timeout=10;Connect Timeout=20;Connection Timeout=30");
66 Assert.AreEqual (30, conn.ConnectionTimeout, "#A1");
67 conn = new SqlConnection ("Connect Timeout=100;Connection Timeout=200;Timeout=300");
68 Assert.AreEqual (300, conn.ConnectionTimeout, "#A2");
69 conn = new SqlConnection ("Connection Timeout=1000;Timeout=2000;Connect Timeout=3000");
70 Assert.AreEqual (3000, conn.ConnectionTimeout, "#A3");
72 //'==' doesent work correctly in both msdotnet and mono
74 conn = new SqlConnection ("server=local==host;database=tmp;");
75 Assert.AreEqual ("local==host", conn.DataSource,
76 "# Datasource name is set incorrectly");
78 string connStr = "Server='loca\"lhost';Database='''Db'; packet Size=\"512\";"
79 + "connect Timeout=20;Workstation Id=\"'\"\"desktop\";";
80 conn = new SqlConnection (connStr);
81 Assert.AreEqual (connStr , conn.ConnectionString , "#B1");
82 Assert.AreEqual ("loca\"lhost" , conn.DataSource , "#B2");
83 Assert.AreEqual ("'Db" , conn.Database , "#B3");
84 Assert.AreEqual (512 , conn.PacketSize , "#B4");
85 Assert.AreEqual (20 , conn.ConnectionTimeout , "#B5");
86 Assert.AreEqual ("'\"desktop" , conn.WorkstationId , "#B6");
92 conn = new SqlConnection (connectionString);
93 conn.StateChange += new StateChangeEventHandler (Connection_StateChange);
96 Assert.AreEqual (ConnectionState.Open, conn.State, "#1");
97 Assert.AreEqual (1, events.Count, "#2");
98 StateChangeEventArgs args = events [0] as StateChangeEventArgs;
99 Assert.IsNotNull (args, "#3");
100 Assert.AreEqual (ConnectionState.Closed, args.OriginalState, "#4");
101 Assert.AreEqual (ConnectionState.Open, args.CurrentState, "#5");
107 public void Open_Connection_Open ()
109 conn = new SqlConnection (connectionString);
115 } catch (InvalidOperationException ex) {
116 // The connection was not closed. The connection's
117 // current state is open
118 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
119 Assert.IsNull (ex.InnerException, "#3");
120 Assert.IsNotNull (ex.Message, "#4");
127 public void Open_ConnectionString_Incorrect ()
129 Assert.Ignore ("NotWorking");
132 conn = new SqlConnection (connectionString + "user id=invalidLogin");
136 } catch (SqlException ex) {
137 // Login failed for user 'invalidLogin'
138 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#A2");
139 Assert.AreEqual ((byte) 14, ex.Class, "#A3");
140 Assert.IsNull (ex.InnerException, "#A4");
141 Assert.IsNotNull (ex.Message, "#A5");
142 Assert.IsTrue (ex.Message.IndexOf ("'invalidLogin'") != -1, "#A6");
143 Assert.AreEqual (18456, ex.Number, "#A7");
144 Assert.AreEqual ((byte) 1, ex.State, "#A8");
150 conn = new SqlConnection (connectionString + "database=invalidDB");
154 } catch (SqlException ex) {
155 // Cannot open database "invalidDB" requested
156 // by the login. The login failed
157 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#B2");
158 Assert.AreEqual ((byte) 11, ex.Class, "#B3");
159 Assert.IsNull (ex.InnerException, "#B4");
160 Assert.IsNotNull (ex.Message, "#B5");
161 Assert.IsTrue (ex.Message.IndexOf ("\"invalidDB\"") != -1, "#B6");
162 Assert.AreEqual (4060, ex.Number, "#B7");
163 Assert.AreEqual ((byte) 1, ex.State, "#B8");
169 conn = new SqlConnection (connectionString + ";password=invalidPassword");
173 } catch (SqlException ex) {
174 // Login failed for user '...'
175 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#C2");
176 Assert.AreEqual ((byte) 14, ex.Class, "#C3");
177 Assert.IsNull (ex.InnerException, "#C4");
178 Assert.IsNotNull (ex.Message, "#C5");
179 Assert.AreEqual (18456, ex.Number, "#C6");
180 Assert.AreEqual ((byte) 1, ex.State, "#C7");
186 conn = new SqlConnection (connectionString + ";server=invalidServerName");
190 } catch (SqlException ex) {
191 // An error has occurred while establishing a
192 // connection to the server...
193 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#D2");
194 Assert.AreEqual ((byte) 20, ex.Class, "#D3");
195 Assert.IsNull (ex.InnerException, "#D4");
196 Assert.IsNotNull (ex.Message, "#D5");
198 Assert.AreEqual (53, ex.Number, "#D6");
200 Assert.AreEqual (17, ex.Number, "#D6");
202 Assert.AreEqual ((byte) 0, ex.State, "#D7");
208 [Test] // bug #412574
211 conn = new SqlConnection (connectionString);
213 conn.StateChange += new StateChangeEventHandler (Connection_StateChange);
216 Assert.AreEqual (ConnectionState.Closed, conn.State, "#1");
217 Assert.AreEqual (1, events.Count, "#2");
218 StateChangeEventArgs args = events [0] as StateChangeEventArgs;
219 Assert.IsNotNull (args, "#3");
220 Assert.AreEqual (ConnectionState.Open, args.OriginalState, "#4");
221 Assert.AreEqual (ConnectionState.Closed, args.CurrentState, "5");
225 Assert.AreEqual (1, events.Count, "#6");
229 public void ChangeDatabase ()
231 conn = new SqlConnection (connectionString);
233 conn.ChangeDatabase ("master");
234 Assert.AreEqual ("master", conn.Database);
238 public void ChangeDatabase_DatabaseName_DoesNotExist ()
240 conn = new SqlConnection (connectionString);
243 String database = conn.Database;
246 conn.ChangeDatabase ("doesnotexist");
248 } catch (SqlException ex) {
249 // Could not locate entry in sysdatabases for
250 // database 'doesnotexist'. No entry found with
251 // that name. Make sure that the name is entered
253 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#2");
254 Assert.AreEqual ((byte) 16, ex.Class, "#3");
255 Assert.IsNull (ex.InnerException, "#4");
256 Assert.IsNotNull (ex.Message, "#5");
257 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#6");
258 Assert.AreEqual (911, ex.Number, "#7");
259 Assert.AreEqual ((byte) 1, ex.State, "#8");
261 Assert.AreEqual (database, conn.Database, "#9");
268 public void ChangeDatabase_DatabaseName_Empty ()
270 conn = new SqlConnection (connectionString);
273 conn.ChangeDatabase (string.Empty);
275 } catch (ArgumentException ex) {
276 // Database cannot be null, the empty string,
277 // or string of only whitespace
278 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
279 Assert.IsNull (ex.InnerException, "#3");
280 Assert.IsNotNull (ex.Message, "#4");
281 Assert.IsNull (ex.ParamName);
286 public void ChangeDatabase_DatabaseName_Null ()
288 conn = new SqlConnection (connectionString);
291 conn.ChangeDatabase ((string) null);
293 } catch (ArgumentException ex) {
294 // Database cannot be null, the empty string,
295 // or string of only whitespace
296 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
297 Assert.IsNull (ex.InnerException, "#3");
298 Assert.IsNotNull (ex.Message, "#4");
299 Assert.IsNull (ex.ParamName);
303 [Test] // bug #412581
304 public void ChangeDatabase_DatabaseName_Whitespace ()
307 Assert.Ignore ("bug #412581");
310 conn = new SqlConnection (connectionString);
313 conn.ChangeDatabase (" ");
316 } catch (SqlException ex) {
317 // Could not locate entry in sysdatabases for
318 // database ' '. No entry found with that name.
319 // Make sure that the name is entered correctly
320 Assert.AreEqual (typeof (SqlException), ex.GetType (), "#2");
321 Assert.AreEqual ((byte) 16, ex.Class, "#3");
322 Assert.IsNull (ex.InnerException, "#4");
323 Assert.IsNotNull (ex.Message, "#5");
324 Assert.IsTrue (ex.Message.IndexOf ("' '") != -1, "#6");
325 Assert.AreEqual (911, ex.Number, "#7");
326 Assert.AreEqual ((byte) 1, ex.State, "#8");
329 } catch (ArgumentException ex) {
330 // Database cannot be null, the empty string,
331 // or string of only whitespace
332 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
333 Assert.IsNull (ex.InnerException, "#3");
334 Assert.IsNotNull (ex.Message, "#4");
335 Assert.IsNull (ex.ParamName);
341 public void InterfaceTransactionTest ()
343 conn = new SqlConnection (connectionString);
345 IDbCommand idbCommand = new SqlCommand ("use [mono-test]", conn);
346 idbCommand.Connection = null;
347 Assert.AreEqual (null, idbCommand.Connection, "Connection should be null");
348 idbCommand.Transaction = null;
349 Assert.AreEqual (null, idbCommand.Transaction, "Transaction should be null");
355 public void BeginTransaction ()
357 conn = new SqlConnection (connectionString);
360 SqlTransaction trans = conn.BeginTransaction ();
361 Assert.AreSame (conn, trans.Connection, "#A1");
362 Assert.AreEqual (IsolationLevel.ReadCommitted, trans.IsolationLevel, "#A2");
365 trans = conn.BeginTransaction ();
368 conn.BeginTransaction ();
370 } catch (InvalidOperationException ex) {
371 // SqlConnection does not support parallel transactions
372 Assert.AreEqual (typeof(InvalidOperationException), ex.GetType(), "#B2");
373 Assert.IsNull (ex.InnerException, "#B3");
374 Assert.IsNotNull (ex.Message, "#B4");
380 trans = conn.BeginTransaction ();
382 trans = conn.BeginTransaction ();
384 trans = conn.BeginTransaction ();
391 public void ConnectionString ()
393 conn = new SqlConnection (connectionString);
394 // Test Repeated Keyoword should take the latest value
395 conn.ConnectionString = conn.ConnectionString + ";server=RepeatedServer;";
396 Assert.AreEqual ("RepeatedServer", ((SqlConnection)conn).DataSource, "#A1");
397 conn.ConnectionString += ";database=gen;Initial Catalog=gen1";
398 Assert.AreEqual ("gen1", conn.Database, "#A2");
400 // Test if properties are set correctly
401 string str = "server=localhost1;database=db;user id=user;";
402 str += "password=pwd;Workstation ID=workstation;Packet Size=512;";
403 str += "Connect Timeout=10";
404 conn.ConnectionString = str;
406 Assert.AreEqual ("localhost1", conn.DataSource, "#B1");
407 Assert.AreEqual ("db", conn.Database, "#B2");
408 Assert.AreEqual (ConnectionState.Closed, conn.State, "#B3");
409 Assert.AreEqual ("workstation", conn.WorkstationId, "#B4");
410 Assert.AreEqual (512, conn.PacketSize, "#B5");
411 Assert.AreEqual (10, conn.ConnectionTimeout, "#B6");
413 // Test if any leftover values exist from previous invocation
414 conn.ConnectionString = connectionString;
415 conn.ConnectionString = string.Empty;
416 Assert.AreEqual (string.Empty, conn.DataSource, "#C1");
417 Assert.AreEqual ("", conn.Database, "#C2");
419 Assert.AreEqual (8000, conn.PacketSize, "#C3");
421 Assert.AreEqual (8192, conn.PacketSize, "#C3");
423 Assert.AreEqual (15, conn.ConnectionTimeout, "#C4");
424 Assert.IsTrue (string.Compare (conn.WorkstationId, Environment.MachineName, true) == 0, "#C5");
428 public void ConnectionString_Connection_Open ()
430 conn = new SqlConnection (connectionString);
431 conn.ConnectionString = connectionString;
434 conn.ConnectionString = "server=localhost;database=tmp;";
436 } catch (InvalidOperationException ex) {
437 // Not allowed to change the 'ConnectionString'
438 // property. The connection's current state is open
439 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
440 Assert.IsNull (ex.InnerException, "#3");
441 Assert.IsNotNull (ex.Message, "#4");
448 public void ServerVersionTest ()
450 conn = new SqlConnection (connectionString);
452 // Test InvalidOperation Exception is thrown if Connection is CLOSED
454 string s = conn.ServerVersion;
455 Assert.Fail ("#A1:" + s);
456 } catch (InvalidOperationException ex) {
457 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
458 Assert.IsNull (ex.InnerException, "#A3");
459 Assert.IsNotNull (ex.Message, "#A4");
462 // Test if Release Version is as per specification.
464 String [] version = conn.ServerVersion.Split ('.');
465 Assert.AreEqual (2, version[0].Length,
466 "#B1 The Major release shud be exactly 2 characters");
467 Assert.AreEqual (2, version[1].Length,
468 "#B2 The Minor release shud be exactly 2 characters");
469 Assert.AreEqual (4, version[2].Length,
470 "#B3 The Release version should be exactly 4 digits");
474 public void Database ()
476 conn = new SqlConnection (connectionString);
477 string database = conn.Database;
479 // Test if database property is updated when a query changes database
481 SqlCommand cmd = new SqlCommand ("use [master]" , conn);
482 cmd.ExecuteNonQuery ();
483 Assert.AreEqual ("master", conn.Database, "#1");
485 Assert.AreEqual (database, conn.Database, "#2");
487 // Test if the database property is reset on re-opening the connection
488 conn.ConnectionString = connectionString;
490 Assert.AreEqual (database, conn.Database, "#3");
494 [Test] // bug #412571
495 public void Dispose ()
497 StateChangeEventArgs stateChangeArgs;
498 EventArgs disposedArgs;
500 conn = new SqlConnection (connectionString + ";Connection Timeout=30;Packet Size=512;Workstation Id=Desktop");
501 conn.Disposed += new EventHandler (Connection_Disposed);
503 conn.StateChange += new StateChangeEventHandler (Connection_StateChange);
504 Assert.AreEqual (0, events.Count, "#A1");
506 Assert.AreEqual (string.Empty, conn.ConnectionString, "#A2");
507 Assert.AreEqual (15, conn.ConnectionTimeout, "#A3");
508 Assert.AreEqual (string.Empty, conn.Database, "#A4");
509 Assert.AreEqual (string.Empty, conn.DataSource, "#A5");
511 Assert.AreEqual (8000, conn.PacketSize, "#A6");
513 Assert.AreEqual (8192, conn.PacketSize, "#A6");
515 Assert.AreEqual (ConnectionState.Closed, conn.State, "#A7");
516 Assert.IsTrue (string.Compare (conn.WorkstationId, Environment.MachineName, true) == 0, "#A8");
517 Assert.AreEqual (2, events.Count, "#A9");
519 stateChangeArgs = events [0] as StateChangeEventArgs;
520 Assert.IsNotNull (stateChangeArgs, "#B1");
521 Assert.AreEqual (typeof (StateChangeEventArgs), stateChangeArgs.GetType (), "#B2");
522 Assert.AreEqual (ConnectionState.Open, stateChangeArgs.OriginalState, "#B3");
523 Assert.AreEqual (ConnectionState.Closed, stateChangeArgs.CurrentState, "B4");
525 disposedArgs = events [1] as EventArgs;
526 Assert.IsNotNull (disposedArgs, "#C1");
527 Assert.AreEqual (typeof (EventArgs), disposedArgs.GetType (), "#C2");
531 Assert.AreEqual (ConnectionState.Closed, conn.State, "#D1");
532 Assert.AreEqual (3, events.Count, "#D2");
534 disposedArgs = events [2] as EventArgs;
535 Assert.IsNotNull (disposedArgs, "#E1");
536 Assert.AreEqual (typeof (EventArgs), disposedArgs.GetType (), "#E2");
539 void Connection_StateChange (object sender , StateChangeEventArgs e)
544 void Connection_Disposed (object sender , EventArgs e)
551 public void FireInfoMessageEventOnUserErrorsTest ()
553 conn = new SqlConnection ();
554 Assert.AreEqual(false, conn.FireInfoMessageEventOnUserErrors, "#1 The default value should be false");
555 conn.FireInfoMessageEventOnUserErrors = true;
556 Assert.AreEqual(true, conn.FireInfoMessageEventOnUserErrors, "#1 The value should be true after setting the property to true");
560 public void StatisticsEnabledTest ()
562 conn = new SqlConnection ();
563 Assert.AreEqual(false, conn.StatisticsEnabled, "#1 The default value should be false");
564 conn.StatisticsEnabled = true;
565 Assert.AreEqual(true, conn.StatisticsEnabled, "#1 The value should be true after setting the property to true");
569 public void ChangePasswordTest ()
571 string tmpPassword = "modifiedbymonosqlclient";
572 SqlConnection.ChangePassword (connectionString, tmpPassword);
573 SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder (connectionString);
574 string oldPassword = connBuilder.Password;
575 connBuilder.Password = tmpPassword;
576 SqlConnection.ChangePassword (connBuilder.ConnectionString, oldPassword); // Modify to the original password
583 [Category ("sqlserver")]
584 public class GetSchemaTest
586 SqlConnection conn = null;
587 String connectionString = ConnectionManager.Singleton.ConnectionString;
592 conn = new SqlConnection(connectionString);
597 public void TearDown()
603 public void GetSchemaTest1()
606 DataTable tab1 = conn.GetSchema("databases");
607 foreach (DataRow row in tab1.Rows)
609 foreach (DataColumn col in tab1.Columns)
611 if (col.ColumnName.ToString() == "database_name" && row[col].ToString() == "monotest")
620 Assert.AreEqual(true, flag, "#GS1 failed");
624 [ExpectedException(typeof(ArgumentException))]
625 public void GetSchemaTest2()
627 conn.GetSchema(null);
631 public void GetSchemaTest3 ()
633 Assert.Ignore ("We currently have no foreign keys defined in the test database");
636 DataTable tab1 = conn.GetSchema("ForeignKeys");
637 foreach (DataRow row in tab1.Rows)
639 foreach (DataColumn col in tab1.Columns)
642 * We need to consider multiple values
644 if (col.ColumnName.ToString() == "TABLE_NAME" && row[col].ToString() == "tmptable1")
653 Assert.AreEqual(true, flag, "#GS3 failed");
657 public void GetSchemaTest4()
660 DataTable tab1 = conn.GetSchema("Indexes");
661 foreach (DataRow row in tab1.Rows)
663 foreach (DataColumn col in tab1.Columns)
666 * We need to consider multiple values
668 if (col.ColumnName.ToString() == "table_name" && row[col].ToString() == "binary_family")
677 Assert.AreEqual(true, flag, "#GS4 failed");
681 public void GetSchemaTest5()
684 DataTable tab1 = conn.GetSchema("IndexColumns");
685 foreach (DataRow row in tab1.Rows)
687 foreach (DataColumn col in tab1.Columns)
690 * We need to consider multiple values
692 if (col.ColumnName.ToString() == "table_name" && row[col].ToString() == "binary_family")
701 Assert.AreEqual(true, flag, "#GS5 failed");
705 public void GetSchemaTest6()
708 DataTable tab1 = conn.GetSchema("Procedures");
709 foreach (DataRow row in tab1.Rows)
711 foreach (DataColumn col in tab1.Columns)
714 * We need to consider multiple values
716 if (col.ColumnName.ToString() == "SPECIFIC_NAME" && row[col].ToString() == "sp_get_age")
725 Assert.AreEqual(true, flag, "#GS6 failed");
729 public void GetSchemaTest7()
732 DataTable tab1 = conn.GetSchema("ProcedureParameters");
733 foreach (DataRow row in tab1.Rows)
735 foreach (DataColumn col in tab1.Columns)
738 * We need to consider multiple values
740 if (col.ColumnName.ToString() == "SPECIFIC_NAME" && row[col].ToString() == "sp_get_age")
749 Assert.AreEqual(true, flag, "#GS7 failed");
753 public void GetSchemaTest8()
756 DataTable tab1 = conn.GetSchema("Tables");
757 foreach (DataRow row in tab1.Rows)
759 foreach (DataColumn col in tab1.Columns)
762 * We need to consider multiple values
764 if (col.ColumnName.ToString() == "TABLE_NAME" && row[col].ToString() == "binary_family")
773 Assert.AreEqual(true, flag, "#GS8 failed");
777 public void GetSchemaTest9()
780 DataTable tab1 = conn.GetSchema("Columns");
781 foreach (DataRow row in tab1.Rows)
783 foreach (DataColumn col in tab1.Columns)
786 * We need to consider multiple values
788 if (col.ColumnName.ToString() == "TABLE_NAME" && row[col].ToString() == "binary_family")
797 Assert.AreEqual(true, flag, "#GS9 failed");
801 public void GetSchemaTest10()
804 DataTable tab1 = conn.GetSchema("Users");
805 foreach (DataRow row in tab1.Rows)
807 foreach (DataColumn col in tab1.Columns)
810 * We need to consider multiple values
812 if (col.ColumnName.ToString() == "user_name" && row[col].ToString() == "public")
821 Assert.AreEqual(true, flag, "#GS10 failed");
825 public void GetSchemaTest11 ()
827 Assert.Ignore ("Incorrect syntax near 'TABLE_SCHEMA'");
830 DataTable tab1 = conn.GetSchema("Views");
831 flag = true; // FIXME: Currently MS-SQL 2005 returns empty table. Remove this flag ASAP.
832 foreach (DataRow row in tab1.Rows)
834 foreach (DataColumn col in tab1.Columns)
837 * We need to consider multiple values.
839 if (col.ColumnName.ToString() == "user_name" && row[col].ToString() == "public")
848 Assert.AreEqual(true, flag, "#GS11 failed");
852 public void GetSchemaTest12 ()
854 Assert.Ignore ("Incorrect syntax near '('");
857 DataTable tab1 = conn.GetSchema("ViewColumns");
858 flag = true; // FIXME: Currently MS-SQL 2005 returns empty table. Remove this flag ASAP.
859 foreach (DataRow row in tab1.Rows)
861 foreach (DataColumn col in tab1.Columns)
864 * We need to consider multiple values.
866 if (col.ColumnName.ToString() == "user_name" && row[col].ToString() == "public")
875 Assert.AreEqual(true, flag, "#GS12 failed");
879 public void GetSchemaTest13 ()
881 Assert.Ignore ("The multi-part identifier \"assportemblies.name\" could not be bound");
884 DataTable tab1 = conn.GetSchema("UserDefinedTypes");
885 flag = true; // FIXME: Currently MS-SQL 2005 returns empty table. Remove this flag ASAP.
886 foreach (DataRow row in tab1.Rows)
888 foreach (DataColumn col in tab1.Columns)
891 * We need to consider multiple values.
893 if (col.ColumnName.ToString() == "user_name" && row[col].ToString() == "public")
902 Assert.AreEqual(true, flag, "#GS13 failed");
906 public void GetSchemaTest14()
909 string [] restrictions = new string[4];
911 restrictions[0] = "monotest";
912 restrictions[1] = "dbo";
913 restrictions[2] = null;
914 restrictions[3] = "BASE TABLE";
915 DataTable tab1 = conn.GetSchema("Tables", restrictions);
916 foreach (DataRow row in tab1.Rows)
918 foreach (DataColumn col in tab1.Columns)
921 * We need to consider multiple values
923 if (col.ColumnName.ToString() == "TABLE_NAME" && row[col].ToString() == "binary_family")
932 Assert.AreEqual(true, flag, "#GS14 failed");
936 public void GetSchemaTest15()
939 string [] restrictions = new string[4];
941 restrictions[0] = "monotest";
942 restrictions[1] = null;
943 restrictions[2] = "binary_family";
944 restrictions[3] = null;
945 DataTable tab1 = conn.GetSchema("IndexColumns", restrictions);
946 foreach (DataRow row in tab1.Rows)
948 foreach (DataColumn col in tab1.Columns)
951 * We need to consider multiple values
953 if (col.ColumnName.ToString() == "table_name" && row[col].ToString() == "binary_family")
962 Assert.AreEqual(true, flag, "#GS15 failed");
966 public void GetSchemaTest16()
969 string [] restrictions = new string[4];
971 restrictions[0] = "monotest";
972 restrictions[1] = null;
973 restrictions[2] = "sp_get_age";
974 restrictions[3] = null;
975 DataTable tab1 = conn.GetSchema("Procedures", restrictions);
976 foreach (DataRow row in tab1.Rows)
978 foreach (DataColumn col in tab1.Columns)
981 * We need to consider multiple values
983 if (col.ColumnName.ToString() == "ROUTINE_NAME" && row[col].ToString() == "sp_get_age")
992 Assert.AreEqual(true, flag, "#GS16 failed");
996 public void GetSchemaTest17()
999 DataTable tab1 = conn.GetSchema();
1000 foreach (DataRow row in tab1.Rows)
1002 foreach (DataColumn col in tab1.Columns)
1005 * We need to consider multiple values
1007 if (col.ColumnName.ToString() == "CollectionName" && row[col].ToString() == "UserDefinedTypes")
1016 Assert.AreEqual(true, flag, "#GS17 failed");
1020 public void GetSchemaTest18()
1023 DataTable tab1 = conn.GetSchema("RESTRICTIONS");
1024 foreach (DataRow row in tab1.Rows)
1026 foreach (DataColumn col in tab1.Columns)
1029 * We need to consider multiple values
1031 if (col.ColumnName.ToString() == "RestrictionDefault" && row[col].ToString() == "CONSTRAINT_NAME")
1040 Assert.AreEqual(true, flag, "#GS18 failed");
1044 [ExpectedException (typeof (ArgumentException))]
1045 public void GetSchemaTest19 ()
1047 String [] restrictions = new String[1];
1048 conn.GetSchema("RESTRICTIONS", restrictions);
1052 public void GetSchemaTest20 ()
1055 DataTable tab1 = conn.GetSchema("DataTypes");
1056 foreach (DataRow row in tab1.Rows)
1058 foreach (DataColumn col in tab1.Columns)
1061 * We need to consider multiple values
1063 if (col.ColumnName.ToString() == "TypeName" && row[col].ToString() == "uniqueidentifier")
1072 Assert.AreEqual(true, flag, "#GS20 failed");
1076 public void GetSchemaTest21()
1079 DataTable tab1 = conn.GetSchema();
1080 foreach (DataRow row in tab1.Rows)
1082 foreach (DataColumn col in tab1.Columns)
1085 * We need to consider multiple values
1087 if (col.ColumnName.ToString() == "CollectionName" && row[col].ToString() == "UserDefinedTypes")
1096 Assert.AreEqual(true, flag, "#GS21 failed");
1099 public void GetSchemaTest22()
1102 DataTable tab1 = conn.GetSchema("ReservedWords");
1103 foreach (DataRow row in tab1.Rows)
1105 foreach (DataColumn col in tab1.Columns)
1108 * We need to consider multiple values
1110 if (col.ColumnName.ToString() == "ReservedWord" && row[col].ToString() == "UPPER")
1119 Assert.AreEqual(true, flag, "#GS22 failed");
1123 public void GetSchemaTest23()
1126 DataTable tab1 = conn.GetSchema("ReservedWords");
1127 foreach (DataRow row in tab1.Rows)
1129 foreach (DataColumn col in tab1.Columns)
1132 * We need to consider multiple values
1134 if (col.ColumnName.ToString() == "ReservedWord" && row[col].ToString() == "upper")
1143 Assert.AreEqual(false, flag, "#GS23 failed");
1147 public void GetSchemaTest24()
1150 string [] restrictions = new string[4];
1152 restrictions[0] = "monotest";
1153 restrictions[1] = null;
1154 restrictions[2] = "sp_get_age";
1155 restrictions[3] = null;
1156 DataTable tab1 = conn.GetSchema("Procedures", restrictions);
1157 foreach (DataRow row in tab1.Rows)
1159 foreach (DataColumn col in tab1.Columns)
1162 * We need to consider multiple values
1164 if (col.ColumnName.ToString() == "ROUTINE_NAME" && row[col].ToString() == "mono")
1173 Assert.AreEqual(false, flag, "#GS24 failed");
1177 [ExpectedException (typeof (ArgumentException))]
1178 public void GetSchemaTest25 ()
1180 String [] restrictions = new String [1];
1181 conn.GetSchema ("Mono", restrictions);