2 // SqlConnectionTest.cs - NUnit Test Cases for testing the
\r
3 // SqlConnection class
\r
5 // Gert Driesen (drieseng@users.sourceforge.net)
\r
7 // Copyright (c) 2004 Novell Inc., and the individuals listed
\r
8 // on the ChangeLog entries.
\r
10 // Permission is hereby granted, free of charge, to any person obtaining
\r
11 // a copy of this software and associated documentation files (the
\r
12 // "Software"), to deal in the Software without restriction, including
\r
13 // without limitation the rights to use, copy, modify, merge, publish,
\r
14 // distribute, sublicense, and/or sell copies of the Software, and to
\r
15 // permit persons to whom the Software is furnished to do so, subject to
\r
16 // the following conditions:
\r
18 // The above copyright notice and this permission notice shall be
\r
19 // included in all copies or substantial portions of the Software.
\r
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
32 using System.Data.SqlClient;
\r
34 using NUnit.Framework;
\r
36 namespace MonoTests.System.Data.SqlClient
\r
39 public class SqlConnectionTest
\r
41 [Test] // SqlConnection ()
\r
42 public void Constructor1 ()
\r
44 SqlConnection cn = new SqlConnection ();
\r
46 Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
\r
47 Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
\r
48 Assert.IsNull (cn.Container, "#3");
\r
49 Assert.AreEqual (string.Empty, cn.Database, "#4");
\r
50 Assert.AreEqual (string.Empty, cn.DataSource, "#5");
\r
51 Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#6");
\r
52 Assert.AreEqual (8000, cn.PacketSize, "#7");
\r
53 Assert.IsNull (cn.Site, "#8");
\r
54 Assert.AreEqual (ConnectionState.Closed, cn.State, "#9");
\r
55 Assert.IsFalse (cn.StatisticsEnabled, "#10");
\r
56 Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#11");
\r
59 [Test] // SqlConnection (string)
\r
60 public void Constructor2 ()
\r
62 string connectionString = "server=SQLSRV; database=Mono;";
\r
64 SqlConnection cn = new SqlConnection (connectionString);
\r
65 Assert.AreEqual (connectionString, cn.ConnectionString, "#A1");
\r
66 Assert.AreEqual (15, cn.ConnectionTimeout, "#A2");
\r
67 Assert.IsNull (cn.Container, "#A3");
\r
68 Assert.AreEqual ("Mono", cn.Database, "#A4");
\r
69 Assert.AreEqual ("SQLSRV", cn.DataSource, "#A5");
\r
70 Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#A6");
\r
71 Assert.AreEqual (8000, cn.PacketSize, "#A7");
\r
72 Assert.IsNull (cn.Site, "#A8");
\r
73 Assert.AreEqual (ConnectionState.Closed, cn.State, "#A9");
\r
74 Assert.IsFalse (cn.StatisticsEnabled, "#A10");
\r
75 Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#A11");
\r
77 cn = new SqlConnection ((string) null);
\r
78 Assert.AreEqual (string.Empty, cn.ConnectionString, "#B1");
\r
79 Assert.AreEqual (15, cn.ConnectionTimeout, "#B2");
\r
80 Assert.IsNull (cn.Container, "#B3");
\r
81 Assert.AreEqual (string.Empty, cn.Database, "#B4");
\r
82 Assert.AreEqual (string.Empty, cn.DataSource, "#B5");
\r
83 Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#B6");
\r
84 Assert.AreEqual (8000, cn.PacketSize, "#B7");
\r
85 Assert.IsNull (cn.Site, "#B8");
\r
86 Assert.AreEqual (ConnectionState.Closed, cn.State, "#B9");
\r
87 Assert.IsFalse (cn.StatisticsEnabled, "#B10");
\r
88 Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#B11");
\r
92 public void Constructor2_ConnectionString_Invalid ()
\r
95 new SqlConnection ("InvalidConnectionString");
\r
96 Assert.Fail ("#A1");
\r
97 } catch (ArgumentException ex) {
\r
98 // Format of the initialization string does
\r
99 // not conform to specification starting at
\r
101 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
102 Assert.IsNull (ex.InnerException, "#A3");
\r
103 Assert.IsNotNull (ex.Message, "#A4");
\r
104 Assert.IsNull (ex.ParamName, "#A5");
\r
109 new SqlConnection ("invalidKeyword=10");
\r
110 Assert.Fail ("#B1");
\r
111 } catch (ArgumentException ex) {
\r
112 // Keyword not supported: 'invalidkeyword'
\r
113 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
114 Assert.IsNull (ex.InnerException, "#B3");
\r
115 Assert.IsNotNull (ex.Message, "#B4");
\r
116 Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
\r
117 Assert.IsNull (ex.ParamName, "#B6");
\r
120 // invalid packet size (< minimum)
\r
122 new SqlConnection ("Packet Size=511");
\r
123 Assert.Fail ("#C1");
\r
124 } catch (ArgumentException ex) {
\r
125 // Invalid 'Packet Size'. The value must be an
\r
126 // integer >= 512 and <= 32768
\r
127 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
128 Assert.IsNull (ex.InnerException, "#C3");
\r
129 Assert.IsNotNull (ex.Message, "#C4");
\r
130 Assert.IsNull (ex.ParamName, "#C5");
\r
133 // invalid packet size (> maximum)
\r
135 new SqlConnection ("Packet Size=32769");
\r
136 Assert.Fail ("#D1");
\r
137 } catch (ArgumentException ex) {
\r
138 // Invalid 'Packet Size'. The value must be an
\r
139 // integer >= 512 and <= 32768
\r
140 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
\r
141 Assert.IsNull (ex.InnerException, "#D3");
\r
142 Assert.IsNotNull (ex.Message, "#D4");
\r
143 Assert.IsNull (ex.ParamName, "#D5");
\r
146 // negative connect timeout
\r
148 new SqlConnection ("Connect Timeout=-1");
\r
149 Assert.Fail ("#E1");
\r
150 } catch (ArgumentException ex) {
\r
151 // Invalid value for key 'connect timeout'
\r
152 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
\r
153 Assert.IsNull (ex.InnerException, "#E3");
\r
154 Assert.IsNotNull (ex.Message, "#E4");
\r
155 Assert.IsNull (ex.ParamName, "#E5");
\r
158 // negative max pool size
\r
160 new SqlConnection ("Max Pool Size=-1");
\r
161 Assert.Fail ("#F1");
\r
162 } catch (ArgumentException ex) {
\r
163 // Invalid value for key 'max pool size'
\r
164 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#F2");
\r
165 Assert.IsNull (ex.InnerException, "#F3");
\r
166 Assert.IsNotNull (ex.Message, "#F4");
\r
167 Assert.IsNull (ex.ParamName, "#F5");
\r
170 // negative min pool size
\r
172 new SqlConnection ("Min Pool Size=-1");
\r
173 Assert.Fail ("#G1");
\r
174 } catch (ArgumentException ex) {
\r
175 // Invalid value for key 'min pool size'
\r
176 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#G2");
\r
177 Assert.IsNull (ex.InnerException, "#G3");
\r
178 Assert.IsNotNull (ex.Message, "#G4");
\r
179 Assert.IsNull (ex.ParamName, "#G5");
\r
184 public void BeginTransaction_Connection_Closed ()
\r
186 SqlConnection cn = new SqlConnection ();
\r
189 cn.BeginTransaction ();
\r
190 Assert.Fail ("#A1");
\r
191 } catch (InvalidOperationException ex) {
\r
192 // Invalid operation. The connection is closed
\r
193 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
\r
194 Assert.IsNull (ex.InnerException, "#A3");
\r
195 Assert.IsNotNull (ex.Message, "#A4");
\r
199 cn.BeginTransaction ((IsolationLevel) 666);
\r
200 Assert.Fail ("#B1");
\r
201 } catch (InvalidOperationException ex) {
\r
202 // Invalid operation. The connection is closed
\r
203 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
\r
204 Assert.IsNull (ex.InnerException, "#B3");
\r
205 Assert.IsNotNull (ex.Message, "#B4");
\r
209 cn.BeginTransaction (IsolationLevel.Serializable);
\r
210 Assert.Fail ("#C1");
\r
211 } catch (InvalidOperationException ex) {
\r
212 // Invalid operation. The connection is closed
\r
213 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
\r
214 Assert.IsNull (ex.InnerException, "#C3");
\r
215 Assert.IsNotNull (ex.Message, "#C4");
\r
219 cn.BeginTransaction ("trans");
\r
220 Assert.Fail ("#D1");
\r
221 } catch (InvalidOperationException ex) {
\r
222 // Invalid operation. The connection is closed
\r
223 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
\r
224 Assert.IsNull (ex.InnerException, "#D3");
\r
225 Assert.IsNotNull (ex.Message, "#D4");
\r
229 cn.BeginTransaction ((IsolationLevel) 666, "trans");
\r
230 Assert.Fail ("#E1");
\r
231 } catch (InvalidOperationException ex) {
\r
232 // Invalid operation. The connection is closed
\r
233 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
\r
234 Assert.IsNull (ex.InnerException, "#E3");
\r
235 Assert.IsNotNull (ex.Message, "#E4");
\r
239 cn.BeginTransaction (IsolationLevel.Serializable, "trans");
\r
240 Assert.Fail ("#F1");
\r
241 } catch (InvalidOperationException ex) {
\r
242 // Invalid operation. The connection is closed
\r
243 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
\r
244 Assert.IsNull (ex.InnerException, "#F3");
\r
245 Assert.IsNotNull (ex.Message, "#F4");
\r
250 public void ChangeDatabase_Connection_Closed ()
\r
252 SqlConnection cn = new SqlConnection ();
\r
253 cn.ConnectionString = "server=SQLSRV";
\r
256 cn.ChangeDatabase ("database");
\r
257 Assert.Fail ("#1");
\r
258 } catch (InvalidOperationException ex) {
\r
259 // Invalid operation. The connection is closed
\r
260 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
\r
261 Assert.IsNull (ex.InnerException, "#3");
\r
262 Assert.IsNotNull (ex.Message, "#4");
\r
267 public void ChangePassword_ConnectionString_Empty ()
\r
270 SqlConnection.ChangePassword (string.Empty, "mono");
\r
271 Assert.Fail ("#1");
\r
272 } catch (ArgumentNullException ex) {
\r
273 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
274 Assert.IsNull (ex.InnerException, "#3");
\r
275 Assert.IsNotNull (ex.Message, "#4");
\r
276 Assert.IsNotNull (ex.ParamName, "#5");
\r
277 Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
\r
282 public void ChangePassword_ConnectionString_Null ()
\r
285 SqlConnection.ChangePassword ((string) null, "mono");
\r
286 Assert.Fail ("#1");
\r
287 } catch (ArgumentNullException ex) {
\r
288 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
289 Assert.IsNull (ex.InnerException, "#3");
\r
290 Assert.IsNotNull (ex.Message, "#4");
\r
291 Assert.IsNotNull (ex.ParamName, "#5");
\r
292 Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
\r
297 public void ChangePassword_NewPassword_Empty ()
\r
300 SqlConnection.ChangePassword ("server=SQLSRV", string.Empty);
\r
301 Assert.Fail ("#1");
\r
302 } catch (ArgumentNullException ex) {
\r
303 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
304 Assert.IsNull (ex.InnerException, "#3");
\r
305 Assert.IsNotNull (ex.Message, "#4");
\r
306 Assert.IsNotNull (ex.ParamName, "#5");
\r
307 Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
\r
312 public void ChangePassword_NewPassword_ExceedMaxLength ()
\r
315 SqlConnection.ChangePassword ("server=SQLSRV",
\r
316 new string ('d', 129));
\r
317 Assert.Fail ("#1");
\r
318 } catch (ArgumentException ex) {
\r
319 // The length of argument 'newPassword' exceeds
\r
320 // it's limit of '128'
\r
321 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
322 Assert.IsNull (ex.InnerException, "#3");
\r
323 Assert.IsNotNull (ex.Message, "#4");
\r
324 Assert.IsTrue (ex.Message.IndexOf ("'newPassword'") != -1, "#5");
\r
325 Assert.IsTrue (ex.Message.IndexOf ("128") != -1, "#6");
\r
326 Assert.IsNull (ex.ParamName, "#7");
\r
331 public void ChangePassword_NewPassword_Null ()
\r
334 SqlConnection.ChangePassword ("server=SQLSRV", (string) null);
\r
335 Assert.Fail ("#1");
\r
336 } catch (ArgumentNullException ex) {
\r
337 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
338 Assert.IsNull (ex.InnerException, "#3");
\r
339 Assert.IsNotNull (ex.Message, "#4");
\r
340 Assert.IsNotNull (ex.ParamName, "#5");
\r
341 Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
\r
346 public void ClearPool_Connection_Null ()
\r
349 SqlConnection.ClearPool ((SqlConnection) null);
\r
350 Assert.Fail ("#1");
\r
351 } catch (ArgumentNullException ex) {
\r
352 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
353 Assert.IsNull (ex.InnerException, "#3");
\r
354 Assert.IsNotNull (ex.Message, "#4");
\r
355 Assert.AreEqual ("connection", ex.ParamName, "#5");
\r
360 public void ConnectionString ()
\r
362 SqlConnection cn = new SqlConnection ();
\r
363 cn.ConnectionString = "server=SQLSRV";
\r
364 Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#1");
\r
365 cn.ConnectionString = null;
\r
366 Assert.AreEqual (string.Empty, cn.ConnectionString, "#2");
\r
367 cn.ConnectionString = "server=SQLSRV";
\r
368 Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#3");
\r
369 cn.ConnectionString = string.Empty;
\r
370 Assert.AreEqual (string.Empty, cn.ConnectionString, "#4");
\r
374 public void ConnectionString_Value_Invalid ()
\r
376 SqlConnection cn = new SqlConnection ();
\r
379 cn.ConnectionString = "InvalidConnectionString";
\r
380 Assert.Fail ("#A1");
\r
381 } catch (ArgumentException ex) {
\r
382 // Format of the initialization string does
\r
383 // not conform to specification starting at
\r
385 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
386 Assert.IsNull (ex.InnerException, "#A3");
\r
387 Assert.IsNotNull (ex.Message, "#A4");
\r
388 Assert.IsNull (ex.ParamName, "#A5");
\r
393 cn.ConnectionString = "invalidKeyword=10";
\r
394 Assert.Fail ("#B1");
\r
395 } catch (ArgumentException ex) {
\r
396 // Keyword not supported: 'invalidkeyword'
\r
397 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
398 Assert.IsNull (ex.InnerException, "#B3");
\r
399 Assert.IsNotNull (ex.Message, "#B4");
\r
400 Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
\r
401 Assert.IsNull (ex.ParamName, "#B6");
\r
406 public void CreateCommand ()
\r
408 SqlConnection cn = new SqlConnection ();
\r
409 SqlCommand cmd = cn.CreateCommand ();
\r
410 Assert.IsNotNull (cmd, "#1");
\r
411 Assert.AreEqual (string.Empty, cmd.CommandText, "#2");
\r
412 Assert.AreEqual (30, cmd.CommandTimeout, "#3");
\r
413 Assert.AreEqual (CommandType.Text, cmd.CommandType, "#4");
\r
414 Assert.AreSame (cn, cmd.Connection, "#5");
\r
415 Assert.IsNull (cmd.Container, "#6");
\r
416 Assert.IsTrue (cmd.DesignTimeVisible, "#7");
\r
417 Assert.IsNull (cmd.Notification, "#8");
\r
418 Assert.IsTrue (cmd.NotificationAutoEnlist, "#9");
\r
419 Assert.IsNotNull (cmd.Parameters, "#10");
\r
420 Assert.AreEqual (0, cmd.Parameters.Count, "#11");
\r
421 Assert.IsNull (cmd.Site, "#12");
\r
422 Assert.IsNull (cmd.Transaction, "#13");
\r
423 Assert.AreEqual (UpdateRowSource.Both, cmd.UpdatedRowSource, "#14");
\r
427 public void Dispose ()
\r
429 SqlConnection cn = new SqlConnection ("Server=SQLSRV;Database=master;Timeout=25;Packet Size=512;Workstation ID=DUMMY");
\r
432 Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
\r
433 Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
\r
434 Assert.AreEqual (string.Empty, cn.Database, "#3");
\r
435 Assert.AreEqual (string.Empty, cn.DataSource, "#4");
\r
436 Assert.AreEqual (8000, cn.PacketSize, "#5");
\r
437 Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#6");
\r
438 Assert.AreEqual (ConnectionState.Closed, cn.State, "#7");
\r
441 cn = new SqlConnection ();
\r
446 public void GetSchema_Connection_Closed ()
\r
448 SqlConnection cn = new SqlConnection ();
\r
452 Assert.Fail ("#A1");
\r
453 } catch (InvalidOperationException ex) {
\r
454 // Invalid operation. The connection is closed
\r
455 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
\r
456 Assert.IsNull (ex.InnerException, "#B3");
\r
457 Assert.IsNotNull (ex.Message, "#B4");
\r
461 cn.GetSchema ("Tables");
\r
462 Assert.Fail ("#B1");
\r
463 } catch (InvalidOperationException ex) {
\r
464 // Invalid operation. The connection is closed
\r
465 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
\r
466 Assert.IsNull (ex.InnerException, "#B3");
\r
467 Assert.IsNotNull (ex.Message, "#B4");
\r
471 cn.GetSchema ((string) null);
\r
472 Assert.Fail ("#C1");
\r
473 } catch (InvalidOperationException ex) {
\r
474 // Invalid operation. The connection is closed
\r
475 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
\r
476 Assert.IsNull (ex.InnerException, "#C3");
\r
477 Assert.IsNotNull (ex.Message, "#C4");
\r
481 cn.GetSchema ("Tables", new string [] { "master" });
\r
482 Assert.Fail ("#D1");
\r
483 } catch (InvalidOperationException ex) {
\r
484 // Invalid operation. The connection is closed
\r
485 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
\r
486 Assert.IsNull (ex.InnerException, "#D3");
\r
487 Assert.IsNotNull (ex.Message, "#D4");
\r
491 cn.GetSchema ((string) null, new string [] { "master" });
\r
492 Assert.Fail ("#E1");
\r
493 } catch (InvalidOperationException ex) {
\r
494 // Invalid operation. The connection is closed
\r
495 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
\r
496 Assert.IsNull (ex.InnerException, "#E3");
\r
497 Assert.IsNotNull (ex.Message, "#E4");
\r
501 cn.GetSchema ("Tables", (string []) null);
\r
502 Assert.Fail ("#F1");
\r
503 } catch (InvalidOperationException ex) {
\r
504 // Invalid operation. The connection is closed
\r
505 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
\r
506 Assert.IsNull (ex.InnerException, "#F3");
\r
507 Assert.IsNotNull (ex.Message, "#F4");
\r
511 cn.GetSchema ((string) null, (string []) null);
\r
512 Assert.Fail ("#G1");
\r
513 } catch (InvalidOperationException ex) {
\r
514 // Invalid operation. The connection is closed
\r
515 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
\r
516 Assert.IsNull (ex.InnerException, "#G3");
\r
517 Assert.IsNotNull (ex.Message, "#G4");
\r
522 public void ConnectionString_AsynchronousProcessing ()
\r
524 SqlConnection cn = new SqlConnection ();
\r
525 cn.ConnectionString = "Asynchronous Processing=False";
\r
526 cn.ConnectionString = "Async=True";
\r
530 public void ConnectionString_ConnectTimeout ()
\r
532 SqlConnection cn = new SqlConnection ();
\r
533 cn.ConnectionString = "Connection Timeout=45";
\r
534 Assert.AreEqual (45, cn.ConnectionTimeout, "#1");
\r
535 cn.ConnectionString = "Connect Timeout=40";
\r
536 Assert.AreEqual (40, cn.ConnectionTimeout, "#2");
\r
537 cn.ConnectionString = "Timeout=";
\r
538 Assert.AreEqual (15, cn.ConnectionTimeout, "#3");
\r
539 cn.ConnectionString = "Timeout=2147483647";
\r
540 Assert.AreEqual (int.MaxValue, cn.ConnectionTimeout, "#4");
\r
541 cn.ConnectionString = "Timeout=0";
\r
542 Assert.AreEqual (0, cn.ConnectionTimeout, "#5");
\r
546 public void ConnectionString_ConnectTimeout_Invalid ()
\r
548 SqlConnection cn = new SqlConnection ();
\r
552 cn.ConnectionString = "Connection timeout=-1";
\r
553 Assert.Fail ("#A1");
\r
554 } catch (ArgumentException ex) {
\r
555 // Invalid value for key 'connect timeout'
\r
556 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
557 Assert.IsNull (ex.InnerException, "#A3");
\r
558 Assert.IsNotNull (ex.Message, "#A4");
\r
559 Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#A5:" + ex.Message);
\r
560 Assert.IsNull (ex.ParamName, "#A6");
\r
565 cn.ConnectionString = "connect Timeout=BB";
\r
566 Assert.Fail ("#B1");
\r
567 } catch (ArgumentException ex) {
\r
568 // Invalid value for key 'connect timeout'
\r
569 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
570 Assert.IsNotNull (ex.InnerException, "#B3");
\r
571 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
\r
572 Assert.IsNotNull (ex.Message, "#B5");
\r
573 Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#B6:" + ex.Message);
\r
574 Assert.IsNull (ex.ParamName, "#B7");
\r
576 // Input string was not in a correct format
\r
577 FormatException fe = (FormatException) ex.InnerException;
\r
578 Assert.IsNull (fe.InnerException, "#B8");
\r
579 Assert.IsNotNull (fe.Message, "#B9");
\r
584 cn.ConnectionString = "timeout=2147483648";
\r
585 Assert.Fail ("#C1");
\r
586 } catch (ArgumentException ex) {
\r
587 // Invalid value for key 'connect timeout'
\r
588 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
589 Assert.IsNotNull (ex.InnerException, "#C3");
\r
590 Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
\r
591 Assert.IsNotNull (ex.Message, "#C5");
\r
592 Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#C6:" + ex.Message);
\r
593 Assert.IsNull (ex.ParamName, "#C7");
\r
595 // Value was either too large or too small for an Int32
\r
596 OverflowException oe = (OverflowException) ex.InnerException;
\r
597 Assert.IsNull (oe.InnerException, "#C8");
\r
598 Assert.IsNotNull (oe.Message, "#C9");
\r
603 public void ConnectionString_Database_Synonyms ()
\r
605 SqlConnection cn = null;
\r
607 cn = new SqlConnection ();
\r
608 cn.ConnectionString = "Initial Catalog=db";
\r
609 Assert.AreEqual ("db", cn.Database);
\r
611 cn = new SqlConnection ();
\r
612 cn.ConnectionString = "Database=db";
\r
613 Assert.AreEqual ("db", cn.Database);
\r
617 public void ConnectionString_DataSource_Synonyms ()
\r
619 SqlConnection cn = null;
\r
621 cn = new SqlConnection ();
\r
622 cn.ConnectionString = "Data Source=server";
\r
623 Assert.AreEqual ("server", cn.DataSource);
\r
625 cn = new SqlConnection ();
\r
626 cn.ConnectionString = "addr=server";
\r
627 Assert.AreEqual ("server", cn.DataSource);
\r
629 cn = new SqlConnection ();
\r
630 cn.ConnectionString = "address=server";
\r
631 Assert.AreEqual ("server", cn.DataSource);
\r
633 cn = new SqlConnection ();
\r
634 cn.ConnectionString = "network address=server";
\r
635 Assert.AreEqual ("server", cn.DataSource);
\r
637 cn = new SqlConnection ();
\r
638 cn.ConnectionString = "server=server";
\r
639 Assert.AreEqual ("server", cn.DataSource);
\r
643 public void ConnectionString_MaxPoolSize ()
\r
645 SqlConnection cn = new SqlConnection ();
\r
646 cn.ConnectionString = "Max Pool Size=2147483647";
\r
647 cn.ConnectionString = "Max Pool Size=1";
\r
648 cn.ConnectionString = "Max Pool Size=500";
\r
652 public void ConnectionString_MaxPoolSize_Invalid ()
\r
654 SqlConnection cn = new SqlConnection ();
\r
658 cn.ConnectionString = "Max Pool Size=-1";
\r
659 Assert.Fail ("#A1");
\r
660 } catch (ArgumentException ex) {
\r
661 // Invalid value for key 'max pool size'
\r
662 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
663 Assert.IsNull (ex.InnerException, "#A3");
\r
664 Assert.IsNotNull (ex.Message, "#A4");
\r
665 Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#A5:" + ex.Message);
\r
666 Assert.IsNull (ex.ParamName, "#A6");
\r
671 cn.ConnectionString = "max Pool size=BB";
\r
672 Assert.Fail ("#B1");
\r
673 } catch (ArgumentException ex) {
\r
674 // Invalid value for key 'max pool size'
\r
675 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
676 Assert.IsNotNull (ex.InnerException, "#B3");
\r
677 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
\r
678 Assert.IsNotNull (ex.Message, "#B5");
\r
679 Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#B6:" + ex.Message);
\r
680 Assert.IsNull (ex.ParamName, "#B7");
\r
682 // Input string was not in a correct format
\r
683 FormatException fe = (FormatException) ex.InnerException;
\r
684 Assert.IsNull (fe.InnerException, "#B8");
\r
685 Assert.IsNotNull (fe.Message, "#B9");
\r
690 cn.ConnectionString = "max pool size=2147483648";
\r
691 Assert.Fail ("#C1");
\r
692 } catch (ArgumentException ex) {
\r
693 // Invalid value for key 'max pool size'
\r
694 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
695 Assert.IsNotNull (ex.InnerException, "#C3");
\r
696 Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
\r
697 Assert.IsNotNull (ex.Message, "#C5");
\r
698 Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#C6:" + ex.Message);
\r
699 Assert.IsNull (ex.ParamName, "#C7");
\r
701 // Value was either too large or too small for an Int32
\r
702 OverflowException oe = (OverflowException) ex.InnerException;
\r
703 Assert.IsNull (oe.InnerException, "#C8");
\r
704 Assert.IsNotNull (oe.Message, "#C9");
\r
707 // less than minimum (1)
\r
709 cn.ConnectionString = "Min Pool Size=0;Max Pool Size=0";
\r
710 Assert.Fail ("#D1");
\r
711 } catch (ArgumentException ex) {
\r
712 // Invalid value for key 'max pool size'
\r
713 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
\r
714 Assert.IsNull (ex.InnerException, "#D3");
\r
715 Assert.IsNotNull (ex.Message, "#D4");
\r
716 Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#D5:" + ex.Message);
\r
717 Assert.IsNull (ex.ParamName, "#D6");
\r
720 // less than min pool size
\r
722 cn.ConnectionString = "Min Pool Size=5;Max Pool Size=4";
\r
723 Assert.Fail ("#E1");
\r
724 } catch (ArgumentException ex) {
\r
725 // Invalid min or max pool size values, min
\r
726 // pool size cannot be greater than the max
\r
728 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
\r
729 Assert.IsNull (ex.InnerException, "#E3");
\r
730 Assert.IsNotNull (ex.Message, "#E4");
\r
731 Assert.IsNull (ex.ParamName, "#E5");
\r
736 public void ConnectionString_MinPoolSize ()
\r
738 SqlConnection cn = new SqlConnection ();
\r
739 cn.ConnectionString = "min Pool size=0";
\r
740 cn.ConnectionString = "Min Pool size=100";
\r
741 cn.ConnectionString = "Min Pool Size=2147483647;Max Pool Size=2147483647";
\r
745 public void ConnectionString_MinPoolSize_Invalid ()
\r
747 SqlConnection cn = new SqlConnection ();
\r
751 cn.ConnectionString = "Min Pool Size=-1";
\r
752 Assert.Fail ("#A1");
\r
753 } catch (ArgumentException ex) {
\r
754 // Invalid value for key 'min pool size'
\r
755 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
756 Assert.IsNull (ex.InnerException, "#A3");
\r
757 Assert.IsNotNull (ex.Message, "#A4");
\r
758 Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#A5:" + ex.Message);
\r
759 Assert.IsNull (ex.ParamName, "#A6");
\r
764 cn.ConnectionString = "min Pool size=BB";
\r
765 Assert.Fail ("#B1");
\r
766 } catch (ArgumentException ex) {
\r
767 // Invalid value for key 'min pool size'
\r
768 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
769 Assert.IsNotNull (ex.InnerException, "#B3");
\r
770 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
\r
771 Assert.IsNotNull (ex.Message, "#B5");
\r
772 Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#B6:" + ex.Message);
\r
773 Assert.IsNull (ex.ParamName, "#B7");
\r
775 // Input string was not in a correct format
\r
776 FormatException fe = (FormatException) ex.InnerException;
\r
777 Assert.IsNull (fe.InnerException, "#B8");
\r
778 Assert.IsNotNull (fe.Message, "#B9");
\r
783 cn.ConnectionString = "min pool size=2147483648";
\r
784 Assert.Fail ("#C1");
\r
785 } catch (ArgumentException ex) {
\r
786 // Invalid value for key 'min pool size'
\r
787 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
788 Assert.IsNotNull (ex.InnerException, "#C3");
\r
789 Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
\r
790 Assert.IsNotNull (ex.Message, "#C5");
\r
791 Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#C6:" + ex.Message);
\r
792 Assert.IsNull (ex.ParamName, "#C7");
\r
794 // Value was either too large or too small for an Int32
\r
795 OverflowException oe = (OverflowException) ex.InnerException;
\r
796 Assert.IsNull (oe.InnerException, "#C8");
\r
797 Assert.IsNotNull (oe.Message, "#C9");
\r
802 public void ConnectionString_MultipleActiveResultSets ()
\r
804 SqlConnection cn = new SqlConnection ();
\r
805 cn.ConnectionString = "MultipleActiveResultSets=true";
\r
809 public void ConnectionString_MultipleActiveResultSets_Invalid ()
\r
811 SqlConnection cn = new SqlConnection ();
\r
813 cn.ConnectionString = "MultipleActiveResultSets=1";
\r
814 Assert.Fail ("#1");
\r
815 } catch (ArgumentException ex) {
\r
816 // Invalid value for key 'multipleactiveresultsets'
\r
817 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
818 Assert.IsNull (ex.InnerException, "#3");
\r
819 Assert.IsNotNull (ex.Message, "#4");
\r
820 Assert.IsTrue (ex.Message.IndexOf ("'multipleactiveresultsets'") != -1, "#5:" + ex.Message);
\r
821 Assert.IsNull (ex.ParamName, "#6");
\r
826 public void ConnectionString_NetworkLibrary_Synonyms ()
\r
828 SqlConnection cn = new SqlConnection ();
\r
829 cn.ConnectionString = "Net=DBMSSOCN";
\r
830 cn.ConnectionString = "Network=DBMSSOCN";
\r
831 cn.ConnectionString = "Network library=DBMSSOCN";
\r
835 public void ConnectionString_PacketSize ()
\r
837 SqlConnection cn = new SqlConnection ();
\r
838 cn.ConnectionString = "Packet Size=1024";
\r
839 Assert.AreEqual (1024, cn.PacketSize, "#1");
\r
840 cn.ConnectionString = "packet SizE=533";
\r
841 Assert.AreEqual (533, cn.PacketSize, "#2");
\r
842 cn.ConnectionString = "packet SizE=512";
\r
843 Assert.AreEqual (512, cn.PacketSize, "#3");
\r
844 cn.ConnectionString = "packet SizE=32768";
\r
845 Assert.AreEqual (32768, cn.PacketSize, "#4");
\r
846 cn.ConnectionString = "packet Size=";
\r
847 Assert.AreEqual (8000, cn.PacketSize, "#5");
\r
851 public void ConnectionString_PacketSize_Invalid ()
\r
853 SqlConnection cn = new SqlConnection ();
\r
855 // invalid packet size (< minimum)
\r
857 cn.ConnectionString = "Packet Size=511";
\r
858 Assert.Fail ("#A1");
\r
859 } catch (ArgumentException ex) {
\r
860 // Invalid 'Packet Size'. The value must be an
\r
861 // integer >= 512 and <= 32768
\r
862 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
863 Assert.IsNull (ex.InnerException, "#A3");
\r
864 Assert.IsNotNull (ex.Message, "#A4");
\r
865 Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#A5:" + ex.Message);
\r
866 Assert.IsNull (ex.ParamName, "#A6");
\r
869 // invalid packet size (> maximum)
\r
871 cn.ConnectionString = "packet SIze=32769";
\r
872 Assert.Fail ("#B1");
\r
873 } catch (ArgumentException ex) {
\r
874 // Invalid 'Packet Size'. The value must be an
\r
875 // integer >= 512 and <= 32768
\r
876 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
877 Assert.IsNull (ex.InnerException, "#B3");
\r
878 Assert.IsNotNull (ex.Message, "#B4");
\r
879 Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#B5:" + ex.Message);
\r
880 Assert.IsNull (ex.ParamName, "#B6");
\r
885 cn.ConnectionString = "packet SIze=2147483648";
\r
886 Assert.Fail ("#C1");
\r
887 } catch (ArgumentException ex) {
\r
888 // Invalid value for key 'packet size'
\r
889 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
890 Assert.IsNotNull (ex.InnerException, "#C3");
\r
891 Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
\r
892 Assert.IsNotNull (ex.Message, "#C5");
\r
893 Assert.IsTrue (ex.Message.IndexOf ("'packet size'") != -1, "#C6:" + ex.Message);
\r
894 Assert.IsNull (ex.ParamName, "#C7");
\r
896 // Value was either too large or too small for an Int32
\r
897 OverflowException oe = (OverflowException) ex.InnerException;
\r
898 Assert.IsNull (oe.InnerException, "#C8");
\r
899 Assert.IsNotNull (oe.Message, "#C9");
\r
904 public void ConnectionString_Password_Synonyms ()
\r
906 SqlConnection cn = new SqlConnection ();
\r
907 cn.ConnectionString = "Password=scrambled";
\r
908 cn.ConnectionString = "Pwd=scrambled";
\r
912 public void ConnectionString_PersistSecurityInfo_Synonyms ()
\r
914 SqlConnection cn = new SqlConnection ();
\r
915 cn.ConnectionString = "Persist Security Info=true";
\r
916 cn.ConnectionString = "PersistSecurityInfo=true";
\r
920 public void ConnectionString_UserID_Synonyms ()
\r
922 SqlConnection cn = new SqlConnection ();
\r
923 cn.ConnectionString = "User Id=test";
\r
924 cn.ConnectionString = "User=test";
\r
925 cn.ConnectionString = "Uid=test";
\r
929 public void ConnectionString_UserInstance ()
\r
931 SqlConnection cn = new SqlConnection ();
\r
932 cn.ConnectionString = "User Instance=true";
\r
936 public void ConnectionString_UserInstance_Invalid ()
\r
938 SqlConnection cn = new SqlConnection ();
\r
940 cn.ConnectionString = "User Instance=1";
\r
941 Assert.Fail ("#1");
\r
942 } catch (ArgumentException ex) {
\r
943 // Invalid value for key 'user instance'
\r
944 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
945 Assert.IsNull (ex.InnerException, "#3");
\r
946 Assert.IsNotNull (ex.Message, "#4");
\r
947 Assert.IsTrue (ex.Message.IndexOf ("'user instance'") != -1, "#5:" + ex.Message);
\r
948 Assert.IsNull (ex.ParamName, "#6");
\r
953 public void ConnectionString_OtherKeywords ()
\r
955 SqlConnection cn = new SqlConnection ();
\r
956 cn.ConnectionString = "Application Name=test";
\r
957 cn.ConnectionString = "App=test";
\r
958 cn.ConnectionString = "Connection Reset=true";
\r
959 cn.ConnectionString = "Current Language=test";
\r
960 cn.ConnectionString = "Language=test";
\r
961 cn.ConnectionString = "Encrypt=false";
\r
962 //cn.ConnectionString = "Encrypt=true";
\r
963 //cn.ConnectionString = "Enlist=false";
\r
964 cn.ConnectionString = "Enlist=true";
\r
965 cn.ConnectionString = "Integrated Security=true";
\r
966 cn.ConnectionString = "Trusted_connection=true";
\r
967 cn.ConnectionString = "Max Pool Size=10";
\r
968 cn.ConnectionString = "Min Pool Size=10";
\r
969 cn.ConnectionString = "Pooling=true";
\r
970 cn.ConnectionString = "attachdbfilename=dunno";
\r
971 cn.ConnectionString = "extended properties=dunno";
\r
972 cn.ConnectionString = "initial file name=dunno";
\r
976 public void Open_ConnectionString_Empty ()
\r
978 SqlConnection cn = new SqlConnection ();
\r
979 cn.ConnectionString = string.Empty;
\r
983 Assert.Fail ("#1");
\r
984 } catch (InvalidOperationException ex) {
\r
985 // The ConnectionString property has not been
\r
987 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
\r
988 Assert.IsNull (ex.InnerException, "#3");
\r
989 Assert.IsNotNull (ex.Message, "#4");
\r
994 public void Open_ConnectionString_Null ()
\r
996 SqlConnection cn = new SqlConnection ();
\r
997 cn.ConnectionString = null;
\r
1001 Assert.Fail ("#1");
\r
1002 } catch (InvalidOperationException ex) {
\r
1003 // The ConnectionString property has not been
\r
1005 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
\r
1006 Assert.IsNull (ex.InnerException, "#3");
\r
1007 Assert.IsNotNull (ex.Message, "#4");
\r
1012 public void Open_ConnectionString_Whitespace ()
\r
1014 SqlConnection cn = new SqlConnection ();
\r
1015 cn.ConnectionString = " ";
\r
1019 Assert.Fail ("#1");
\r
1020 } catch (InvalidOperationException ex) {
\r
1021 // The ConnectionString property has not been
\r
1023 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
\r
1024 Assert.IsNull (ex.InnerException, "#3");
\r
1025 Assert.IsNotNull (ex.Message, "#4");
\r
1030 public void ServerVersion_Connection_Closed ()
\r
1032 SqlConnection cn = new SqlConnection ();
\r
1034 Assert.Fail ("#A1:" + cn.ServerVersion);
\r
1035 } catch (InvalidOperationException ex) {
\r
1036 // Invalid operation. The connection is closed
\r
1037 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
\r
1038 Assert.IsNull (ex.InnerException, "#A3");
\r
1039 Assert.IsNotNull (ex.Message, "#A4");
\r
1042 cn = new SqlConnection ("server=SQLSRV; database=Mono;");
\r
1044 Assert.Fail ("#B1:" + cn.ServerVersion);
\r
1045 } catch (InvalidOperationException ex) {
\r
1046 // Invalid operation. The connection is closed
\r
1047 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
\r
1048 Assert.IsNull (ex.InnerException, "#B3");
\r
1049 Assert.IsNotNull (ex.Message, "#B4");
\r