1 // DbConnectionStringBuilderTest.cs - NUnit Test Cases for Testing the
2 // DbConnectionStringBuilder class
5 // Sureshkumar T (tsureshkumar@novell.com)
6 // Daniel Morgan (monodanmorg@yahoo.com)
7 // Gert Driesen (drieseng@users.sourceforge.net
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
10 // Copyright (C) 2008 Daniel Morgan
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 #region Using directives
36 using System.Collections;
37 using System.Collections.Generic;
38 using System.Collections.Specialized;
39 using System.ComponentModel;
41 using System.Data.Common;
42 using System.Data.SqlClient;
43 using System.Reflection;
46 using NUnit.Framework;
50 namespace MonoTests.System.Data.Common
53 public class DbConnectionStringBuilderTest
55 private DbConnectionStringBuilder builder = null;
56 private const string SERVER = "SERVER";
57 private const string SERVER_VALUE = "localhost";
62 builder = new DbConnectionStringBuilder ();
68 builder.Add ("driverid", "420");
69 builder.Add ("driverid", "560");
70 builder.Add ("DriverID", "840");
71 Assert.AreEqual ("840", builder ["driverId"], "#A1");
72 Assert.IsTrue (builder.ContainsKey ("driverId"), "#A2");
73 builder.Add ("Driver", "OdbcDriver");
74 Assert.AreEqual ("OdbcDriver", builder ["Driver"], "#B1");
75 Assert.IsTrue (builder.ContainsKey ("Driver"), "#B2");
76 builder.Add ("Driver", "{OdbcDriver");
77 Assert.AreEqual ("{OdbcDriver", builder ["Driver"], "#C1");
78 Assert.IsTrue (builder.ContainsKey ("Driver"), "#C2");
79 builder.Add ("Dsn", "MyDsn");
80 Assert.AreEqual ("MyDsn", builder ["Dsn"], "#D1");
81 Assert.IsTrue (builder.ContainsKey ("Dsn"), "#D2");
82 builder.Add ("dsN", "MyDsn2");
83 Assert.AreEqual ("MyDsn2", builder ["Dsn"], "#E1");
84 Assert.IsTrue (builder.ContainsKey ("Dsn"), "#E2");
88 public void Add_Keyword_Invalid ()
90 string [] invalid_keywords = new string [] {
101 for (int i = 0; i < invalid_keywords.Length; i++) {
102 string keyword = invalid_keywords [i];
104 builder.Add (keyword, "abc");
105 Assert.Fail ("#1:" + i);
106 } catch (ArgumentException ex) {
107 // Invalid keyword, contain one or more of 'no characters',
108 // 'control characters', 'leading or trailing whitespace'
109 // or 'leading semicolons'
110 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2:"+ i);
111 Assert.IsNull (ex.InnerException, "#3:" + i);
112 Assert.IsNotNull (ex.Message, "#4:" + i);
113 Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") == -1, "#5:" + i);
114 Assert.AreEqual (keyword, ex.ParamName, "#6:" + i);
120 public void Add_Keyword_Null ()
123 builder.Add (null, "abc");
125 } catch (ArgumentNullException ex) {
126 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
127 Assert.IsNull (ex.InnerException, "#3");
128 Assert.IsNotNull (ex.Message, "#4");
129 Assert.AreEqual ("keyword", ex.ParamName, "#5");
134 public void ConnectionString ()
136 DbConnectionStringBuilder sb;
138 sb = new DbConnectionStringBuilder ();
139 sb.ConnectionString = "A=B";
140 Assert.IsTrue (sb.ContainsKey ("A"), "#A1");
141 Assert.AreEqual ("a=B", sb.ConnectionString, "#A2");
142 Assert.AreEqual (1, sb.Count, "#A3");
143 Assert.AreEqual (1, sb.Keys.Count, "#A4");
145 sb.ConnectionString = null;
146 Assert.IsFalse (sb.ContainsKey ("A"), "#B1");
147 Assert.AreEqual (string.Empty, sb.ConnectionString, "#B2");
148 Assert.AreEqual (0, sb.Count, "#B3");
149 Assert.AreEqual (0, sb.Keys.Count, "#B4");
151 sb = new DbConnectionStringBuilder ();
152 sb.ConnectionString = "A=B";
153 sb.ConnectionString = string.Empty;
154 Assert.IsFalse (sb.ContainsKey ("A"), "#C1");
155 Assert.AreEqual (string.Empty, sb.ConnectionString, "#C2");
156 Assert.AreEqual (0, sb.Count, "#C3");
157 Assert.AreEqual (0, sb.Keys.Count, "#C4");
159 sb = new DbConnectionStringBuilder ();
160 sb.ConnectionString = "A=B";
161 sb.ConnectionString = "\r ";
162 Assert.IsFalse (sb.ContainsKey ("A"), "#D1");
163 Assert.AreEqual (string.Empty, sb.ConnectionString, "#D2");
164 Assert.AreEqual (0, sb.Count, "#D3");
165 Assert.AreEqual (0, sb.Keys.Count, "#D4");
169 public void ConnectionString_Value_Empty ()
171 DbConnectionStringBuilder [] sbs = new DbConnectionStringBuilder [] {
172 new DbConnectionStringBuilder (),
173 new DbConnectionStringBuilder (false),
174 new DbConnectionStringBuilder (true)
177 foreach (DbConnectionStringBuilder sb in sbs) {
178 sb.ConnectionString = "A=";
179 Assert.IsFalse (sb.ContainsKey ("A"), "#1");
180 Assert.AreEqual (string.Empty, sb.ConnectionString, "#2");
181 Assert.AreEqual (0, sb.Count, "#3");
188 DbConnectionStringBuilder [] sbs = new DbConnectionStringBuilder [] {
189 new DbConnectionStringBuilder (),
190 new DbConnectionStringBuilder (false),
191 new DbConnectionStringBuilder (true)
194 foreach (DbConnectionStringBuilder sb in sbs) {
195 sb ["Dbq"] = "C:\\Data.xls";
196 sb ["Driver"] = "790";
197 sb.Add ("Port", "56");
199 Assert.AreEqual (string.Empty, sb.ConnectionString, "#1");
200 Assert.IsFalse (sb.ContainsKey ("Dbq"), "#2");
201 Assert.IsFalse (sb.ContainsKey ("Driver"), "#3");
202 Assert.IsFalse (sb.ContainsKey ("Port"), "#4");
203 Assert.AreEqual (0, sb.Count, "#5");
204 Assert.AreEqual (0, sb.Keys.Count, "#6");
205 Assert.AreEqual (0, sb.Values.Count, "#7");
210 public void AddDuplicateTest ()
212 builder.Add (SERVER, SERVER_VALUE);
213 builder.Add (SERVER, SERVER_VALUE);
214 // should allow duplicate addition. rather, it should re-assign
215 Assert.AreEqual (SERVER + "=" + SERVER_VALUE, builder.ConnectionString,
216 "Duplicates addition does not change the value!");
220 public void Indexer ()
222 builder ["abc Def"] = "xa 34";
223 Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
224 Assert.AreEqual ("abc Def=\"xa 34\"", builder.ConnectionString, "#A2");
225 builder ["na;"] = "abc;";
226 Assert.AreEqual ("abc;", builder ["na;"], "#B1");
227 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"abc;\"", builder.ConnectionString, "#B2");
228 builder ["Na;"] = "de\rfg";
229 Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
230 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\"", builder.ConnectionString, "#C2");
231 builder ["val"] = ";xyz";
232 Assert.AreEqual (";xyz", builder ["val"], "#D1");
233 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\"", builder.ConnectionString, "#D2");
234 builder ["name"] = string.Empty;
235 Assert.AreEqual (string.Empty, builder ["name"], "#E1");
236 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=", builder.ConnectionString, "#E2");
237 builder ["name"] = " ";
238 Assert.AreEqual (" ", builder ["name"], "#F1");
239 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=\" \"", builder.ConnectionString, "#F2");
241 builder = new DbConnectionStringBuilder (false);
242 builder ["abc Def"] = "xa 34";
243 Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
244 Assert.AreEqual ("abc Def=\"xa 34\"", builder.ConnectionString, "#A2");
245 builder ["na;"] = "abc;";
246 Assert.AreEqual ("abc;", builder ["na;"], "#B1");
247 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"abc;\"", builder.ConnectionString, "#B2");
248 builder ["Na;"] = "de\rfg";
249 Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
250 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\"", builder.ConnectionString, "#C2");
251 builder ["val"] = ";xyz";
252 Assert.AreEqual (";xyz", builder ["val"], "#D1");
253 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\"", builder.ConnectionString, "#D2");
254 builder ["name"] = string.Empty;
255 Assert.AreEqual (string.Empty, builder ["name"], "#E1");
256 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=", builder.ConnectionString, "#E2");
257 builder ["name"] = " ";
258 Assert.AreEqual (" ", builder ["name"], "#F1");
259 Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=\" \"", builder.ConnectionString, "#F2");
261 builder = new DbConnectionStringBuilder (true);
262 builder ["abc Def"] = "xa 34";
263 Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
264 Assert.AreEqual ("abc Def=xa 34", builder.ConnectionString, "#A2");
265 builder ["na;"] = "abc;";
266 Assert.AreEqual ("abc;", builder ["na;"], "#B1");
267 Assert.AreEqual ("abc Def=xa 34;na;={abc;}", builder.ConnectionString, "#B2");
268 builder ["Na;"] = "de\rfg";
269 Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
270 Assert.AreEqual ("abc Def=xa 34;na;=de\rfg", builder.ConnectionString, "#C2");
271 builder ["val"] = ";xyz";
272 Assert.AreEqual (";xyz", builder ["val"], "#D1");
273 Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz}", builder.ConnectionString, "#D2");
274 builder ["name"] = string.Empty;
275 Assert.AreEqual (string.Empty, builder ["name"], "#E1");
276 Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz};name=", builder.ConnectionString, "#E2");
277 builder ["name"] = " ";
278 Assert.AreEqual (" ", builder ["name"], "#F1");
279 Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz};name= ", builder.ConnectionString, "#F2");
283 public void Indexer_Keyword_Invalid ()
285 string [] invalid_keywords = new string [] {
296 for (int i = 0; i < invalid_keywords.Length; i++) {
297 string keyword = invalid_keywords [i];
299 builder [keyword] = "abc";
300 Assert.Fail ("#A1:" + i);
301 } catch (ArgumentException ex) {
302 // Invalid keyword, contain one or more of 'no characters',
303 // 'control characters', 'leading or trailing whitespace'
304 // or 'leading semicolons'
305 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2:"+ i);
306 Assert.IsNull (ex.InnerException, "#A3:" + i);
307 Assert.IsNotNull (ex.Message, "#A4:" + i);
308 Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") == -1, "#A5:" + i);
309 Assert.AreEqual (keyword, ex.ParamName, "#A6:" + i);
312 builder [keyword] = null;
313 Assert.IsFalse (builder.ContainsKey (keyword), "#B");
316 object value = builder [keyword];
317 Assert.Fail ("#C1:" + i);
318 } catch (ArgumentException ex) {
319 // Keyword not supported: '...'
320 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2:"+ i);
321 Assert.IsNull (ex.InnerException, "#C3:" + i);
322 Assert.IsNotNull (ex.Message, "#C4:" + i);
323 Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") != -1, "#C5:" + i);
324 Assert.IsNull (ex.ParamName, "#C6:" + i);
330 public void Indexer_Keyword_NotSupported ()
333 object value = builder ["abc"];
335 } catch (ArgumentException ex) {
336 // Keyword not supported: 'abc'
337 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
338 Assert.IsNull (ex.InnerException, "#3");
339 Assert.IsNotNull (ex.Message, "#4");
340 Assert.IsTrue (ex.Message.IndexOf ("'abc'") != -1, "#5");
341 Assert.IsNull (ex.ParamName, "#6");
346 public void Indexer_Keyword_Null ()
349 builder [null] = "abc";
351 } catch (ArgumentNullException ex) {
352 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
353 Assert.IsNull (ex.InnerException, "#A3");
354 Assert.IsNotNull (ex.Message, "#A4");
355 Assert.AreEqual ("keyword", ex.ParamName, "#A5");
359 builder [null] = null;
361 } catch (ArgumentNullException ex) {
362 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
363 Assert.IsNull (ex.InnerException, "#B3");
364 Assert.IsNotNull (ex.Message, "#B4");
365 Assert.AreEqual ("keyword", ex.ParamName, "#B5");
369 object value = builder [null];
371 } catch (ArgumentNullException ex) {
372 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#C2");
373 Assert.IsNull (ex.InnerException, "#C3");
374 Assert.IsNotNull (ex.Message, "#C4");
375 Assert.AreEqual ("keyword", ex.ParamName, "#C5");
380 public void Indexer_Value_Null ()
382 builder ["DriverID"] = null;
383 Assert.AreEqual (string.Empty, builder.ConnectionString, "#A1");
385 object value = builder ["DriverID"];
386 Assert.Fail ("#A2:" + value);
387 } catch (ArgumentException ex) {
388 // Keyword not supported: 'DriverID'
389 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A3");
390 Assert.IsNull (ex.InnerException, "#A4");
391 Assert.IsNotNull (ex.Message, "#A5");
392 Assert.IsTrue (ex.Message.IndexOf ("'DriverID'") != -1, "#A6:" + ex.Message);
393 Assert.IsNull (ex.ParamName, "#A7");
395 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#A8");
396 Assert.AreEqual (string.Empty, builder.ConnectionString, "#A9");
398 builder ["DriverID"] = "A";
399 Assert.AreEqual ("DriverID=A", builder.ConnectionString, "#B1");
400 builder ["DriverID"] = null;
401 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
402 Assert.AreEqual (string.Empty, builder.ConnectionString, "#B3");
406 public void Remove ()
408 Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
409 Assert.IsFalse (builder.Remove ("Driver"), "#A2");
410 builder.Add ("DriverID", "790");
411 builder ["DefaultDir"] = "C:\\";
412 Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
413 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
414 Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
415 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
416 Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
417 Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
418 Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
419 Assert.IsFalse (builder.Remove ("userid"), "#B8");
420 Assert.IsFalse (builder.Remove (string.Empty), "#B9");
421 Assert.IsFalse (builder.Remove ("\r"), "#B10");
422 Assert.IsFalse (builder.Remove ("a;"), "#B11");
423 builder ["Dsn"] = "myDsn";
424 Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
425 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
426 Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
427 builder ["Driver"] = "SQL Server";
428 Assert.IsTrue (builder.Remove ("Driver"), "#D1");
429 Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
430 Assert.IsFalse (builder.Remove ("Driver"), "#D3");
432 builder = new DbConnectionStringBuilder (false);
433 Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
434 Assert.IsFalse (builder.Remove ("Driver"), "#A2");
435 builder.Add ("DriverID", "790");
436 builder ["DefaultDir"] = "C:\\";
437 Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
438 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
439 Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
440 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
441 Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
442 Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
443 Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
444 Assert.IsFalse (builder.Remove ("userid"), "#B8");
445 Assert.IsFalse (builder.Remove (string.Empty), "#B9");
446 Assert.IsFalse (builder.Remove ("\r"), "#B10");
447 Assert.IsFalse (builder.Remove ("a;"), "#B11");
448 builder ["Dsn"] = "myDsn";
449 Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
450 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
451 Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
452 builder ["Driver"] = "SQL Server";
453 Assert.IsTrue (builder.Remove ("Driver"), "#D1");
454 Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
455 Assert.IsFalse (builder.Remove ("Driver"), "#D3");
457 builder = new DbConnectionStringBuilder (true);
458 Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
459 Assert.IsFalse (builder.Remove ("Driver"), "#A2");
460 builder.Add ("DriverID", "790");
461 builder ["DefaultDir"] = "C:\\";
462 Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
463 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
464 Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
465 Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
466 Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
467 Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
468 Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
469 Assert.IsFalse (builder.Remove ("userid"), "#B8");
470 Assert.IsFalse (builder.Remove (string.Empty), "#B9");
471 Assert.IsFalse (builder.Remove ("\r"), "#B10");
472 Assert.IsFalse (builder.Remove ("a;"), "#B11");
473 builder ["Dsn"] = "myDsn";
474 Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
475 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
476 Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
477 builder ["Driver"] = "SQL Server";
478 Assert.IsTrue (builder.Remove ("Driver"), "#D1");
479 Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
480 Assert.IsFalse (builder.Remove ("Driver"), "#D3");
484 public void Remove_Keyword_Null ()
487 builder.Remove (null);
489 } catch (ArgumentNullException ex) {
490 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
491 Assert.IsNull (ex.InnerException, "#3");
492 Assert.IsNotNull (ex.Message, "#4");
493 Assert.AreEqual ("keyword", ex.ParamName, "#5");
498 public void ContainsKey ()
500 builder ["SourceType"] = "DBC";
501 builder.Add ("Port", "56");
502 Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
503 Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
504 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
505 Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
506 Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
507 builder ["Dsn"] = "myDsn";
508 Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
509 builder ["Driver"] = "SQL Server";
510 Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
511 builder ["abc"] = "pqr";
512 Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
513 Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
515 builder = new DbConnectionStringBuilder (false);
516 builder ["SourceType"] = "DBC";
517 builder.Add ("Port", "56");
518 Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
519 Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
520 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
521 Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
522 Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
523 builder ["Dsn"] = "myDsn";
524 Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
525 builder ["Driver"] = "SQL Server";
526 Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
527 builder ["abc"] = "pqr";
528 Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
529 Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
531 builder = new DbConnectionStringBuilder (true);
532 builder ["SourceType"] = "DBC";
533 builder.Add ("Port", "56");
534 Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
535 Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
536 Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
537 Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
538 Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
539 builder ["Dsn"] = "myDsn";
540 Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
541 builder ["Driver"] = "SQL Server";
542 Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
543 builder ["abc"] = "pqr";
544 Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
545 Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
549 public void ContainsKey_Keyword_Null ()
551 builder ["SourceType"] = "DBC";
553 builder.ContainsKey (null);
555 } catch (ArgumentNullException ex) {
556 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
557 Assert.IsNull (ex.InnerException, "#3");
558 Assert.IsNotNull (ex.Message, "#4");
559 Assert.AreEqual ("keyword", ex.ParamName, "#5");
564 public void EquivalentToTest ()
566 builder.Add (SERVER, SERVER_VALUE);
567 DbConnectionStringBuilder sb2 = new DbConnectionStringBuilder ();
568 sb2.Add (SERVER, SERVER_VALUE);
569 bool value = builder.EquivalentTo (sb2);
570 Assert.IsTrue (value, "builder comparision does not work!");
573 sb2.Add (SERVER + "1", SERVER_VALUE);
574 value = builder.EquivalentTo (sb2);
575 Assert.IsFalse (value, "builder comparision does not work for not equivalent strings!");
578 [Test] // AppendKeyValuePair (StringBuilder, String, String)
579 public void AppendKeyValuePair1 ()
581 StringBuilder sb = new StringBuilder ();
582 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure");
583 Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A1");
585 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture");
586 Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A2");
588 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture");
589 Assert.AreEqual ("Database='Adven\"ture'", sb.ToString (), "#A3");
591 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"");
592 Assert.AreEqual ("Database='\"Adventure\"'", sb.ToString (), "#A4");
594 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"");
595 Assert.AreEqual ("Database=\"\"\"Adven'ture\"\"\"", sb.ToString (), "#A5");
598 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture");
599 Assert.AreEqual ("Database=\"Adven;ture\"", sb.ToString (), "#B1");
601 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;");
602 Assert.AreEqual ("Database=\"Adventure;\"", sb.ToString (), "#B2");
604 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure");
605 Assert.AreEqual ("Database=\";Adventure\"", sb.ToString (), "#B3");
607 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture");
608 Assert.AreEqual ("Database=\"Adv'en;ture\"", sb.ToString (), "#B4");
610 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture");
611 Assert.AreEqual ("Database='Adv\"en;ture'", sb.ToString (), "#B5");
613 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture");
614 Assert.AreEqual ("Database=\"A'dv\"\"en;ture\"", sb.ToString (), "#B6");
616 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"");
617 Assert.AreEqual ("Database='\"Adven;ture\"'", sb.ToString (), "#B7");
620 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture");
621 Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C1");
623 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture");
624 Assert.AreEqual ("Database=\"Adv'en=ture\"", sb.ToString (), "#C2");
626 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture");
627 Assert.AreEqual ("Database='Adv\"en=ture'", sb.ToString (), "#C3");
629 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture");
630 Assert.AreEqual ("Database=\"A'dv\"\"en=ture\"", sb.ToString (), "#C4");
632 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"");
633 Assert.AreEqual ("Database='\"Adven=ture\"'", sb.ToString (), "#C5");
636 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture");
637 Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D1");
639 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture");
640 Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D2");
642 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure");
643 Assert.AreEqual ("Database={Adventure", sb.ToString (), "#D3");
645 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure");
646 Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D4");
648 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{");
649 Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D5");
651 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}");
652 Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D6");
654 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture");
655 Assert.AreEqual ("Database=\"Adv'en{ture\"", sb.ToString (), "#D7");
657 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture");
658 Assert.AreEqual ("Database=\"Adv'en}ture\"", sb.ToString (), "#D8");
660 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture");
661 Assert.AreEqual ("Database='Adv\"en{ture'", sb.ToString (), "#D9");
663 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture");
664 Assert.AreEqual ("Database='Adv\"en}ture'", sb.ToString (), "#D10");
666 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture");
667 Assert.AreEqual ("Database=\"A'dv\"\"en{ture\"", sb.ToString (), "#D11");
669 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture");
670 Assert.AreEqual ("Database=\"A'dv\"\"en}ture\"", sb.ToString (), "#D12");
672 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"");
673 Assert.AreEqual ("Database='\"Adven{ture\"'", sb.ToString (), "#D13");
675 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"");
676 Assert.AreEqual ("Database='\"Adven}ture\"'", sb.ToString (), "#D14");
679 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure");
680 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost");
681 Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E1");
683 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty);
684 Assert.AreEqual ("Database=", sb.ToString (), "#E2");
686 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null);
687 Assert.AreEqual ("Database=", sb.ToString (), "#E3");
690 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", false);
691 Assert.AreEqual ("Datab==ase=\"Adven=ture\"", sb.ToString (), "#F1");
694 [Test] // AppendKeyValuePair (StringBuilder, String, String)
695 public void AppendKeyValuePair1_Builder_Null ()
698 DbConnectionStringBuilder.AppendKeyValuePair (
699 (StringBuilder) null, "Server",
702 } catch (ArgumentNullException ex) {
703 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
704 Assert.IsNull (ex.InnerException, "#3");
705 Assert.IsNotNull (ex.Message, "#4");
706 Assert.AreEqual ("builder", ex.ParamName, "#5");
710 [Test] // AppendKeyValuePair (StringBuilder, String, String)
711 public void AppendKeyValuePair1_Keyword_Empty ()
713 StringBuilder sb = new StringBuilder ();
715 DbConnectionStringBuilder.AppendKeyValuePair (
716 sb, string.Empty, "localhost");
718 } catch (ArgumentException ex) {
719 // Expecting non-empty string for 'keyName'
721 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
722 Assert.IsNull (ex.InnerException, "#3");
723 Assert.IsNotNull (ex.Message, "#4");
724 Assert.IsNull (ex.ParamName, "#5");
728 [Test] // AppendKeyValuePair (StringBuilder, String, String)
729 public void AppendKeyValuePair1_Keyword_Null ()
731 StringBuilder sb = new StringBuilder ();
733 DbConnectionStringBuilder.AppendKeyValuePair (
734 sb, (string) null, "localhost");
736 } catch (ArgumentNullException ex) {
737 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
738 Assert.IsNull (ex.InnerException, "#3");
739 Assert.IsNotNull (ex.Message, "#4");
740 Assert.AreEqual ("keyName", ex.ParamName, "#5");
744 [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
745 public void AppendKeyValuePair2_UseOdbcRules_False ()
747 StringBuilder sb = new StringBuilder ();
748 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", false);
749 Assert.AreEqual ("Database=\"Adventure Works\"", sb.ToString (), "#A1");
751 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", false);
752 Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A2");
754 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture Works", false);
755 Assert.AreEqual ("Database=\"Adven'ture Works\"", sb.ToString (), "#A3");
757 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture", false);
758 Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A4");
760 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture Works", false);
761 Assert.AreEqual ("Database='Adven\"ture Works'", sb.ToString (), "#A5");
763 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture", false);
764 Assert.AreEqual ("Database='Adven\"ture'", sb.ToString (), "#A6");
766 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure Works\"", false);
767 Assert.AreEqual ("Database='\"Adventure Works\"'", sb.ToString (), "#A7");
769 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"", false);
770 Assert.AreEqual ("Database='\"Adventure\"'", sb.ToString (), "#A8");
772 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture Works\"", false);
773 Assert.AreEqual ("Database=\"\"\"Adven'ture Works\"\"\"", sb.ToString (), "#A9");
775 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"", false);
776 Assert.AreEqual ("Database=\"\"\"Adven'ture\"\"\"", sb.ToString (), "#A10");
779 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture Works", false);
780 Assert.AreEqual ("Database=\"Adven;ture Works\"", sb.ToString (), "#B1");
782 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture", false);
783 Assert.AreEqual ("Database=\"Adven;ture\"", sb.ToString (), "#B2");
785 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works;", false);
786 Assert.AreEqual ("Database=\"Adventure Works;\"", sb.ToString (), "#B3");
788 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;", false);
789 Assert.AreEqual ("Database=\"Adventure;\"", sb.ToString (), "#B4");
791 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure Works", false);
792 Assert.AreEqual ("Database=\";Adventure Works\"", sb.ToString (), "#B5");
794 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure", false);
795 Assert.AreEqual ("Database=\";Adventure\"", sb.ToString (), "#B6");
797 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture Works", false);
798 Assert.AreEqual ("Database=\"Adv'en;ture Works\"", sb.ToString (), "#B7");
800 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture", false);
801 Assert.AreEqual ("Database=\"Adv'en;ture\"", sb.ToString (), "#B8");
803 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture Works", false);
804 Assert.AreEqual ("Database='Adv\"en;ture Works'", sb.ToString (), "#B9");
806 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture", false);
807 Assert.AreEqual ("Database='Adv\"en;ture'", sb.ToString (), "#B10");
809 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture Works", false);
810 Assert.AreEqual ("Database=\"A'dv\"\"en;ture Works\"", sb.ToString (), "#B11");
812 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture", false);
813 Assert.AreEqual ("Database=\"A'dv\"\"en;ture\"", sb.ToString (), "#B12");
815 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture Works\"", false);
816 Assert.AreEqual ("Database='\"Adven;ture Works\"'", sb.ToString (), "#B13");
818 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"", false);
819 Assert.AreEqual ("Database='\"Adven;ture\"'", sb.ToString (), "#B14");
822 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture Works", false);
823 Assert.AreEqual ("Database=\"Adven=ture Works\"", sb.ToString (), "#C1");
825 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture", false);
826 Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C2");
828 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture Works", false);
829 Assert.AreEqual ("Database=\"Adv'en=ture Works\"", sb.ToString (), "#C3");
831 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture", false);
832 Assert.AreEqual ("Database=\"Adv'en=ture\"", sb.ToString (), "#C4");
834 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture Works", false);
835 Assert.AreEqual ("Database='Adv\"en=ture Works'", sb.ToString (), "#C5");
837 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture", false);
838 Assert.AreEqual ("Database='Adv\"en=ture'", sb.ToString (), "#C6");
840 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture Works", false);
841 Assert.AreEqual ("Database=\"A'dv\"\"en=ture Works\"", sb.ToString (), "#C7");
843 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture", false);
844 Assert.AreEqual ("Database=\"A'dv\"\"en=ture\"", sb.ToString (), "#C8");
846 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture Works\"", false);
847 Assert.AreEqual ("Database='\"Adven=ture Works\"'", sb.ToString (), "#C9");
849 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"", false);
850 Assert.AreEqual ("Database='\"Adven=ture\"'", sb.ToString (), "#C10");
853 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture Works", false);
854 Assert.AreEqual ("Database=\"Adven{ture Works\"", sb.ToString (), "#D1");
856 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture", false);
857 Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D2");
859 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture Works", false);
860 Assert.AreEqual ("Database=\"Adven}ture Works\"", sb.ToString (), "#D3");
862 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture", false);
863 Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D4");
865 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works", false);
866 Assert.AreEqual ("Database=\"{Adventure Works\"", sb.ToString (), "#D5");
868 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure", false);
869 Assert.AreEqual ("Database={Adventure", sb.ToString (), "#D6");
871 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure Works", false);
872 Assert.AreEqual ("Database=\"}Adventure Works\"", sb.ToString (), "#D7");
874 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure", false);
875 Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D8");
877 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works{", false);
878 Assert.AreEqual ("Database=\"Adventure Works{\"", sb.ToString (), "#D9");
880 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{", false);
881 Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D10");
883 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works}", false);
884 Assert.AreEqual ("Database=\"Adventure Works}\"", sb.ToString (), "#D11");
886 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}", false);
887 Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D12");
889 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture Works", false);
890 Assert.AreEqual ("Database=\"Adv'en{ture Works\"", sb.ToString (), "#D13");
892 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture", false);
893 Assert.AreEqual ("Database=\"Adv'en{ture\"", sb.ToString (), "#D14");
895 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture Works", false);
896 Assert.AreEqual ("Database=\"Adv'en}ture Works\"", sb.ToString (), "#D15");
898 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture", false);
899 Assert.AreEqual ("Database=\"Adv'en}ture\"", sb.ToString (), "#D16");
901 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture Works", false);
902 Assert.AreEqual ("Database='Adv\"en{ture Works'", sb.ToString (), "#D17");
904 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture", false);
905 Assert.AreEqual ("Database='Adv\"en{ture'", sb.ToString (), "#D18");
907 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture Works", false);
908 Assert.AreEqual ("Database='Adv\"en}ture Works'", sb.ToString (), "#D19");
910 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture", false);
911 Assert.AreEqual ("Database='Adv\"en}ture'", sb.ToString (), "#D20");
913 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture Works", false);
914 Assert.AreEqual ("Database=\"A'dv\"\"en{ture Works\"", sb.ToString (), "#D21");
916 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture", false);
917 Assert.AreEqual ("Database=\"A'dv\"\"en{ture\"", sb.ToString (), "#D22");
919 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture Works", false);
920 Assert.AreEqual ("Database=\"A'dv\"\"en}ture Works\"", sb.ToString (), "#D23");
922 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture", false);
923 Assert.AreEqual ("Database=\"A'dv\"\"en}ture\"", sb.ToString (), "#D24");
925 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture Works\"", false);
926 Assert.AreEqual ("Database='\"Adven{ture Works\"'", sb.ToString (), "#D25");
928 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"", false);
929 Assert.AreEqual ("Database='\"Adven{ture\"'", sb.ToString (), "#D26");
931 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture Works\"", false);
932 Assert.AreEqual ("Database='\"Adven}ture Works\"'", sb.ToString (), "#D27");
934 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"", false);
935 Assert.AreEqual ("Database='\"Adven}ture\"'", sb.ToString (), "#D28");
937 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}}", false);
938 Assert.AreEqual ("Database={{{B}}}", sb.ToString (), "#D33a");
940 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}}", false);
941 Assert.AreEqual ("Driver={{{B}}}", sb.ToString (), "#D33b");
943 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{A{B{C}D}E}", false);
944 Assert.AreEqual ("Database={A{B{C}D}E}", sb.ToString (), "#D33c");
946 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{A{B{C}D}E}", false);
947 Assert.AreEqual ("Driver={A{B{C}D}E}", sb.ToString (), "#D33d");
949 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}", false);
950 Assert.AreEqual ("Database={{{B}}", sb.ToString (), "#D33e");
952 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}", false);
953 Assert.AreEqual ("Driver={{{B}}", sb.ToString (), "#D33f");
955 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}", false);
956 Assert.AreEqual ("Database={{{B}", sb.ToString (), "#D33g");
958 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}", false);
959 Assert.AreEqual ("Driver={{{B}", sb.ToString (), "#D33h");
961 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}", false);
962 Assert.AreEqual ("Database={{B}", sb.ToString (), "#D33i");
964 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}", false);
965 Assert.AreEqual ("Driver={{B}", sb.ToString (), "#D33j");
967 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}", false);
968 Assert.AreEqual ("Database={B}}", sb.ToString (), "#D33k");
970 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}", false);
971 Assert.AreEqual ("Driver={B}}", sb.ToString (), "#D33l");
973 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}C", false);
974 Assert.AreEqual ("Database={B}}C", sb.ToString (), "#D33k");
976 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}C", false);
977 Assert.AreEqual ("Driver={B}}C", sb.ToString (), "#D33l");
979 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A{B}}", false);
980 Assert.AreEqual ("Database=A{B}}", sb.ToString (), "#D33k");
982 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A{B}}", false);
983 Assert.AreEqual ("Driver=A{B}}", sb.ToString (), "#D33l");
985 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", " {B}} ", false);
986 Assert.AreEqual ("Database=\" {B}} \"", sb.ToString (), "#D33k");
988 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", " {B}} ", false);
989 Assert.AreEqual ("Driver=\" {B}} \"", sb.ToString (), "#D33l");
991 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}}", false);
992 Assert.AreEqual ("Database={{B}}", sb.ToString (), "#D33a");
994 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}}", false);
995 Assert.AreEqual ("Driver={{B}}", sb.ToString (), "#D33b");
997 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}}", false);
998 Assert.AreEqual ("Database=}}", sb.ToString (), "#D33a");
1000 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}}", false);
1001 Assert.AreEqual ("Driver=}}", sb.ToString (), "#D33b");
1003 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}", false);
1004 Assert.AreEqual ("Database=}", sb.ToString (), "#D33a");
1006 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}", false);
1007 Assert.AreEqual ("Driver=}", sb.ToString (), "#D33b");
1010 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", false);
1011 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", false);
1012 Assert.AreEqual ("Database=\"Adventure Works\";Server=localhost", sb.ToString (), "#E1");
1014 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", false);
1015 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", false);
1016 Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E2");
1018 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty, false);
1019 Assert.AreEqual ("Database=", sb.ToString (), "#E3");
1021 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null, false);
1022 Assert.AreEqual ("Database=", sb.ToString (), "#E4");
1025 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", false);
1026 Assert.AreEqual ("Datab==ase=\"Adven=ture\"", sb.ToString (), "#F1");
1029 [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
1030 public void AppendKeyValuePair2_UseOdbcRules_True ()
1032 StringBuilder sb = new StringBuilder ();
1033 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", true);
1034 Assert.AreEqual ("Database=Adventure Works", sb.ToString (), "#A1a");
1036 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works", true);
1037 Assert.AreEqual ("Driver={Adventure Works}", sb.ToString (), "#A1b");
1039 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", true);
1040 Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A2a");
1042 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure", true);
1043 Assert.AreEqual ("Driver={Adventure}", sb.ToString (), "#A2b");
1045 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture Works", true);
1046 Assert.AreEqual ("Database=Adven'ture Works", sb.ToString (), "#A3a");
1048 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven'ture Works", true);
1049 Assert.AreEqual ("Driver={Adven'ture Works}", sb.ToString (), "#A3b");
1051 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture", true);
1052 Assert.AreEqual ("Database=Adven'ture", sb.ToString (), "#A4a");
1054 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven'ture", true);
1055 Assert.AreEqual ("Driver={Adven'ture}", sb.ToString (), "#A4b");
1057 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture Works", true);
1058 Assert.AreEqual ("Database=Adven\"ture Works", sb.ToString (), "#A5a");
1060 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven\"ture Works", true);
1061 Assert.AreEqual ("Driver={Adven\"ture Works}", sb.ToString (), "#A5b");
1063 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture", true);
1064 Assert.AreEqual ("Database=Adven\"ture", sb.ToString (), "#A6a");
1066 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven\"ture", true);
1067 Assert.AreEqual ("Driver={Adven\"ture}", sb.ToString (), "#A6b");
1069 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure Works\"", true);
1070 Assert.AreEqual ("Database=\"Adventure Works\"", sb.ToString (), "#A7a");
1072 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adventure Works\"", true);
1073 Assert.AreEqual ("Driver={\"Adventure Works\"}", sb.ToString (), "#A7b");
1075 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"", true);
1076 Assert.AreEqual ("Database=\"Adventure\"", sb.ToString (), "#A8a");
1078 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adventure\"", true);
1079 Assert.AreEqual ("Driver={\"Adventure\"}", sb.ToString (), "#A8b");
1081 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture Works\"", true);
1082 Assert.AreEqual ("Database=\"Adven'ture Works\"", sb.ToString (), "#A9a");
1084 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven'ture Works\"", true);
1085 Assert.AreEqual ("Driver={\"Adven'ture Works\"}", sb.ToString (), "#A9b");
1087 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"", true);
1088 Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A10a");
1090 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven'ture\"", true);
1091 Assert.AreEqual ("Driver={\"Adven'ture\"}", sb.ToString (), "#A10b");
1094 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture Works", true);
1095 Assert.AreEqual ("Database={Adven;ture Works}", sb.ToString (), "#B1a");
1097 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven;ture Works", true);
1098 Assert.AreEqual ("Driver={Adven;ture Works}", sb.ToString (), "#B1b");
1100 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture", true);
1101 Assert.AreEqual ("Database={Adven;ture}", sb.ToString (), "#B2a");
1103 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven;ture", true);
1104 Assert.AreEqual ("Driver={Adven;ture}", sb.ToString (), "#B2b");
1106 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works;", true);
1107 Assert.AreEqual ("Database={Adventure Works;}", sb.ToString (), "#B3a");
1109 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works;", true);
1110 Assert.AreEqual ("Driver={Adventure Works;}", sb.ToString (), "#B3b");
1112 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;", true);
1113 Assert.AreEqual ("Database={Adventure;}", sb.ToString (), "#B4a");
1115 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure;", true);
1116 Assert.AreEqual ("Driver={Adventure;}", sb.ToString (), "#B4b");
1118 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure Works", true);
1119 Assert.AreEqual ("Database={;Adventure Works}", sb.ToString (), "#B5a");
1121 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", ";Adventure Works", true);
1122 Assert.AreEqual ("Driver={;Adventure Works}", sb.ToString (), "#B5b");
1124 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure", true);
1125 Assert.AreEqual ("Database={;Adventure}", sb.ToString (), "#B6a");
1127 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", ";Adventure", true);
1128 Assert.AreEqual ("Driver={;Adventure}", sb.ToString (), "#B6b");
1130 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture Works", true);
1131 Assert.AreEqual ("Database={Adv'en;ture Works}", sb.ToString (), "#B7a");
1133 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en;ture Works", true);
1134 Assert.AreEqual ("Driver={Adv'en;ture Works}", sb.ToString (), "#B7b");
1136 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture", true);
1137 Assert.AreEqual ("Database={Adv'en;ture}", sb.ToString (), "#B8a");
1139 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en;ture", true);
1140 Assert.AreEqual ("Driver={Adv'en;ture}", sb.ToString (), "#B8b");
1142 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture Works", true);
1143 Assert.AreEqual ("Database={Adv\"en;ture Works}", sb.ToString (), "#B9A");
1145 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en;ture Works", true);
1146 Assert.AreEqual ("Driver={Adv\"en;ture Works}", sb.ToString (), "#B9b");
1148 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture", true);
1149 Assert.AreEqual ("Database={Adv\"en;ture}", sb.ToString (), "#B10a");
1151 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en;ture", true);
1152 Assert.AreEqual ("Driver={Adv\"en;ture}", sb.ToString (), "#B10b");
1154 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture Works", true);
1155 Assert.AreEqual ("Database={A'dv\"en;ture Works}", sb.ToString (), "#B11a");
1157 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en;ture Works", true);
1158 Assert.AreEqual ("Driver={A'dv\"en;ture Works}", sb.ToString (), "#B11b");
1160 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture", true);
1161 Assert.AreEqual ("Database={A'dv\"en;ture}", sb.ToString (), "#B12a");
1163 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en;ture", true);
1164 Assert.AreEqual ("Driver={A'dv\"en;ture}", sb.ToString (), "#B12b");
1166 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture Works\"", true);
1167 Assert.AreEqual ("Database={\"Adven;ture Works\"}", sb.ToString (), "#B13a");
1169 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven;ture Works\"", true);
1170 Assert.AreEqual ("Driver={\"Adven;ture Works\"}", sb.ToString (), "#B13b");
1172 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"", true);
1173 Assert.AreEqual ("Database={\"Adven;ture\"}", sb.ToString (), "#B14a");
1175 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven;ture\"", true);
1176 Assert.AreEqual ("Driver={\"Adven;ture\"}", sb.ToString (), "#B14b");
1179 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture Works", true);
1180 Assert.AreEqual ("Database=Adven=ture Works", sb.ToString (), "#C1a");
1182 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven=ture Works", true);
1183 Assert.AreEqual ("Driver={Adven=ture Works}", sb.ToString (), "#C1b");
1185 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture", true);
1186 Assert.AreEqual ("Database=Adven=ture", sb.ToString (), "#C2a");
1188 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven=ture", true);
1189 Assert.AreEqual ("Driver={Adven=ture}", sb.ToString (), "#C2b");
1191 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture Works", true);
1192 Assert.AreEqual ("Database=Adv'en=ture Works", sb.ToString (), "#C3a");
1194 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en=ture Works", true);
1195 Assert.AreEqual ("Driver={Adv'en=ture Works}", sb.ToString (), "#C3b");
1197 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture", true);
1198 Assert.AreEqual ("Database=Adv'en=ture", sb.ToString (), "#C4a");
1200 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en=ture", true);
1201 Assert.AreEqual ("Driver={Adv'en=ture}", sb.ToString (), "#C4b");
1203 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture Works", true);
1204 Assert.AreEqual ("Database=Adv\"en=ture Works", sb.ToString (), "#C5a");
1206 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en=ture Works", true);
1207 Assert.AreEqual ("Driver={Adv\"en=ture Works}", sb.ToString (), "#C5b");
1209 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture", true);
1210 Assert.AreEqual ("Database=Adv\"en=ture", sb.ToString (), "#C6a");
1212 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en=ture", true);
1213 Assert.AreEqual ("Driver={Adv\"en=ture}", sb.ToString (), "#C6b");
1215 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture Works", true);
1216 Assert.AreEqual ("Database=A'dv\"en=ture Works", sb.ToString (), "#C7a");
1218 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en=ture Works", true);
1219 Assert.AreEqual ("Driver={A'dv\"en=ture Works}", sb.ToString (), "#C7b");
1221 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture", true);
1222 Assert.AreEqual ("Database=A'dv\"en=ture", sb.ToString (), "#C8a");
1224 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en=ture", true);
1225 Assert.AreEqual ("Driver={A'dv\"en=ture}", sb.ToString (), "#C8b");
1227 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture Works\"", true);
1228 Assert.AreEqual ("Database=\"Adven=ture Works\"", sb.ToString (), "#C9a");
1230 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven=ture Works\"", true);
1231 Assert.AreEqual ("Driver={\"Adven=ture Works\"}", sb.ToString (), "#C9b");
1233 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"", true);
1234 Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C10a");
1236 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven=ture\"", true);
1237 Assert.AreEqual ("Driver={\"Adven=ture\"}", sb.ToString (), "#C10b");
1240 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture Works", true);
1241 Assert.AreEqual ("Database=Adven{ture Works", sb.ToString (), "#D1a");
1243 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{ture Works", true);
1244 Assert.AreEqual ("Driver={Adven{ture Works}", sb.ToString (), "#D1b");
1246 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{tu}re Works", true);
1247 Assert.AreEqual ("Database=Adven{tu}re Works", sb.ToString (), "#D1c");
1249 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{tu}re Works", true);
1250 Assert.AreEqual ("Driver={Adven{tu}}re Works}", sb.ToString (), "#D1d");
1252 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture", true);
1253 Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D2a");
1255 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{ture", true);
1256 Assert.AreEqual ("Driver={Adven{ture}", sb.ToString (), "#D2b");
1258 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{tu}re", true);
1259 Assert.AreEqual ("Database=Adven{tu}re", sb.ToString (), "#D2c");
1261 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{tu}re", true);
1262 Assert.AreEqual ("Driver={Adven{tu}}re}", sb.ToString (), "#D2d");
1264 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture Works", true);
1265 Assert.AreEqual ("Database=Adven}ture Works", sb.ToString (), "#D3a");
1267 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven}ture Works", true);
1268 Assert.AreEqual ("Driver={Adven}}ture Works}", sb.ToString (), "#D3b");
1270 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture", true);
1271 Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D4a");
1273 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven}ture", true);
1274 Assert.AreEqual ("Driver={Adven}}ture}", sb.ToString (), "#D4b");
1276 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works", true);
1277 Assert.AreEqual ("Database={{Adventure Works}", sb.ToString (), "#D5a");
1279 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure Works", true);
1280 Assert.AreEqual ("Driver={{Adventure Works}", sb.ToString (), "#D5b");
1282 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure", true);
1283 Assert.AreEqual ("Database={{Adventure}", sb.ToString (), "#D6a");
1285 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure", true);
1286 Assert.AreEqual ("Driver={{Adventure}", sb.ToString (), "#D6b");
1288 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works}", true);
1289 Assert.AreEqual ("Database={Adventure Works}", sb.ToString (), "#D7a");
1291 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure Works}", true);
1292 Assert.AreEqual ("Driver={Adventure Works}", sb.ToString (), "#D7b");
1294 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu{re Works}", true);
1295 Assert.AreEqual ("Database={Adventu{re Works}", sb.ToString (), "#D7c");
1297 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu{re Works}", true);
1298 Assert.AreEqual ("Driver={Adventu{re Works}", sb.ToString (), "#D7d");
1300 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu}re Works}", true);
1301 Assert.AreEqual ("Database={{Adventu}}re Works}}}", sb.ToString (), "#D7e");
1303 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu}re Works}", true);
1304 Assert.AreEqual ("Driver={{Adventu}}re Works}}}", sb.ToString (), "#D7f");
1306 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure}", true);
1307 Assert.AreEqual ("Database={Adventure}", sb.ToString (), "#D8a");
1309 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure}", true);
1310 Assert.AreEqual ("Driver={Adventure}", sb.ToString (), "#D8b");
1312 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu{re}", true);
1313 Assert.AreEqual ("Database={Adventu{re}", sb.ToString (), "#D8c");
1315 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu{re}", true);
1316 Assert.AreEqual ("Driver={Adventu{re}", sb.ToString (), "#D8d");
1318 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu}re}", true);
1319 Assert.AreEqual ("Database={{Adventu}}re}}}", sb.ToString (), "#D8e");
1321 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu}re}", true);
1322 Assert.AreEqual ("Driver={{Adventu}}re}}}", sb.ToString (), "#D8f");
1324 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure }Works", true);
1325 Assert.AreEqual ("Database={{Adventure }}Works}", sb.ToString (), "#D9a");
1327 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure }Works", true);
1328 Assert.AreEqual ("Driver={{Adventure }}Works}", sb.ToString (), "#D9b");
1330 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adven}ture", true);
1331 Assert.AreEqual ("Database={{Adven}}ture}", sb.ToString (), "#D10a");
1333 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adven}ture", true);
1334 Assert.AreEqual ("Driver={{Adven}}ture}", sb.ToString (), "#D10b");
1336 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure Works", true);
1337 Assert.AreEqual ("Database=}Adventure Works", sb.ToString (), "#D11a");
1339 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}Adventure Works", true);
1340 Assert.AreEqual ("Driver={}}Adventure Works}", sb.ToString (), "#D11b");
1342 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure", true);
1343 Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D12a");
1345 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}Adventure", true);
1346 Assert.AreEqual ("Driver={}}Adventure}", sb.ToString (), "#D12b");
1348 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works{", true);
1349 Assert.AreEqual ("Database=Adventure Works{", sb.ToString (), "#D13a");
1351 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works{", true);
1352 Assert.AreEqual ("Driver={Adventure Works{}", sb.ToString (), "#D13b");
1354 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{", true);
1355 Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D14a");
1357 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure{", true);
1358 Assert.AreEqual ("Driver={Adventure{}", sb.ToString (), "#D14b");
1360 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works}", true);
1361 Assert.AreEqual ("Database=Adventure Works}", sb.ToString (), "#D15a");
1363 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works}", true);
1364 Assert.AreEqual ("Driver={Adventure Works}}}", sb.ToString (), "#D15b");
1366 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}", true);
1367 Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D16a");
1369 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure}", true);
1370 Assert.AreEqual ("Driver={Adventure}}}", sb.ToString (), "#D16b");
1372 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture Works", true);
1373 Assert.AreEqual ("Database=Adv'en{ture Works", sb.ToString (), "#D17a");
1375 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en{ture Works", true);
1376 Assert.AreEqual ("Driver={Adv'en{ture Works}", sb.ToString (), "#D17b");
1378 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture", true);
1379 Assert.AreEqual ("Database=Adv'en{ture", sb.ToString (), "#D18a");
1381 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en{ture", true);
1382 Assert.AreEqual ("Driver={Adv'en{ture}", sb.ToString (), "#D18b");
1384 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture Works", true);
1385 Assert.AreEqual ("Database=Adv'en}ture Works", sb.ToString (), "#D19a");
1387 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en}ture Works", true);
1388 Assert.AreEqual ("Driver={Adv'en}}ture Works}", sb.ToString (), "#D19b");
1390 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture", true);
1391 Assert.AreEqual ("Database=Adv'en}ture", sb.ToString (), "#D20a");
1393 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en}ture", true);
1394 Assert.AreEqual ("Driver={Adv'en}}ture}", sb.ToString (), "#D20b");
1396 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture Works", true);
1397 Assert.AreEqual ("Database=Adv\"en{ture Works", sb.ToString (), "#D21a");
1399 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en{ture Works", true);
1400 Assert.AreEqual ("Driver={Adv\"en{ture Works}", sb.ToString (), "#D21b");
1402 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture", true);
1403 Assert.AreEqual ("Database=Adv\"en{ture", sb.ToString (), "#D22a");
1405 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en{ture", true);
1406 Assert.AreEqual ("Driver={Adv\"en{ture}", sb.ToString (), "#D22b");
1408 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture Works", true);
1409 Assert.AreEqual ("Database=Adv\"en}ture Works", sb.ToString (), "#D23a");
1411 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en}ture Works", true);
1412 Assert.AreEqual ("Driver={Adv\"en}}ture Works}", sb.ToString (), "#D23b");
1414 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture", true);
1415 Assert.AreEqual ("Database=Adv\"en}ture", sb.ToString (), "#D24a");
1417 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en}ture", true);
1418 Assert.AreEqual ("Driver={Adv\"en}}ture}", sb.ToString (), "#D24b");
1420 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture Works", true);
1421 Assert.AreEqual ("Database=A'dv\"en{ture Works", sb.ToString (), "#D25a");
1423 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en{ture Works", true);
1424 Assert.AreEqual ("Driver={A'dv\"en{ture Works}", sb.ToString (), "#D25b");
1426 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture", true);
1427 Assert.AreEqual ("Database=A'dv\"en{ture", sb.ToString (), "#D26a");
1429 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en{ture", true);
1430 Assert.AreEqual ("Driver={A'dv\"en{ture}", sb.ToString (), "#D26b");
1432 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture Works", true);
1433 Assert.AreEqual ("Database=A'dv\"en}ture Works", sb.ToString (), "#D27a");
1435 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en}ture Works", true);
1436 Assert.AreEqual ("Driver={A'dv\"en}}ture Works}", sb.ToString (), "#D27b");
1438 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture", true);
1439 Assert.AreEqual ("Database=A'dv\"en}ture", sb.ToString (), "#D28a");
1441 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en}ture", true);
1442 Assert.AreEqual ("Driver={A'dv\"en}}ture}", sb.ToString (), "#D28b");
1444 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture Works\"", true);
1445 Assert.AreEqual ("Database=\"Adven{ture Works\"", sb.ToString (), "#D29a");
1447 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven{ture Works\"", true);
1448 Assert.AreEqual ("Driver={\"Adven{ture Works\"}", sb.ToString (), "#D29b");
1450 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"", true);
1451 Assert.AreEqual ("Database=\"Adven{ture\"", sb.ToString (), "#D30a");
1453 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven{ture\"", true);
1454 Assert.AreEqual ("Driver={\"Adven{ture\"}", sb.ToString (), "#D30b");
1456 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture Works\"", true);
1457 Assert.AreEqual ("Database=\"Adven}ture Works\"", sb.ToString (), "#D31a");
1459 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven}ture Works\"", true);
1460 Assert.AreEqual ("Driver={\"Adven}}ture Works\"}", sb.ToString (), "#D31b");
1462 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"", true);
1463 Assert.AreEqual ("Database=\"Adven}ture\"", sb.ToString (), "#D32a");
1465 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven}ture\"", true);
1466 Assert.AreEqual ("Driver={\"Adven}}ture\"}", sb.ToString (), "#D32b");
1468 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}}", true);
1469 Assert.AreEqual ("Database={{{B}}}", sb.ToString (), "#D33a");
1471 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}}", true);
1472 Assert.AreEqual ("Driver={{{B}}}", sb.ToString (), "#D33b");
1474 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{A{B{C}D}E}", true);
1475 Assert.AreEqual ("Database={{A{B{C}}D}}E}}}", sb.ToString (), "#D33c");
1477 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{A{B{C}D}E}", true);
1478 Assert.AreEqual ("Driver={{A{B{C}}D}}E}}}", sb.ToString (), "#D33d");
1480 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}", true);
1481 Assert.AreEqual ("Database={{{{B}}}}}", sb.ToString (), "#D33e");
1483 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}", true);
1484 Assert.AreEqual ("Driver={{{{B}}}}}", sb.ToString (), "#D33f");
1486 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}", true);
1487 Assert.AreEqual ("Database={{{B}", sb.ToString (), "#D33g");
1489 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}", true);
1490 Assert.AreEqual ("Driver={{{B}", sb.ToString (), "#D33h");
1492 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}", true);
1493 Assert.AreEqual ("Database={{B}", sb.ToString (), "#D33i");
1495 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}", true);
1496 Assert.AreEqual ("Driver={{B}", sb.ToString (), "#D33j");
1498 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}", true);
1499 Assert.AreEqual ("Database={{B}}}}}", sb.ToString (), "#D33k");
1501 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}", true);
1502 Assert.AreEqual ("Driver={{B}}}}}", sb.ToString (), "#D33l");
1504 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}C", true);
1505 Assert.AreEqual ("Database={{B}}}}C}", sb.ToString (), "#D33k");
1507 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}C", true);
1508 Assert.AreEqual ("Driver={{B}}}}C}", sb.ToString (), "#D33l");
1510 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A{B}}", true);
1511 Assert.AreEqual ("Database=A{B}}", sb.ToString (), "#D33k");
1513 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A{B}}", true);
1514 Assert.AreEqual ("Driver={A{B}}}}}", sb.ToString (), "#D33l");
1516 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", " {B}} ", true);
1517 Assert.AreEqual ("Database= {B}} ", sb.ToString (), "#D33k");
1519 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", " {B}} ", true);
1520 Assert.AreEqual ("Driver={ {B}}}} }", sb.ToString (), "#D33l");
1522 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}}", true);
1523 Assert.AreEqual ("Database={{{B}}}}}", sb.ToString (), "#D33a");
1525 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}}", true);
1526 Assert.AreEqual ("Driver={{{B}}}}}", sb.ToString (), "#D33b");
1528 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}}", true);
1529 Assert.AreEqual ("Database=}}", sb.ToString (), "#D33a");
1531 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}}", true);
1532 Assert.AreEqual ("Driver={}}}}}", sb.ToString (), "#D33b");
1534 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}", true);
1535 Assert.AreEqual ("Database=}", sb.ToString (), "#D33a");
1537 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}", true);
1538 Assert.AreEqual ("Driver={}}}", sb.ToString (), "#D33b");
1541 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", true);
1542 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
1543 Assert.AreEqual ("Database=Adventure Works;Server=localhost", sb.ToString (), "#E1a", true);
1545 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works", true);
1546 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
1547 Assert.AreEqual ("Driver={Adventure Works};Server=localhost", sb.ToString (), "#E1b", true);
1549 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", true);
1550 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
1551 Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E2a", true);
1553 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure", true);
1554 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
1555 Assert.AreEqual ("Driver={Adventure};Server=localhost", sb.ToString (), "#E2b", true);
1557 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty, true);
1558 Assert.AreEqual ("Database=", sb.ToString (), "#E3a");
1560 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", string.Empty, true);
1561 Assert.AreEqual ("Driver=", sb.ToString (), "#E3a");
1563 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null, true);
1564 Assert.AreEqual ("Database=", sb.ToString (), "#E4a");
1566 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", null, true);
1567 Assert.AreEqual ("Driver=", sb.ToString (), "#E4b");
1570 DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", true);
1571 Assert.AreEqual ("Datab=ase=Adven=ture", sb.ToString (), "#F1");
1574 [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
1575 public void AppendKeyValuePair2_Builder_Null ()
1578 DbConnectionStringBuilder.AppendKeyValuePair (
1579 (StringBuilder) null, "Server",
1581 Assert.Fail ("#A1");
1582 } catch (ArgumentNullException ex) {
1583 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
1584 Assert.IsNull (ex.InnerException, "#A3");
1585 Assert.IsNotNull (ex.Message, "#A4");
1586 Assert.AreEqual ("builder", ex.ParamName, "#A5");
1590 DbConnectionStringBuilder.AppendKeyValuePair (
1591 (StringBuilder) null, "Server",
1592 "localhost", false);
1593 Assert.Fail ("#B1");
1594 } catch (ArgumentNullException ex) {
1595 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
1596 Assert.IsNull (ex.InnerException, "#B3");
1597 Assert.IsNotNull (ex.Message, "#B4");
1598 Assert.AreEqual ("builder", ex.ParamName, "#B5");
1602 [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
1603 public void AppendKeyValuePair2_Keyword_Empty ()
1605 StringBuilder sb = new StringBuilder ();
1607 DbConnectionStringBuilder.AppendKeyValuePair (
1608 sb, string.Empty, "localhost", true);
1609 Assert.Fail ("#A1");
1610 } catch (ArgumentException ex) {
1611 // Expecting non-empty string for 'keyName'
1613 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
1614 Assert.IsNull (ex.InnerException, "#A3");
1615 Assert.IsNotNull (ex.Message, "#A4");
1616 Assert.IsNull (ex.ParamName, "#A5");
1620 DbConnectionStringBuilder.AppendKeyValuePair (
1621 sb, string.Empty, "localhost", false);
1622 Assert.Fail ("#B1");
1623 } catch (ArgumentException ex) {
1624 // Expecting non-empty string for 'keyName'
1626 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
1627 Assert.IsNull (ex.InnerException, "#B3");
1628 Assert.IsNotNull (ex.Message, "#B4");
1629 Assert.IsNull (ex.ParamName, "#B5");
1633 [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
1634 public void AppendKeyValuePair2_Keyword_Null ()
1636 StringBuilder sb = new StringBuilder ();
1638 DbConnectionStringBuilder.AppendKeyValuePair (
1639 sb, (string) null, "localhost", true);
1640 Assert.Fail ("#A1");
1641 } catch (ArgumentNullException ex) {
1642 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
1643 Assert.IsNull (ex.InnerException, "#A3");
1644 Assert.IsNotNull (ex.Message, "#A4");
1645 Assert.AreEqual ("keyName", ex.ParamName, "#A5");
1649 DbConnectionStringBuilder.AppendKeyValuePair (
1650 sb, (string) null, "localhost", false);
1651 Assert.Fail ("#B1");
1652 } catch (ArgumentNullException ex) {
1653 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
1654 Assert.IsNull (ex.InnerException, "#B3");
1655 Assert.IsNotNull (ex.Message, "#B4");
1656 Assert.AreEqual ("keyName", ex.ParamName, "#B5");
1661 public void ToStringTest ()
1663 builder.Add (SERVER, SERVER_VALUE);
1664 string str = builder.ToString ();
1665 string value = builder.ConnectionString;
1666 Assert.AreEqual (value, str,
1667 "ToString shoud return ConnectionString!");
1671 public void ItemTest ()
1673 builder.Add (SERVER, SERVER_VALUE);
1674 string value = (string) builder [SERVER];
1675 Assert.AreEqual (SERVER_VALUE, value,
1676 "Item indexor does not retrun correct value!");
1680 public void ICollectionCopyToTest ()
1682 KeyValuePair<string, object> [] dict = new KeyValuePair<string, object> [2];
1683 builder.Add (SERVER, SERVER_VALUE);
1684 builder.Add (SERVER + "1", SERVER_VALUE + "1");
1688 ((ICollection) builder).CopyTo (dict, 0);
1689 Assert.AreEqual (SERVER, dict [i].Key, "not equal");
1690 Assert.AreEqual (SERVER_VALUE, dict [i].Value, "not equal");
1691 Assert.AreEqual (SERVER + "1", dict [j].Key, "not equal");
1692 Assert.AreEqual (SERVER_VALUE + "1", dict [j].Value, "not equal");
1696 [ExpectedException (typeof (ArgumentException))]
1697 public void NegICollectionCopyToTest ()
1699 KeyValuePair<string, object> [] dict = new KeyValuePair<string, object> [1];
1700 builder.Add (SERVER, SERVER_VALUE);
1701 builder.Add (SERVER + "1", SERVER_VALUE + "1");
1702 ((ICollection) builder).CopyTo (dict, 0);
1703 Assert.Fail ("Exception Destination Array not enough is not thrown!");
1707 public void TryGetValueTest ()
1709 object value = null;
1711 builder ["DriverID"] = "790";
1712 builder.Add ("Server", "C:\\");
1713 Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
1714 Assert.AreEqual ("790", value, "#A2");
1715 Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
1716 Assert.AreEqual ("C:\\", value, "#B2");
1717 Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
1718 Assert.IsNull (value, "#C2");
1719 Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
1720 Assert.IsNull (value, "#D2");
1721 Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
1722 Assert.IsNull (value, "#E2");
1723 Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
1724 Assert.IsNull (value, "#F2");
1725 Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
1726 Assert.IsNull (value, "#G2");
1727 Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
1728 Assert.IsNull (value, "#H2");
1729 Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
1730 Assert.IsNull (value, "#I2");
1732 builder = new DbConnectionStringBuilder (false);
1733 builder ["DriverID"] = "790";
1734 builder.Add ("Server", "C:\\");
1735 Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
1736 Assert.AreEqual ("790", value, "#A2");
1737 Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
1738 Assert.AreEqual ("C:\\", value, "#B2");
1739 Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
1740 Assert.IsNull (value, "#C2");
1741 Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
1742 Assert.IsNull (value, "#D2");
1743 Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
1744 Assert.IsNull (value, "#E2");
1745 Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
1746 Assert.IsNull (value, "#F2");
1747 Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
1748 Assert.IsNull (value, "#G2");
1749 Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
1750 Assert.IsNull (value, "#H2");
1751 Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
1752 Assert.IsNull (value, "#I2");
1754 builder = new DbConnectionStringBuilder (true);
1755 builder ["DriverID"] = "790";
1756 builder.Add ("Server", "C:\\");
1757 Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
1758 Assert.AreEqual ("790", value, "#A2");
1759 Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
1760 Assert.AreEqual ("C:\\", value, "#B2");
1761 Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
1762 Assert.IsNull (value, "#C2");
1763 Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
1764 Assert.IsNull (value, "#D2");
1765 Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
1766 Assert.IsNull (value, "#E2");
1767 Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
1768 Assert.IsNull (value, "#F2");
1769 Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
1770 Assert.IsNull (value, "#G2");
1771 Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
1772 Assert.IsNull (value, "#H2");
1773 Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
1774 Assert.IsNull (value, "#I2");
1778 public void TryGetValue_Keyword_Null ()
1780 object value = null;
1782 builder.TryGetValue (null, out value);
1784 } catch (ArgumentNullException ex) {
1785 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1786 Assert.IsNull (ex.InnerException, "#3");
1787 Assert.IsNotNull (ex.Message, "#4");
1788 Assert.AreEqual ("keyword", ex.ParamName, "#5");
1793 [NUnit.Framework.Category ("MobileNotWorking")] // DefaultMemberAttribute is removed by the tuner, causing #3 to fail
1794 public void ICTD_GetClassNameTest ()
1796 ICustomTypeDescriptor ictd = (ICustomTypeDescriptor) builder;
1797 string className = ictd.GetClassName ();
1798 Assert.AreEqual (builder.GetType ().ToString (), className, "#1");
1800 AttributeCollection collection = ictd.GetAttributes ();
1801 Assert.AreEqual (1, collection.Count, "#2");
1802 object [] attr = builder.GetType ().GetCustomAttributes (typeof (DefaultMemberAttribute), false);
1803 if (attr.Length > 0) {
1804 DefaultMemberAttribute defAtt = (DefaultMemberAttribute) attr [0];
1805 Assert.AreEqual ("Item", defAtt.MemberName, "#3");
1809 string compName = ictd.GetComponentName ();
1810 Assert.IsNull (compName, "#4");
1812 TypeConverter converter = ictd.GetConverter ();
1813 Assert.AreEqual (typeof (CollectionConverter), converter.GetType (), "#5");
1815 EventDescriptor evtDesc = ictd.GetDefaultEvent ();
1816 Assert.IsNull (evtDesc, "#6");
1818 PropertyDescriptor property = ictd.GetDefaultProperty ();
1819 Assert.IsNull (property, "#7");
1823 public void EmbeddedCharTest1 ()
1825 // Notice how the keywords show up in the connection string
1826 // in the order they were added.
1827 // And notice the case of the keyword when added is preserved
1828 // in the connection string.
1830 DbConnectionStringBuilder sb = new DbConnectionStringBuilder ();
1832 sb["Data Source"] = "testdb";
1833 sb["User ID"] = "someuser";
1834 sb["Password"] = "abcdef";
1835 Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=abcdef",
1836 sb.ConnectionString, "cs#1");
1838 sb["Password"] = "abcdef#";
1839 Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=abcdef#",
1840 sb.ConnectionString, "cs#2");
1842 // an embedded single-quote value will result in the value being delimieted with double quotes
1843 sb["Password"] = "abc\'def";
1844 Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\"abc\'def\"",
1845 sb.ConnectionString, "cs#3");
1847 // an embedded double-quote value will result in the value being delimieted with single quotes
1848 sb["Password"] = "abc\"def";
1849 Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\'abc\"def\'",
1850 sb.ConnectionString, "cs#4");
1852 // an embedded single-quote and double-quote in the value
1853 // will result in the value being delimited by double-quotes
1854 // with the embedded double quote being escaped with two double-quotes
1855 sb["Password"] = "abc\"d\'ef";
1856 Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\"abc\"\"d\'ef\"",
1857 sb.ConnectionString, "cs#5");
1859 sb = new DbConnectionStringBuilder ();
1860 sb["PASSWORD"] = "abcdef1";
1861 sb["user id"] = "someuser";
1862 sb["Data Source"] = "testdb";
1863 Assert.AreEqual ("PASSWORD=abcdef1;user id=someuser;Data Source=testdb",
1864 sb.ConnectionString, "cs#6");
1866 // case is preserved for a keyword that was added the first time
1867 sb = new DbConnectionStringBuilder ();
1868 sb["PassWord"] = "abcdef2";
1869 sb["uSER iD"] = "someuser";
1870 sb["DaTa SoUrCe"] = "testdb";
1871 Assert.AreEqual ("PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb",
1872 sb.ConnectionString, "cs#7");
1873 sb["passWORD"] = "abc123";
1874 Assert.AreEqual ("PassWord=abc123;uSER iD=someuser;DaTa SoUrCe=testdb",
1875 sb.ConnectionString, "cs#8");
1877 // embedded equal sign in the value will cause the value to be
1878 // delimited with double-quotes
1879 sb = new DbConnectionStringBuilder ();
1880 sb["Password"] = "abc=def";
1881 sb["Data Source"] = "testdb";
1882 sb["User ID"] = "someuser";
1883 Assert.AreEqual ("Password=\"abc=def\";Data Source=testdb;User ID=someuser",
1884 sb.ConnectionString, "cs#9");
1886 // embedded semicolon in the value will cause the value to be
1887 // delimited with double-quotes
1888 sb = new DbConnectionStringBuilder ();
1889 sb["Password"] = "abc;def";
1890 sb["Data Source"] = "testdb";
1891 sb["User ID"] = "someuser";
1892 Assert.AreEqual ("Password=\"abc;def\";Data Source=testdb;User ID=someuser",
1893 sb.ConnectionString, "cs#10");
1895 // more right parentheses then left parentheses - happily takes it
1896 sb = new DbConnectionStringBuilder();
1897 sb.ConnectionString = "Data Source=(((Blah=Something))))))";
1898 Assert.AreEqual ("data source=\"(((Blah=Something))))))\"",
1899 sb.ConnectionString, "cs#11");
1901 // more left curly braces then right curly braces - happily takes it
1902 sb = new DbConnectionStringBuilder();
1903 sb.ConnectionString = "Data Source={{{{Blah=Something}}";
1904 Assert.AreEqual ("data source=\"{{{{Blah=Something}}\"",
1905 sb.ConnectionString, "cs#12");
1907 // spaces, empty string, null are treated like an empty string
1908 // and any previous settings is cleared
1909 sb.ConnectionString = " ";
1910 Assert.AreEqual (String.Empty,
1911 sb.ConnectionString, "cs#13");
1913 sb.ConnectionString = " ";
1914 Assert.AreEqual (String.Empty,
1915 sb.ConnectionString, "cs#14");
1917 sb.ConnectionString = "";
1918 Assert.AreEqual (String.Empty,
1919 sb.ConnectionString, "cs#15");
1921 sb.ConnectionString = String.Empty;
1922 Assert.AreEqual (String.Empty,
1923 sb.ConnectionString, "cs#16");
1925 sb.ConnectionString = null;
1926 Assert.AreEqual (String.Empty,
1927 sb.ConnectionString, "cs#17");
1929 sb = new DbConnectionStringBuilder();
1930 Assert.AreEqual (String.Empty,
1931 sb.ConnectionString, "cs#18");
1935 public void EmbeddedCharTest2 ()
1937 DbConnectionStringBuilder sb;
1939 sb = new DbConnectionStringBuilder ();
1940 sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
1941 "Trusted_Connection=Yes Or No;Database=Adventure Works;";
1942 Assert.AreEqual ("{SQL Server}", sb["Driver"], "#A1");
1943 Assert.AreEqual ("(local host)", sb["Server"], "#A2");
1944 Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#A3");
1945 Assert.AreEqual ("driver=\"{SQL Server}\";server=\"(local host)\";" +
1946 "trusted_connection=\"Yes Or No\";database=\"Adventure Works\"",
1947 sb.ConnectionString, "#A4");
1949 sb = new DbConnectionStringBuilder ();
1950 sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
1951 "Trusted_Connection=Yes;Database=AdventureWorks;";
1952 Assert.AreEqual ("{SQLServer}", sb["Driver"], "#B1");
1953 Assert.AreEqual ("(local)", sb["Server"], "#B2");
1954 Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#B3");
1955 Assert.AreEqual ("driver={SQLServer};server=(local);" +
1956 "trusted_connection=Yes;database=AdventureWorks",
1957 sb.ConnectionString, "#B4");
1959 sb = new DbConnectionStringBuilder (false);
1960 sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
1961 "Trusted_Connection=Yes Or No;Database=Adventure Works;";
1962 Assert.AreEqual ("{SQL Server}", sb["Driver"], "#C1");
1963 Assert.AreEqual ("(local host)", sb["Server"], "#C2");
1964 Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#C3");
1965 Assert.AreEqual ("driver=\"{SQL Server}\";server=\"(local host)\";" +
1966 "trusted_connection=\"Yes Or No\";database=\"Adventure Works\"",
1967 sb.ConnectionString, "#C4");
1969 sb = new DbConnectionStringBuilder (false);
1970 sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
1971 "Trusted_Connection=Yes;Database=AdventureWorks;";
1972 Assert.AreEqual ("{SQLServer}", sb["Driver"], "#D1");
1973 Assert.AreEqual ("(local)", sb["Server"], "#D2");
1974 Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#D3");
1975 Assert.AreEqual ("driver={SQLServer};server=(local);" +
1976 "trusted_connection=Yes;database=AdventureWorks",
1977 sb.ConnectionString, "#D4");
1979 sb = new DbConnectionStringBuilder (true);
1980 sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
1981 "Trusted_Connection=Yes Or No;Database=Adventure Works;";
1982 Assert.AreEqual ("{SQL Server}", sb["Driver"], "#E1");
1983 Assert.AreEqual ("(local host)", sb["Server"], "#E2");
1984 Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#E3");
1985 Assert.AreEqual ("driver={SQL Server};server=(local host);" +
1986 "trusted_connection=Yes Or No;database=Adventure Works",
1987 sb.ConnectionString, "#E4");
1989 sb = new DbConnectionStringBuilder (true);
1990 sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
1991 "Trusted_Connection=Yes;Database=AdventureWorks;";
1992 Assert.AreEqual ("{SQLServer}", sb["Driver"], "#F1");
1993 Assert.AreEqual ("(local)", sb["Server"], "#F2");
1994 Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#F3");
1995 Assert.AreEqual ("driver={SQLServer};server=(local);" +
1996 "trusted_connection=Yes;database=AdventureWorks",
1997 sb.ConnectionString, "#F4");
2001 public void EmbeddedCharTest3 ()
2003 string dataSource = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)" +
2004 "(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=TESTDB)))";
2005 DbConnectionStringBuilder sb;
2007 sb = new DbConnectionStringBuilder ();
2008 sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
2009 Assert.AreEqual (dataSource, sb["Data Source"], "#A1");
2010 Assert.AreEqual ("SCOTT", sb["User ID"], "#A2");
2011 Assert.AreEqual ("TiGeR", sb["Password"], "#A3");
2013 "user id=SCOTT;password=TiGeR;data source=\"(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
2014 "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
2015 "(SERVICE_NAME=TESTDB)))\"", sb.ConnectionString, "#A4");
2017 sb = new DbConnectionStringBuilder (false);
2018 sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
2019 Assert.AreEqual (dataSource, sb["Data Source"], "#B1");
2020 Assert.AreEqual ("SCOTT", sb["User ID"], "#B2");
2021 Assert.AreEqual ("TiGeR", sb["Password"], "#B3");
2023 "user id=SCOTT;password=TiGeR;data source=\"(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
2024 "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
2025 "(SERVICE_NAME=TESTDB)))\"", sb.ConnectionString, "#B4");
2027 sb = new DbConnectionStringBuilder (true);
2028 sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
2029 Assert.AreEqual (dataSource, sb["Data Source"], "#C1");
2030 Assert.AreEqual ("SCOTT", sb["User ID"], "#C2");
2031 Assert.AreEqual ("TiGeR", sb["Password"], "#C3");
2033 "user id=SCOTT;password=TiGeR;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
2034 "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
2035 "(SERVICE_NAME=TESTDB)))", sb.ConnectionString, "#C4");
2039 public void EmbeddedCharTest4 ()
2041 DbConnectionStringBuilder sb;
2043 sb = new DbConnectionStringBuilder ();
2044 sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
2045 sb["Integrated Security"] = "False";
2047 "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
2048 sb.ConnectionString, "#A");
2050 sb = new DbConnectionStringBuilder (false);
2051 sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
2052 sb["Integrated Security"] = "False";
2054 "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
2055 sb.ConnectionString, "#B");
2057 sb = new DbConnectionStringBuilder (true);
2058 sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
2059 sb["Integrated Security"] = "False";
2061 "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
2062 sb.ConnectionString, "#C");
2066 public void EmbeddedCharTest5 ()
2068 string connectionString = "A={abcdef2};B=some{us;C=test}db;D=12\"3;E=\"45;6\";F=AB==C;G{A'}\";F={1='\"2};G==C=B==C;Z=ABC";
2069 DbConnectionStringBuilder sb;
2071 sb = new DbConnectionStringBuilder ();
2072 sb.ConnectionString = connectionString;
2073 Assert.AreEqual ("a={abcdef2};b=some{us;c=test}db;d='12\"3';e=\"45;6\";f=\"AB==C\";g{a'}\";f=\"{1='\"\"2}\";g==c=\"B==C\";z=ABC", sb.ConnectionString, "#A1");
2074 Assert.AreEqual ("{abcdef2}", sb ["A"], "#A2");
2075 Assert.AreEqual ("some{us", sb ["B"], "#A3");
2076 Assert.AreEqual ("test}db", sb ["C"], "#A4");
2077 Assert.AreEqual ("12\"3", sb ["D"], "#A5");
2078 Assert.AreEqual ("45;6", sb ["E"], "#A6");
2079 Assert.AreEqual ("AB==C", sb ["F"], "#A7");
2080 Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#A8");
2081 Assert.AreEqual ("ABC", sb ["Z"], "#A9");
2082 Assert.AreEqual ("B==C", sb ["g=c"], "#A10");
2084 sb = new DbConnectionStringBuilder (false);
2085 sb.ConnectionString = connectionString;
2086 Assert.AreEqual ("a={abcdef2};b=some{us;c=test}db;d='12\"3';e=\"45;6\";f=\"AB==C\";g{a'}\";f=\"{1='\"\"2}\";g==c=\"B==C\";z=ABC", sb.ConnectionString, "#B1");
2087 Assert.AreEqual ("{abcdef2}", sb ["A"], "#B2");
2088 Assert.AreEqual ("some{us", sb ["B"], "#B3");
2089 Assert.AreEqual ("test}db", sb ["C"], "#B4");
2090 Assert.AreEqual ("12\"3", sb ["D"], "#B5");
2091 Assert.AreEqual ("45;6", sb ["E"], "#B6");
2092 Assert.AreEqual ("AB==C", sb ["F"], "#B7");
2093 Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#B8");
2094 Assert.AreEqual ("ABC", sb ["Z"], "#B9");
2095 Assert.AreEqual ("B==C", sb ["g=c"], "#B10");
2097 sb = new DbConnectionStringBuilder (true);
2098 sb.ConnectionString = connectionString;
2099 Assert.AreEqual ("a={abcdef2};b=some{us;c=test}db;d=12\"3;e=\"45;6\";f=AB==C;g{a'}\";f={1='\"2};g==C=B==C;z=ABC", sb.ConnectionString, "#C1");
2100 Assert.AreEqual ("{abcdef2}", sb ["A"], "#C2");
2101 Assert.AreEqual ("some{us", sb ["B"], "#C3");
2102 Assert.AreEqual ("test}db", sb ["C"], "#C4");
2103 Assert.AreEqual ("12\"3", sb ["D"], "#C5");
2104 Assert.AreEqual ("\"45", sb ["E"], "#C6");
2105 Assert.AreEqual ("AB==C", sb ["6\";f"], "#C7");
2106 Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#C8");
2107 Assert.AreEqual ("ABC", sb ["Z"], "#C9");
2108 Assert.AreEqual ("=C=B==C", sb ["g"], "#C10");
2112 public void EmbeddedCharTest6 ()
2114 string [][] shared_tests = new string [][] {
2115 new string [] { "A=(B;", "A", "(B", "a=(B" },
2116 new string [] { "A={B{}", "A", "{B{}", "a={B{}" },
2117 new string [] { "A={B{{}", "A", "{B{{}", "a={B{{}" },
2118 new string [] { " A =B{C", "A", "B{C", "a=B{C" },
2119 new string [] { " A =B{{C}", "A", "B{{C}", "a=B{{C}" },
2120 new string [] { "A={{{B}}}", "A", "{{{B}}}", "a={{{B}}}" },
2121 new string [] { "A={B}", "A", "{B}", "a={B}" },
2122 new string [] { "A= {B}", "A", "{B}", "a={B}" },
2123 new string [] { " A =BC", "a", "BC", "a=BC" },
2124 new string [] { "\rA\t=BC", "a", "BC", "a=BC" },
2125 new string [] { "\rA\t=BC", "a", "BC", "a=BC" },
2126 new string [] { "A;B=BC", "a;b", "BC", "a;b=BC" },
2129 string [][] non_odbc_tests = new string [][] {
2130 new string [] { "A=''", "A", "", "a=" },
2131 new string [] { "A='BC;D'", "A", "BC;D", "a=\"BC;D\"" },
2132 new string [] { "A=BC''D", "A", "BC''D", "a=\"BC''D\"" },
2133 new string [] { "A='\"'", "A", "\"", "a='\"'" },
2134 new string [] { "A=B\"\"C;", "A", "B\"\"C", "a='B\"\"C'" },
2135 new string [] { "A={B{", "A", "{B{", "a={B{" },
2136 new string [] { "A={B}C", "A", "{B}C", "a={B}C" },
2137 new string [] { "A=B'C", "A", "B'C", "a=\"B'C\"" },
2138 new string [] { "A=B''C", "A", "B''C", "a=\"B''C\"" },
2139 new string [] { "A= B C ;", "A", "B C", "a=\"B C\"" },
2140 new string [] { "A={B { }} }", "A", "{B { }} }", "a=\"{B { }} }\"" },
2141 new string [] { "A={B {{ }} }", "A", "{B {{ }} }", "a=\"{B {{ }} }\"" },
2142 new string [] { "A= B {C ", "A", "B {C", "a=\"B {C\"" },
2143 new string [] { "A= B }C ", "A", "B }C", "a=\"B }C\"" },
2144 new string [] { "A=B }C", "A", "B }C", "a=\"B }C\"" },
2145 new string [] { "A=B { }C", "A", "B { }C", "a=\"B { }C\"" },
2146 new string [] { "A= B{C {}}", "A", "B{C {}}", "a=\"B{C {}}\"" },
2147 new string [] { "A= {C {};B=A", "A", "{C {}", "a=\"{C {}\";b=A" },
2148 new string [] { "A= {C {} ", "A", "{C {}", "a=\"{C {}\"" },
2149 new string [] { "A= {C {} ;B=A", "A", "{C {}", "a=\"{C {}\";b=A" },
2150 new string [] { "A= {C {}}}", "A", "{C {}}}", "a=\"{C {}}}\"" },
2151 new string [] { "A={B=C}", "A", "{B=C}", "a=\"{B=C}\"" },
2152 new string [] { "A={B==C}", "A", "{B==C}", "a=\"{B==C}\"" },
2153 new string [] { "A=B==C", "A", "B==C", "a=\"B==C\"" },
2154 new string [] { "A={=}", "A", "{=}", "a=\"{=}\"" },
2155 new string [] { "A={==}", "A", "{==}", "a=\"{==}\"" },
2156 new string [] { "A=\"B;(C)'\"", "A", "B;(C)'", "a=\"B;(C)'\"" },
2157 new string [] { "A=B(=)C", "A", "B(=)C", "a=\"B(=)C\"" },
2158 new string [] { "A=B=C", "A", "B=C", "a=\"B=C\"" },
2159 new string [] { "A=B(==)C", "A", "B(==)C", "a=\"B(==)C\"" },
2160 new string [] { "A=B C", "A", "B C", "a=\"B C\"" },
2161 new string [] { "A= B C ", "A", "B C", "a=\"B C\"" },
2162 new string [] { "A= B C ", "A", "B C", "a=\"B C\"" },
2163 new string [] { "A=' B C '", "A", " B C ", "a=\" B C \"" },
2164 new string [] { "A=\" B C \"", "A", " B C ", "a=\" B C \"" },
2165 new string [] { "A={ B C }", "A", "{ B C }", "a=\"{ B C }\"" },
2166 new string [] { "A= B C ;", "A", "B C", "a=\"B C\"" },
2167 new string [] { "A= B\rC\r\t;", "A", "B\rC", "a=\"B\rC\"" },
2168 new string [] { "A=\"\"\"B;C\"\"\"", "A", "\"B;C\"", "a='\"B;C\"'" },
2169 new string [] { "A= \"\"\"B;C\"\"\" ", "A", "\"B;C\"", "a='\"B;C\"'" },
2170 new string [] { "A='''B;C'''", "A", "'B;C'", "a=\"'B;C'\"" },
2171 new string [] { "A= '''B;C''' ", "A", "'B;C'", "a=\"'B;C'\"" },
2172 new string [] { "A={{", "A", "{{", "a={{" },
2173 new string [] { "A={B C}", "A", "{B C}", "a=\"{B C}\"" },
2174 new string [] { "A={ B C }", "A", "{ B C }", "a=\"{ B C }\"" },
2175 new string [] { "A={B {{ } }", "A", "{B {{ } }", "a=\"{B {{ } }\"" },
2176 new string [] { "A='='", "A", "=", "a=\"=\"" },
2177 new string [] { "A='=='", "A", "==", "a=\"==\"" },
2178 new string [] { "A=\"=\"", "A", "=", "a=\"=\"" },
2179 new string [] { "A=\"==\"", "A", "==", "a=\"==\"" },
2180 new string [] { "A={B}}", "A", "{B}}", "a={B}}" },
2181 new string [] { "A=\";\"", "A", ";", "a=\";\"" },
2182 new string [] { "A(=)=B", "A(", ")=B", "a(=\")=B\"" },
2183 new string [] { "A==B=C", "A=B", "C", "a==b=C" },
2184 new string [] { "A===B=C", "A=", "B=C", "a===\"B=C\"" },
2185 new string [] { "(A=)=BC", "(a", ")=BC", "(a=\")=BC\"" },
2186 new string [] { "A==C=B==C", "a=c", "B==C", "a==c=\"B==C\"" },
2188 DbConnectionStringBuilder sb;
2190 for (int i = 0; i < non_odbc_tests.Length; i++) {
2191 string [] test = non_odbc_tests [i];
2192 sb = new DbConnectionStringBuilder ();
2193 sb.ConnectionString = test [0];
2194 Assert.AreEqual (test [3], sb.ConnectionString, "#A1:" + i);
2195 Assert.AreEqual (test [2], sb [test [1]], "#A2:" + i);
2198 for (int i = 0; i < non_odbc_tests.Length; i++) {
2199 string [] test = non_odbc_tests [i];
2200 sb = new DbConnectionStringBuilder (false);
2201 sb.ConnectionString = test [0];
2202 Assert.AreEqual (test [3], sb.ConnectionString, "#B1:" + i);
2203 Assert.AreEqual (test [2], sb [test [1]], "#B2:" + i);
2206 for (int i = 0; i < shared_tests.Length; i++) {
2207 string [] test = shared_tests [i];
2208 sb = new DbConnectionStringBuilder ();
2209 sb.ConnectionString = test [0];
2210 Assert.AreEqual (test [3], sb.ConnectionString, "#C1:" + i);
2211 Assert.AreEqual (test [2], sb [test [1]], "#C2:" + i);
2214 for (int i = 0; i < shared_tests.Length; i++) {
2215 string [] test = shared_tests [i];
2216 sb = new DbConnectionStringBuilder (false);
2217 sb.ConnectionString = test [0];
2218 Assert.AreEqual (test [3], sb.ConnectionString, "#D1:" + i);
2219 Assert.AreEqual (test [2], sb [test [1]], "#D2:" + i);
2222 string [][] odbc_tests = new string [][] {
2223 new string [] { "A=B(=)C", "A", "B(=)C", "a=B(=)C" },
2224 new string [] { "A=B(==)C", "A", "B(==)C", "a=B(==)C" },
2225 new string [] { "A= B C ;", "A", "B C", "a=B C" },
2226 new string [] { "A= B\rC\r\t;", "A", "B\rC", "a=B\rC" },
2227 new string [] { "A='''", "A", "'''", "a='''" },
2228 new string [] { "A=''", "A", "''", "a=''" },
2229 new string [] { "A=''B", "A", "''B", "a=''B" },
2230 new string [] { "A=BC''D", "A", "BC''D", "a=BC''D" },
2231 new string [] { "A='\"'", "A", "'\"'", "a='\"'" },
2232 new string [] { "A=\"\"B", "A", "\"\"B", "a=\"\"B"},
2233 new string [] { "A=B\"\"C;", "A", "B\"\"C", "a=B\"\"C" },
2234 new string [] { "A=\"B", "A", "\"B", "a=\"B" },
2235 new string [] { "A=\"", "A", "\"", "a=\"" },
2236 new string [] { "A=B'C", "A", "B'C", "a=B'C" },
2237 new string [] { "A=B''C", "A", "B''C", "a=B''C" },
2238 new string [] { "A='A'C", "A", "'A'C", "a='A'C" },
2239 new string [] { "A=B C", "A", "B C", "a=B C" },
2240 new string [] { "A= B C ", "A", "B C", "a=B C" },
2241 new string [] { "A= B C ", "A", "B C", "a=B C" },
2242 new string [] { "A=' B C '", "A", "' B C '", "a=' B C '" },
2243 new string [] { "A=\" B C \"", "A", "\" B C \"", "a=\" B C \"" },
2244 new string [] { "A={ B C }", "A", "{ B C }", "a={ B C }" },
2245 new string [] { "A= B C ;", "A", "B C", "a=B C" },
2246 new string [] { "A=\"\"BC\"\"", "A", "\"\"BC\"\"", "a=\"\"BC\"\"" },
2247 new string [] { "A=\"\"B\"C\"\";", "A", "\"\"B\"C\"\"", "a=\"\"B\"C\"\"" },
2248 new string [] { "A= \"\"B\"C\"\" ", "A", "\"\"B\"C\"\"", "a=\"\"B\"C\"\"" },
2249 new string [] { "A=''BC''", "A", "''BC''", "a=''BC''" },
2250 new string [] { "A=''B'C'';", "A", "''B'C''", "a=''B'C''" },
2251 new string [] { "A= ''B'C'' ", "A", "''B'C''", "a=''B'C''" },
2252 new string [] { "A={B C}", "A", "{B C}", "a={B C}" },
2253 new string [] { "A={ B C }", "A", "{ B C }", "a={ B C }" },
2254 new string [] { "A={ B;C }", "A", "{ B;C }", "a={ B;C }" },
2255 new string [] { "A={B { }} }", "A", "{B { }} }", "a={B { }} }" },
2256 new string [] { "A={ B;= {;=}};= }", "A", "{ B;= {;=}};= }", "a={ B;= {;=}};= }" },
2257 new string [] { "A={B {{ }} }", "A", "{B {{ }} }", "a={B {{ }} }" },
2258 new string [] { "A={ B;= {{:= }};= }", "A", "{ B;= {{:= }};= }", "a={ B;= {{:= }};= }" },
2259 new string [] { "A= B {C ", "A", "B {C", "a=B {C" },
2260 new string [] { "A= B }C ", "A", "B }C", "a=B }C" },
2261 new string [] { "A=B }C", "A", "B }C", "a=B }C" },
2262 new string [] { "A=B { }C", "A", "B { }C", "a=B { }C" },
2263 new string [] { "A= {B;{}", "A", "{B;{}", "a={B;{}" },
2264 new string [] { "A= {B;{}}}", "A", "{B;{}}}", "a={B;{}}}" },
2265 new string [] { "A= B{C {}}", "A", "B{C {}}", "a=B{C {}}" },
2266 new string [] { "A= {C {};B=A", "A", "{C {}", "a={C {};b=A" },
2267 new string [] { "A= {C {} ", "A", "{C {}", "a={C {}" },
2268 new string [] { "A= {C {} ;B=A", "A", "{C {}", "a={C {};b=A" },
2269 new string [] { "A= {C {}}}", "A", "{C {}}}", "a={C {}}}" },
2270 new string [] { "A={B=C}", "A", "{B=C}", "a={B=C}" },
2271 new string [] { "A={B==C}", "A", "{B==C}", "a={B==C}" },
2272 new string [] { "A=B==C", "A", "B==C", "a=B==C" },
2273 new string [] { "A='='", "A", "'='", "a='='" },
2274 new string [] { "A='=='", "A", "'=='", "a='=='" },
2275 new string [] { "A=\"=\"", "A", "\"=\"", "a=\"=\"" },
2276 new string [] { "A=\"==\"", "A", "\"==\"", "a=\"==\"" },
2277 new string [] { "A={=}", "A", "{=}", "a={=}" },
2278 new string [] { "A={==}", "A", "{==}", "a={==}" },
2279 new string [] { "A=B=C", "A", "B=C", "a=B=C" },
2280 new string [] { "A(=)=B", "A(", ")=B", "a(=)=B" },
2281 new string [] { "A==B=C", "A", "=B=C", "a==B=C" },
2282 new string [] { "A===B=C", "A", "==B=C", "a===B=C" },
2283 new string [] { "A'='=B=C", "A'", "'=B=C", "a'='=B=C" },
2284 new string [] { "A\"=\"=B=C", "A\"", "\"=B=C", "a\"=\"=B=C" },
2285 new string [] { "\"A=\"=BC", "\"a", "\"=BC", "\"a=\"=BC" },
2286 new string [] { "(A=)=BC", "(a", ")=BC", "(a=)=BC" },
2287 new string [] { "A==C=B==C", "A", "=C=B==C", "a==C=B==C" },
2290 for (int i = 0; i < odbc_tests.Length; i++) {
2291 string [] test = odbc_tests [i];
2292 sb = new DbConnectionStringBuilder (true);
2293 sb.ConnectionString = test [0];
2294 Assert.AreEqual (test [3], sb.ConnectionString, "#E1:" + i);
2295 Assert.AreEqual (test [2], sb [test [1]], "#E2:" + i);
2298 for (int i = 0; i < shared_tests.Length; i++) {
2299 string [] test = shared_tests [i];
2300 sb = new DbConnectionStringBuilder (true);
2301 sb.ConnectionString = test [0];
2302 Assert.AreEqual (test [3], sb.ConnectionString, "#F1:" + i);
2303 Assert.AreEqual (test [2], sb [test [1]], "#F2:" + i);
2306 // each test that is in odbc_tests and not in non_odbc_tests
2307 // (or vice versa) should result in an ArgumentException
2308 AssertValueTest (non_odbc_tests, odbc_tests, true, "#G:");
2309 AssertValueTest (odbc_tests, non_odbc_tests, false, "#H:");
2313 public void EmbeddedChar_ConnectionString_Invalid ()
2315 string [] tests = new string [] {
2329 DbConnectionStringBuilder [] cbs = new DbConnectionStringBuilder [] {
2330 new DbConnectionStringBuilder (),
2331 new DbConnectionStringBuilder (false),
2332 new DbConnectionStringBuilder (true)
2335 for (int i = 0; i < tests.Length; i++) {
2336 for (int j = 0; j < cbs.Length; j++) {
2337 DbConnectionStringBuilder cb =cbs [j];
2339 cb.ConnectionString = tests [i];
2340 Assert.Fail ("#1:" + i + " (" + j + ")");
2341 } catch (ArgumentException ex) {
2342 // Format of the initialization string does
2343 // not conform to specification starting
2345 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2:"+ i + " (" + j + ")");
2346 Assert.IsNull (ex.InnerException, "#3:" + i + " (" + j + ")");
2347 Assert.IsNotNull (ex.Message, "#4:" + i + " (" + j + ")");
2348 Assert.IsNull (ex.ParamName, "#5:" + i + " (" + j + ")");
2354 void AssertValueTest (string [][] tests1, string [][] tests2, bool useOdbc, string prefix)
2356 DbConnectionStringBuilder sb = new DbConnectionStringBuilder (useOdbc);
2357 for (int i = 0; i < tests1.Length; i++) {
2358 string [] test1 = tests1 [i];
2360 for (int j = 0; j < tests2.Length; j++) {
2361 string [] test2 = tests2 [j];
2362 if (test2 [0] == test1 [0]) {
2365 if (test2 [1] != test1 [1])
2367 if (test2 [2] != test1 [2])
2369 if (test2 [3] != test1 [3])
2372 Assert.Fail (string.Format (
2373 "{0}test1 {1} and test2 {2} " +
2374 "should be moved to shared_tests.",
2382 sb.ConnectionString = test1 [0];
2383 Assert.Fail (prefix + "1 (" + i + ")");
2384 } catch (ArgumentException ex) {
2385 // Format of the initialization string does
2386 // not conform to specification starting
2388 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), prefix + "2 (" + i + ")");
2389 Assert.IsNull (ex.InnerException, prefix + "3 (" + i + ")");
2390 Assert.IsNotNull (ex.Message, prefix + "4 (" + i + ")");
2391 Assert.IsNull (ex.ParamName, prefix + "5 (" + i + ")");
2395 // check uniqueness of tests
2396 for (int i = 0; i < tests1.Length; i++) {
2397 for (int j = 0; j < tests1.Length; j++) {
2400 if (tests1 [i] == tests1 [j])
2401 Assert.Fail (string.Format (
2402 "{0}Duplicate test in test1 " +
2403 "{1} and {2}.", prefix, i, j));
2407 // check uniqueness of tests
2408 for (int i = 0; i < tests2.Length; i++) {
2409 for (int j = 0; j < tests2.Length; j++) {
2412 if (tests2 [i] == tests2 [j])
2413 Assert.Fail (string.Format (
2414 "{0}Duplicate test in test2 " +
2415 "{1} and {2}.", prefix, i, j));