DbConnectionStringBuilderTest.cs 114 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437
  1. // DbConnectionStringBuilderTest.cs - NUnit Test Cases for Testing the
  2. // DbConnectionStringBuilder class
  3. //
  4. // Author:
  5. // Sureshkumar T ([email protected])
  6. // Daniel Morgan ([email protected])
  7. // Gert Driesen ([email protected]
  8. //
  9. // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
  10. // Copyright (C) 2008 Daniel Morgan
  11. //
  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:
  19. //
  20. // The above copyright notice and this permission notice shall be
  21. // included in all copies or substantial portions of the Software.
  22. //
  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.
  30. //
  31. #region Using directives
  32. using System;
  33. using System.Collections;
  34. using System.Collections.Generic;
  35. using System.Collections.Specialized;
  36. using System.ComponentModel;
  37. using System.Data;
  38. using System.Data.Common;
  39. using System.Data.SqlClient;
  40. using System.Reflection;
  41. using System.Text;
  42. using NUnit.Framework;
  43. #endregion
  44. namespace MonoTests.System.Data.Common
  45. {
  46. [TestFixture]
  47. public class DbConnectionStringBuilderTest
  48. {
  49. private DbConnectionStringBuilder builder = null;
  50. private const string SERVER = "SERVER";
  51. private const string SERVER_VALUE = "localhost";
  52. [SetUp]
  53. public void SetUp ()
  54. {
  55. builder = new DbConnectionStringBuilder ();
  56. }
  57. [Test]
  58. public void Add ()
  59. {
  60. builder.Add ("driverid", "420");
  61. builder.Add ("driverid", "560");
  62. builder.Add ("DriverID", "840");
  63. Assert.AreEqual ("840", builder ["driverId"], "#A1");
  64. Assert.IsTrue (builder.ContainsKey ("driverId"), "#A2");
  65. builder.Add ("Driver", "OdbcDriver");
  66. Assert.AreEqual ("OdbcDriver", builder ["Driver"], "#B1");
  67. Assert.IsTrue (builder.ContainsKey ("Driver"), "#B2");
  68. builder.Add ("Driver", "{OdbcDriver");
  69. Assert.AreEqual ("{OdbcDriver", builder ["Driver"], "#C1");
  70. Assert.IsTrue (builder.ContainsKey ("Driver"), "#C2");
  71. builder.Add ("Dsn", "MyDsn");
  72. Assert.AreEqual ("MyDsn", builder ["Dsn"], "#D1");
  73. Assert.IsTrue (builder.ContainsKey ("Dsn"), "#D2");
  74. builder.Add ("dsN", "MyDsn2");
  75. Assert.AreEqual ("MyDsn2", builder ["Dsn"], "#E1");
  76. Assert.IsTrue (builder.ContainsKey ("Dsn"), "#E2");
  77. }
  78. [Test]
  79. public void Add_Keyword_Invalid ()
  80. {
  81. string [] invalid_keywords = new string [] {
  82. string.Empty,
  83. " ",
  84. " abc",
  85. "abc ",
  86. "\r",
  87. "ab\rc",
  88. ";abc",
  89. "a\0b"
  90. };
  91. for (int i = 0; i < invalid_keywords.Length; i++) {
  92. string keyword = invalid_keywords [i];
  93. try {
  94. builder.Add (keyword, "abc");
  95. Assert.Fail ("#1:" + i);
  96. } catch (ArgumentException ex) {
  97. // Invalid keyword, contain one or more of 'no characters',
  98. // 'control characters', 'leading or trailing whitespace'
  99. // or 'leading semicolons'
  100. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2:"+ i);
  101. Assert.IsNull (ex.InnerException, "#3:" + i);
  102. Assert.IsNotNull (ex.Message, "#4:" + i);
  103. Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") == -1, "#5:" + i);
  104. Assert.AreEqual (keyword, ex.ParamName, "#6:" + i);
  105. }
  106. }
  107. }
  108. [Test]
  109. public void Add_Keyword_Null ()
  110. {
  111. try {
  112. builder.Add (null, "abc");
  113. Assert.Fail ("#1");
  114. } catch (ArgumentNullException ex) {
  115. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  116. Assert.IsNull (ex.InnerException, "#3");
  117. Assert.IsNotNull (ex.Message, "#4");
  118. Assert.AreEqual ("keyword", ex.ParamName, "#5");
  119. }
  120. }
  121. [Test]
  122. public void ConnectionString ()
  123. {
  124. DbConnectionStringBuilder sb;
  125. sb = new DbConnectionStringBuilder ();
  126. sb.ConnectionString = "A=B";
  127. Assert.IsTrue (sb.ContainsKey ("A"), "#A1");
  128. Assert.AreEqual ("a=B", sb.ConnectionString, "#A2");
  129. Assert.AreEqual (1, sb.Count, "#A3");
  130. Assert.AreEqual (1, sb.Keys.Count, "#A4");
  131. sb.ConnectionString = null;
  132. Assert.IsFalse (sb.ContainsKey ("A"), "#B1");
  133. Assert.AreEqual (string.Empty, sb.ConnectionString, "#B2");
  134. Assert.AreEqual (0, sb.Count, "#B3");
  135. Assert.AreEqual (0, sb.Keys.Count, "#B4");
  136. sb = new DbConnectionStringBuilder ();
  137. sb.ConnectionString = "A=B";
  138. sb.ConnectionString = string.Empty;
  139. Assert.IsFalse (sb.ContainsKey ("A"), "#C1");
  140. Assert.AreEqual (string.Empty, sb.ConnectionString, "#C2");
  141. Assert.AreEqual (0, sb.Count, "#C3");
  142. Assert.AreEqual (0, sb.Keys.Count, "#C4");
  143. sb = new DbConnectionStringBuilder ();
  144. sb.ConnectionString = "A=B";
  145. sb.ConnectionString = "\r ";
  146. Assert.IsFalse (sb.ContainsKey ("A"), "#D1");
  147. Assert.AreEqual (string.Empty, sb.ConnectionString, "#D2");
  148. Assert.AreEqual (0, sb.Count, "#D3");
  149. Assert.AreEqual (0, sb.Keys.Count, "#D4");
  150. }
  151. [Test]
  152. public void ConnectionString_Value_Empty ()
  153. {
  154. DbConnectionStringBuilder [] sbs = new DbConnectionStringBuilder [] {
  155. new DbConnectionStringBuilder (),
  156. new DbConnectionStringBuilder (false),
  157. new DbConnectionStringBuilder (true)
  158. };
  159. foreach (DbConnectionStringBuilder sb in sbs) {
  160. sb.ConnectionString = "A=";
  161. Assert.IsFalse (sb.ContainsKey ("A"), "#1");
  162. Assert.AreEqual (string.Empty, sb.ConnectionString, "#2");
  163. Assert.AreEqual (0, sb.Count, "#3");
  164. }
  165. }
  166. [Test]
  167. public void Clear ()
  168. {
  169. DbConnectionStringBuilder [] sbs = new DbConnectionStringBuilder [] {
  170. new DbConnectionStringBuilder (),
  171. new DbConnectionStringBuilder (false),
  172. new DbConnectionStringBuilder (true)
  173. };
  174. foreach (DbConnectionStringBuilder sb in sbs) {
  175. sb ["Dbq"] = "C:\\Data.xls";
  176. sb ["Driver"] = "790";
  177. sb.Add ("Port", "56");
  178. sb.Clear ();
  179. Assert.AreEqual (string.Empty, sb.ConnectionString, "#1");
  180. Assert.IsFalse (sb.ContainsKey ("Dbq"), "#2");
  181. Assert.IsFalse (sb.ContainsKey ("Driver"), "#3");
  182. Assert.IsFalse (sb.ContainsKey ("Port"), "#4");
  183. Assert.AreEqual (0, sb.Count, "#5");
  184. Assert.AreEqual (0, sb.Keys.Count, "#6");
  185. Assert.AreEqual (0, sb.Values.Count, "#7");
  186. }
  187. }
  188. [Test]
  189. public void AddDuplicateTest ()
  190. {
  191. builder.Add (SERVER, SERVER_VALUE);
  192. builder.Add (SERVER, SERVER_VALUE);
  193. // should allow duplicate addition. rather, it should re-assign
  194. Assert.AreEqual (SERVER + "=" + SERVER_VALUE, builder.ConnectionString,
  195. "Duplicates addition does not change the value!");
  196. }
  197. [Test]
  198. public void Indexer ()
  199. {
  200. builder ["abc Def"] = "xa 34";
  201. Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
  202. Assert.AreEqual ("abc Def=\"xa 34\"", builder.ConnectionString, "#A2");
  203. builder ["na;"] = "abc;";
  204. Assert.AreEqual ("abc;", builder ["na;"], "#B1");
  205. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"abc;\"", builder.ConnectionString, "#B2");
  206. builder ["Na;"] = "de\rfg";
  207. Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
  208. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\"", builder.ConnectionString, "#C2");
  209. builder ["val"] = ";xyz";
  210. Assert.AreEqual (";xyz", builder ["val"], "#D1");
  211. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\"", builder.ConnectionString, "#D2");
  212. builder ["name"] = string.Empty;
  213. Assert.AreEqual (string.Empty, builder ["name"], "#E1");
  214. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=", builder.ConnectionString, "#E2");
  215. builder ["name"] = " ";
  216. Assert.AreEqual (" ", builder ["name"], "#F1");
  217. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=\" \"", builder.ConnectionString, "#F2");
  218. builder = new DbConnectionStringBuilder (false);
  219. builder ["abc Def"] = "xa 34";
  220. Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
  221. Assert.AreEqual ("abc Def=\"xa 34\"", builder.ConnectionString, "#A2");
  222. builder ["na;"] = "abc;";
  223. Assert.AreEqual ("abc;", builder ["na;"], "#B1");
  224. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"abc;\"", builder.ConnectionString, "#B2");
  225. builder ["Na;"] = "de\rfg";
  226. Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
  227. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\"", builder.ConnectionString, "#C2");
  228. builder ["val"] = ";xyz";
  229. Assert.AreEqual (";xyz", builder ["val"], "#D1");
  230. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\"", builder.ConnectionString, "#D2");
  231. builder ["name"] = string.Empty;
  232. Assert.AreEqual (string.Empty, builder ["name"], "#E1");
  233. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=", builder.ConnectionString, "#E2");
  234. builder ["name"] = " ";
  235. Assert.AreEqual (" ", builder ["name"], "#F1");
  236. Assert.AreEqual ("abc Def=\"xa 34\";na;=\"de\rfg\";val=\";xyz\";name=\" \"", builder.ConnectionString, "#F2");
  237. builder = new DbConnectionStringBuilder (true);
  238. builder ["abc Def"] = "xa 34";
  239. Assert.AreEqual ("xa 34", builder ["abc def"], "#A1");
  240. Assert.AreEqual ("abc Def=xa 34", builder.ConnectionString, "#A2");
  241. builder ["na;"] = "abc;";
  242. Assert.AreEqual ("abc;", builder ["na;"], "#B1");
  243. Assert.AreEqual ("abc Def=xa 34;na;={abc;}", builder.ConnectionString, "#B2");
  244. builder ["Na;"] = "de\rfg";
  245. Assert.AreEqual ("de\rfg", builder ["na;"], "#C1");
  246. Assert.AreEqual ("abc Def=xa 34;na;=de\rfg", builder.ConnectionString, "#C2");
  247. builder ["val"] = ";xyz";
  248. Assert.AreEqual (";xyz", builder ["val"], "#D1");
  249. Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz}", builder.ConnectionString, "#D2");
  250. builder ["name"] = string.Empty;
  251. Assert.AreEqual (string.Empty, builder ["name"], "#E1");
  252. Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz};name=", builder.ConnectionString, "#E2");
  253. builder ["name"] = " ";
  254. Assert.AreEqual (" ", builder ["name"], "#F1");
  255. Assert.AreEqual ("abc Def=xa 34;na;=de\rfg;val={;xyz};name= ", builder.ConnectionString, "#F2");
  256. }
  257. [Test]
  258. public void Indexer_Keyword_Invalid ()
  259. {
  260. string [] invalid_keywords = new string [] {
  261. string.Empty,
  262. " ",
  263. " abc",
  264. "abc ",
  265. "\r",
  266. "ab\rc",
  267. ";abc",
  268. "a\0b"
  269. };
  270. for (int i = 0; i < invalid_keywords.Length; i++) {
  271. string keyword = invalid_keywords [i];
  272. try {
  273. builder [keyword] = "abc";
  274. Assert.Fail ("#A1:" + i);
  275. } catch (ArgumentException ex) {
  276. // Invalid keyword, contain one or more of 'no characters',
  277. // 'control characters', 'leading or trailing whitespace'
  278. // or 'leading semicolons'
  279. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2:"+ i);
  280. Assert.IsNull (ex.InnerException, "#A3:" + i);
  281. Assert.IsNotNull (ex.Message, "#A4:" + i);
  282. Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") == -1, "#A5:" + i);
  283. Assert.AreEqual (keyword, ex.ParamName, "#A6:" + i);
  284. }
  285. builder [keyword] = null;
  286. Assert.IsFalse (builder.ContainsKey (keyword), "#B");
  287. try {
  288. object value = builder [keyword];
  289. Assert.Fail ("#C1:" + i);
  290. } catch (ArgumentException ex) {
  291. // Keyword not supported: '...'
  292. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2:"+ i);
  293. Assert.IsNull (ex.InnerException, "#C3:" + i);
  294. Assert.IsNotNull (ex.Message, "#C4:" + i);
  295. Assert.IsTrue (ex.Message.IndexOf ("'" + keyword + "'") != -1, "#C5:" + i);
  296. Assert.IsNull (ex.ParamName, "#C6:" + i);
  297. }
  298. }
  299. }
  300. [Test]
  301. public void Indexer_Keyword_NotSupported ()
  302. {
  303. try {
  304. object value = builder ["abc"];
  305. Assert.Fail ("#1");
  306. } catch (ArgumentException ex) {
  307. // Keyword not supported: 'abc'
  308. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  309. Assert.IsNull (ex.InnerException, "#3");
  310. Assert.IsNotNull (ex.Message, "#4");
  311. Assert.IsTrue (ex.Message.IndexOf ("'abc'") != -1, "#5");
  312. Assert.IsNull (ex.ParamName, "#6");
  313. }
  314. }
  315. [Test]
  316. public void Indexer_Keyword_Null ()
  317. {
  318. try {
  319. builder [null] = "abc";
  320. Assert.Fail ("#A1");
  321. } catch (ArgumentNullException ex) {
  322. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
  323. Assert.IsNull (ex.InnerException, "#A3");
  324. Assert.IsNotNull (ex.Message, "#A4");
  325. Assert.AreEqual ("keyword", ex.ParamName, "#A5");
  326. }
  327. try {
  328. builder [null] = null;
  329. Assert.Fail ("#B1");
  330. } catch (ArgumentNullException ex) {
  331. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
  332. Assert.IsNull (ex.InnerException, "#B3");
  333. Assert.IsNotNull (ex.Message, "#B4");
  334. Assert.AreEqual ("keyword", ex.ParamName, "#B5");
  335. }
  336. try {
  337. object value = builder [null];
  338. Assert.Fail ("#C1");
  339. } catch (ArgumentNullException ex) {
  340. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#C2");
  341. Assert.IsNull (ex.InnerException, "#C3");
  342. Assert.IsNotNull (ex.Message, "#C4");
  343. Assert.AreEqual ("keyword", ex.ParamName, "#C5");
  344. }
  345. }
  346. [Test]
  347. public void Indexer_Value_Null ()
  348. {
  349. builder ["DriverID"] = null;
  350. Assert.AreEqual (string.Empty, builder.ConnectionString, "#A1");
  351. try {
  352. object value = builder ["DriverID"];
  353. Assert.Fail ("#A2:" + value);
  354. } catch (ArgumentException ex) {
  355. // Keyword not supported: 'DriverID'
  356. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A3");
  357. Assert.IsNull (ex.InnerException, "#A4");
  358. Assert.IsNotNull (ex.Message, "#A5");
  359. Assert.IsTrue (ex.Message.IndexOf ("'DriverID'") != -1, "#A6:" + ex.Message);
  360. Assert.IsNull (ex.ParamName, "#A7");
  361. }
  362. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#A8");
  363. Assert.AreEqual (string.Empty, builder.ConnectionString, "#A9");
  364. builder ["DriverID"] = "A";
  365. Assert.AreEqual ("DriverID=A", builder.ConnectionString, "#B1");
  366. builder ["DriverID"] = null;
  367. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
  368. Assert.AreEqual (string.Empty, builder.ConnectionString, "#B3");
  369. }
  370. [Test]
  371. public void Remove ()
  372. {
  373. Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
  374. Assert.IsFalse (builder.Remove ("Driver"), "#A2");
  375. builder.Add ("DriverID", "790");
  376. builder ["DefaultDir"] = "C:\\";
  377. Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
  378. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
  379. Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
  380. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
  381. Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
  382. Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
  383. Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
  384. Assert.IsFalse (builder.Remove ("userid"), "#B8");
  385. Assert.IsFalse (builder.Remove (string.Empty), "#B9");
  386. Assert.IsFalse (builder.Remove ("\r"), "#B10");
  387. Assert.IsFalse (builder.Remove ("a;"), "#B11");
  388. builder ["Dsn"] = "myDsn";
  389. Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
  390. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
  391. Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
  392. builder ["Driver"] = "SQL Server";
  393. Assert.IsTrue (builder.Remove ("Driver"), "#D1");
  394. Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
  395. Assert.IsFalse (builder.Remove ("Driver"), "#D3");
  396. builder = new DbConnectionStringBuilder (false);
  397. Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
  398. Assert.IsFalse (builder.Remove ("Driver"), "#A2");
  399. builder.Add ("DriverID", "790");
  400. builder ["DefaultDir"] = "C:\\";
  401. Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
  402. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
  403. Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
  404. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
  405. Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
  406. Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
  407. Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
  408. Assert.IsFalse (builder.Remove ("userid"), "#B8");
  409. Assert.IsFalse (builder.Remove (string.Empty), "#B9");
  410. Assert.IsFalse (builder.Remove ("\r"), "#B10");
  411. Assert.IsFalse (builder.Remove ("a;"), "#B11");
  412. builder ["Dsn"] = "myDsn";
  413. Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
  414. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
  415. Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
  416. builder ["Driver"] = "SQL Server";
  417. Assert.IsTrue (builder.Remove ("Driver"), "#D1");
  418. Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
  419. Assert.IsFalse (builder.Remove ("Driver"), "#D3");
  420. builder = new DbConnectionStringBuilder (true);
  421. Assert.IsFalse (builder.Remove ("Dsn"), "#A1");
  422. Assert.IsFalse (builder.Remove ("Driver"), "#A2");
  423. builder.Add ("DriverID", "790");
  424. builder ["DefaultDir"] = "C:\\";
  425. Assert.IsTrue (builder.Remove ("DriverID"), "#B1");
  426. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B2");
  427. Assert.IsFalse (builder.Remove ("DriverID"), "#B3");
  428. Assert.IsFalse (builder.ContainsKey ("DriverID"), "#B4");
  429. Assert.IsTrue (builder.Remove ("defaulTdIr"), "#B5");
  430. Assert.IsFalse (builder.ContainsKey ("DefaultDir"), "#B6");
  431. Assert.IsFalse (builder.Remove ("defaulTdIr"), "#B7");
  432. Assert.IsFalse (builder.Remove ("userid"), "#B8");
  433. Assert.IsFalse (builder.Remove (string.Empty), "#B9");
  434. Assert.IsFalse (builder.Remove ("\r"), "#B10");
  435. Assert.IsFalse (builder.Remove ("a;"), "#B11");
  436. builder ["Dsn"] = "myDsn";
  437. Assert.IsTrue (builder.Remove ("Dsn"), "#C1");
  438. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#C2");
  439. Assert.IsFalse (builder.Remove ("Dsn"), "#C3");
  440. builder ["Driver"] = "SQL Server";
  441. Assert.IsTrue (builder.Remove ("Driver"), "#D1");
  442. Assert.IsFalse (builder.ContainsKey ("Driver"), "#D2");
  443. Assert.IsFalse (builder.Remove ("Driver"), "#D3");
  444. }
  445. [Test]
  446. public void Remove_Keyword_Null ()
  447. {
  448. try {
  449. builder.Remove (null);
  450. Assert.Fail ("#1");
  451. } catch (ArgumentNullException ex) {
  452. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  453. Assert.IsNull (ex.InnerException, "#3");
  454. Assert.IsNotNull (ex.Message, "#4");
  455. Assert.AreEqual ("keyword", ex.ParamName, "#5");
  456. }
  457. }
  458. [Test]
  459. public void ContainsKey ()
  460. {
  461. builder ["SourceType"] = "DBC";
  462. builder.Add ("Port", "56");
  463. Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
  464. Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
  465. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
  466. Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
  467. Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
  468. builder ["Dsn"] = "myDsn";
  469. Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
  470. builder ["Driver"] = "SQL Server";
  471. Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
  472. builder ["abc"] = "pqr";
  473. Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
  474. Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
  475. builder = new DbConnectionStringBuilder (false);
  476. builder ["SourceType"] = "DBC";
  477. builder.Add ("Port", "56");
  478. Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
  479. Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
  480. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
  481. Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
  482. Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
  483. builder ["Dsn"] = "myDsn";
  484. Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
  485. builder ["Driver"] = "SQL Server";
  486. Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
  487. builder ["abc"] = "pqr";
  488. Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
  489. Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
  490. builder = new DbConnectionStringBuilder (true);
  491. builder ["SourceType"] = "DBC";
  492. builder.Add ("Port", "56");
  493. Assert.IsTrue (builder.ContainsKey ("SourceType"), "#A1");
  494. Assert.IsTrue (builder.ContainsKey ("Port"), "#A2");
  495. Assert.IsFalse (builder.ContainsKey ("Dsn"), "#A3");
  496. Assert.IsFalse (builder.ContainsKey ("Driver"), "#A4");
  497. Assert.IsFalse (builder.ContainsKey ("xyz"), "#A5");
  498. builder ["Dsn"] = "myDsn";
  499. Assert.IsTrue (builder.ContainsKey ("Dsn"), "#A6");
  500. builder ["Driver"] = "SQL Server";
  501. Assert.IsTrue (builder.ContainsKey ("Driver"), "#A7");
  502. builder ["abc"] = "pqr";
  503. Assert.IsTrue (builder.ContainsKey ("ABC"), "#A8");
  504. Assert.IsFalse (builder.ContainsKey (string.Empty), "#A9");
  505. }
  506. [Test]
  507. public void ContainsKey_Keyword_Null ()
  508. {
  509. builder ["SourceType"] = "DBC";
  510. try {
  511. builder.ContainsKey (null);
  512. Assert.Fail ("#1");
  513. } catch (ArgumentNullException ex) {
  514. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  515. Assert.IsNull (ex.InnerException, "#3");
  516. Assert.IsNotNull (ex.Message, "#4");
  517. Assert.AreEqual ("keyword", ex.ParamName, "#5");
  518. }
  519. }
  520. [Test]
  521. public void EquivalentToTest ()
  522. {
  523. builder.Add (SERVER, SERVER_VALUE);
  524. DbConnectionStringBuilder sb2 = new DbConnectionStringBuilder ();
  525. sb2.Add (SERVER, SERVER_VALUE);
  526. bool value = builder.EquivalentTo (sb2);
  527. Assert.IsTrue (value, "builder comparision does not work!");
  528. // negative tests
  529. sb2.Add (SERVER + "1", SERVER_VALUE);
  530. value = builder.EquivalentTo (sb2);
  531. Assert.IsFalse (value, "builder comparision does not work for not equivalent strings!");
  532. }
  533. [Test] // AppendKeyValuePair (StringBuilder, String, String)
  534. public void AppendKeyValuePair1 ()
  535. {
  536. StringBuilder sb = new StringBuilder ();
  537. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure");
  538. Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A1");
  539. sb.Length = 0;
  540. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture");
  541. Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A2");
  542. sb.Length = 0;
  543. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture");
  544. Assert.AreEqual ("Database='Adven\"ture'", sb.ToString (), "#A3");
  545. sb.Length = 0;
  546. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"");
  547. Assert.AreEqual ("Database='\"Adventure\"'", sb.ToString (), "#A4");
  548. sb.Length = 0;
  549. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"");
  550. Assert.AreEqual ("Database=\"\"\"Adven'ture\"\"\"", sb.ToString (), "#A5");
  551. sb.Length = 0;
  552. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture");
  553. Assert.AreEqual ("Database=\"Adven;ture\"", sb.ToString (), "#B1");
  554. sb.Length = 0;
  555. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;");
  556. Assert.AreEqual ("Database=\"Adventure;\"", sb.ToString (), "#B2");
  557. sb.Length = 0;
  558. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure");
  559. Assert.AreEqual ("Database=\";Adventure\"", sb.ToString (), "#B3");
  560. sb.Length = 0;
  561. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture");
  562. Assert.AreEqual ("Database=\"Adv'en;ture\"", sb.ToString (), "#B4");
  563. sb.Length = 0;
  564. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture");
  565. Assert.AreEqual ("Database='Adv\"en;ture'", sb.ToString (), "#B5");
  566. sb.Length = 0;
  567. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture");
  568. Assert.AreEqual ("Database=\"A'dv\"\"en;ture\"", sb.ToString (), "#B6");
  569. sb.Length = 0;
  570. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"");
  571. Assert.AreEqual ("Database='\"Adven;ture\"'", sb.ToString (), "#B7");
  572. sb.Length = 0;
  573. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture");
  574. Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C1");
  575. sb.Length = 0;
  576. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture");
  577. Assert.AreEqual ("Database=\"Adv'en=ture\"", sb.ToString (), "#C2");
  578. sb.Length = 0;
  579. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture");
  580. Assert.AreEqual ("Database='Adv\"en=ture'", sb.ToString (), "#C3");
  581. sb.Length = 0;
  582. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture");
  583. Assert.AreEqual ("Database=\"A'dv\"\"en=ture\"", sb.ToString (), "#C4");
  584. sb.Length = 0;
  585. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"");
  586. Assert.AreEqual ("Database='\"Adven=ture\"'", sb.ToString (), "#C5");
  587. sb.Length = 0;
  588. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture");
  589. Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D1");
  590. sb.Length = 0;
  591. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture");
  592. Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D2");
  593. sb.Length = 0;
  594. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure");
  595. Assert.AreEqual ("Database={Adventure", sb.ToString (), "#D3");
  596. sb.Length = 0;
  597. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure");
  598. Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D4");
  599. sb.Length = 0;
  600. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{");
  601. Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D5");
  602. sb.Length = 0;
  603. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}");
  604. Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D6");
  605. sb.Length = 0;
  606. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture");
  607. Assert.AreEqual ("Database=\"Adv'en{ture\"", sb.ToString (), "#D7");
  608. sb.Length = 0;
  609. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture");
  610. Assert.AreEqual ("Database=\"Adv'en}ture\"", sb.ToString (), "#D8");
  611. sb.Length = 0;
  612. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture");
  613. Assert.AreEqual ("Database='Adv\"en{ture'", sb.ToString (), "#D9");
  614. sb.Length = 0;
  615. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture");
  616. Assert.AreEqual ("Database='Adv\"en}ture'", sb.ToString (), "#D10");
  617. sb.Length = 0;
  618. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture");
  619. Assert.AreEqual ("Database=\"A'dv\"\"en{ture\"", sb.ToString (), "#D11");
  620. sb.Length = 0;
  621. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture");
  622. Assert.AreEqual ("Database=\"A'dv\"\"en}ture\"", sb.ToString (), "#D12");
  623. sb.Length = 0;
  624. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"");
  625. Assert.AreEqual ("Database='\"Adven{ture\"'", sb.ToString (), "#D13");
  626. sb.Length = 0;
  627. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"");
  628. Assert.AreEqual ("Database='\"Adven}ture\"'", sb.ToString (), "#D14");
  629. sb.Length = 0;
  630. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure");
  631. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost");
  632. Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E1");
  633. sb.Length = 0;
  634. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty);
  635. Assert.AreEqual ("Database=", sb.ToString (), "#E2");
  636. sb.Length = 0;
  637. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null);
  638. Assert.AreEqual ("Database=", sb.ToString (), "#E3");
  639. sb.Length = 0;
  640. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", false);
  641. Assert.AreEqual ("Datab==ase=\"Adven=ture\"", sb.ToString (), "#F1");
  642. }
  643. [Test] // AppendKeyValuePair (StringBuilder, String, String)
  644. public void AppendKeyValuePair1_Builder_Null ()
  645. {
  646. try {
  647. DbConnectionStringBuilder.AppendKeyValuePair (
  648. (StringBuilder) null, "Server",
  649. "localhost");
  650. Assert.Fail ("#1");
  651. } catch (ArgumentNullException ex) {
  652. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  653. Assert.IsNull (ex.InnerException, "#3");
  654. Assert.IsNotNull (ex.Message, "#4");
  655. Assert.AreEqual ("builder", ex.ParamName, "#5");
  656. }
  657. }
  658. [Test] // AppendKeyValuePair (StringBuilder, String, String)
  659. public void AppendKeyValuePair1_Keyword_Empty ()
  660. {
  661. StringBuilder sb = new StringBuilder ();
  662. try {
  663. DbConnectionStringBuilder.AppendKeyValuePair (
  664. sb, string.Empty, "localhost");
  665. Assert.Fail ("#1");
  666. } catch (ArgumentException ex) {
  667. // Expecting non-empty string for 'keyName'
  668. // parameter
  669. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  670. Assert.IsNull (ex.InnerException, "#3");
  671. Assert.IsNotNull (ex.Message, "#4");
  672. Assert.IsNull (ex.ParamName, "#5");
  673. }
  674. }
  675. [Test] // AppendKeyValuePair (StringBuilder, String, String)
  676. public void AppendKeyValuePair1_Keyword_Null ()
  677. {
  678. StringBuilder sb = new StringBuilder ();
  679. try {
  680. DbConnectionStringBuilder.AppendKeyValuePair (
  681. sb, (string) null, "localhost");
  682. Assert.Fail ("#1");
  683. } catch (ArgumentNullException ex) {
  684. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  685. Assert.IsNull (ex.InnerException, "#3");
  686. Assert.IsNotNull (ex.Message, "#4");
  687. Assert.AreEqual ("keyName", ex.ParamName, "#5");
  688. }
  689. }
  690. [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
  691. public void AppendKeyValuePair2_UseOdbcRules_False ()
  692. {
  693. StringBuilder sb = new StringBuilder ();
  694. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", false);
  695. Assert.AreEqual ("Database=\"Adventure Works\"", sb.ToString (), "#A1");
  696. sb.Length = 0;
  697. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", false);
  698. Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A2");
  699. sb.Length = 0;
  700. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture Works", false);
  701. Assert.AreEqual ("Database=\"Adven'ture Works\"", sb.ToString (), "#A3");
  702. sb.Length = 0;
  703. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture", false);
  704. Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A4");
  705. sb.Length = 0;
  706. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture Works", false);
  707. Assert.AreEqual ("Database='Adven\"ture Works'", sb.ToString (), "#A5");
  708. sb.Length = 0;
  709. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture", false);
  710. Assert.AreEqual ("Database='Adven\"ture'", sb.ToString (), "#A6");
  711. sb.Length = 0;
  712. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure Works\"", false);
  713. Assert.AreEqual ("Database='\"Adventure Works\"'", sb.ToString (), "#A7");
  714. sb.Length = 0;
  715. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"", false);
  716. Assert.AreEqual ("Database='\"Adventure\"'", sb.ToString (), "#A8");
  717. sb.Length = 0;
  718. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture Works\"", false);
  719. Assert.AreEqual ("Database=\"\"\"Adven'ture Works\"\"\"", sb.ToString (), "#A9");
  720. sb.Length = 0;
  721. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"", false);
  722. Assert.AreEqual ("Database=\"\"\"Adven'ture\"\"\"", sb.ToString (), "#A10");
  723. sb.Length = 0;
  724. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture Works", false);
  725. Assert.AreEqual ("Database=\"Adven;ture Works\"", sb.ToString (), "#B1");
  726. sb.Length = 0;
  727. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture", false);
  728. Assert.AreEqual ("Database=\"Adven;ture\"", sb.ToString (), "#B2");
  729. sb.Length = 0;
  730. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works;", false);
  731. Assert.AreEqual ("Database=\"Adventure Works;\"", sb.ToString (), "#B3");
  732. sb.Length = 0;
  733. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;", false);
  734. Assert.AreEqual ("Database=\"Adventure;\"", sb.ToString (), "#B4");
  735. sb.Length = 0;
  736. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure Works", false);
  737. Assert.AreEqual ("Database=\";Adventure Works\"", sb.ToString (), "#B5");
  738. sb.Length = 0;
  739. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure", false);
  740. Assert.AreEqual ("Database=\";Adventure\"", sb.ToString (), "#B6");
  741. sb.Length = 0;
  742. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture Works", false);
  743. Assert.AreEqual ("Database=\"Adv'en;ture Works\"", sb.ToString (), "#B7");
  744. sb.Length = 0;
  745. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture", false);
  746. Assert.AreEqual ("Database=\"Adv'en;ture\"", sb.ToString (), "#B8");
  747. sb.Length = 0;
  748. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture Works", false);
  749. Assert.AreEqual ("Database='Adv\"en;ture Works'", sb.ToString (), "#B9");
  750. sb.Length = 0;
  751. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture", false);
  752. Assert.AreEqual ("Database='Adv\"en;ture'", sb.ToString (), "#B10");
  753. sb.Length = 0;
  754. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture Works", false);
  755. Assert.AreEqual ("Database=\"A'dv\"\"en;ture Works\"", sb.ToString (), "#B11");
  756. sb.Length = 0;
  757. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture", false);
  758. Assert.AreEqual ("Database=\"A'dv\"\"en;ture\"", sb.ToString (), "#B12");
  759. sb.Length = 0;
  760. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture Works\"", false);
  761. Assert.AreEqual ("Database='\"Adven;ture Works\"'", sb.ToString (), "#B13");
  762. sb.Length = 0;
  763. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"", false);
  764. Assert.AreEqual ("Database='\"Adven;ture\"'", sb.ToString (), "#B14");
  765. sb.Length = 0;
  766. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture Works", false);
  767. Assert.AreEqual ("Database=\"Adven=ture Works\"", sb.ToString (), "#C1");
  768. sb.Length = 0;
  769. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture", false);
  770. Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C2");
  771. sb.Length = 0;
  772. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture Works", false);
  773. Assert.AreEqual ("Database=\"Adv'en=ture Works\"", sb.ToString (), "#C3");
  774. sb.Length = 0;
  775. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture", false);
  776. Assert.AreEqual ("Database=\"Adv'en=ture\"", sb.ToString (), "#C4");
  777. sb.Length = 0;
  778. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture Works", false);
  779. Assert.AreEqual ("Database='Adv\"en=ture Works'", sb.ToString (), "#C5");
  780. sb.Length = 0;
  781. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture", false);
  782. Assert.AreEqual ("Database='Adv\"en=ture'", sb.ToString (), "#C6");
  783. sb.Length = 0;
  784. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture Works", false);
  785. Assert.AreEqual ("Database=\"A'dv\"\"en=ture Works\"", sb.ToString (), "#C7");
  786. sb.Length = 0;
  787. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture", false);
  788. Assert.AreEqual ("Database=\"A'dv\"\"en=ture\"", sb.ToString (), "#C8");
  789. sb.Length = 0;
  790. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture Works\"", false);
  791. Assert.AreEqual ("Database='\"Adven=ture Works\"'", sb.ToString (), "#C9");
  792. sb.Length = 0;
  793. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"", false);
  794. Assert.AreEqual ("Database='\"Adven=ture\"'", sb.ToString (), "#C10");
  795. sb.Length = 0;
  796. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture Works", false);
  797. Assert.AreEqual ("Database=\"Adven{ture Works\"", sb.ToString (), "#D1");
  798. sb.Length = 0;
  799. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture", false);
  800. Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D2");
  801. sb.Length = 0;
  802. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture Works", false);
  803. Assert.AreEqual ("Database=\"Adven}ture Works\"", sb.ToString (), "#D3");
  804. sb.Length = 0;
  805. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture", false);
  806. Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D4");
  807. sb.Length = 0;
  808. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works", false);
  809. Assert.AreEqual ("Database=\"{Adventure Works\"", sb.ToString (), "#D5");
  810. sb.Length = 0;
  811. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure", false);
  812. Assert.AreEqual ("Database={Adventure", sb.ToString (), "#D6");
  813. sb.Length = 0;
  814. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure Works", false);
  815. Assert.AreEqual ("Database=\"}Adventure Works\"", sb.ToString (), "#D7");
  816. sb.Length = 0;
  817. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure", false);
  818. Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D8");
  819. sb.Length = 0;
  820. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works{", false);
  821. Assert.AreEqual ("Database=\"Adventure Works{\"", sb.ToString (), "#D9");
  822. sb.Length = 0;
  823. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{", false);
  824. Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D10");
  825. sb.Length = 0;
  826. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works}", false);
  827. Assert.AreEqual ("Database=\"Adventure Works}\"", sb.ToString (), "#D11");
  828. sb.Length = 0;
  829. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}", false);
  830. Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D12");
  831. sb.Length = 0;
  832. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture Works", false);
  833. Assert.AreEqual ("Database=\"Adv'en{ture Works\"", sb.ToString (), "#D13");
  834. sb.Length = 0;
  835. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture", false);
  836. Assert.AreEqual ("Database=\"Adv'en{ture\"", sb.ToString (), "#D14");
  837. sb.Length = 0;
  838. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture Works", false);
  839. Assert.AreEqual ("Database=\"Adv'en}ture Works\"", sb.ToString (), "#D15");
  840. sb.Length = 0;
  841. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture", false);
  842. Assert.AreEqual ("Database=\"Adv'en}ture\"", sb.ToString (), "#D16");
  843. sb.Length = 0;
  844. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture Works", false);
  845. Assert.AreEqual ("Database='Adv\"en{ture Works'", sb.ToString (), "#D17");
  846. sb.Length = 0;
  847. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture", false);
  848. Assert.AreEqual ("Database='Adv\"en{ture'", sb.ToString (), "#D18");
  849. sb.Length = 0;
  850. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture Works", false);
  851. Assert.AreEqual ("Database='Adv\"en}ture Works'", sb.ToString (), "#D19");
  852. sb.Length = 0;
  853. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture", false);
  854. Assert.AreEqual ("Database='Adv\"en}ture'", sb.ToString (), "#D20");
  855. sb.Length = 0;
  856. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture Works", false);
  857. Assert.AreEqual ("Database=\"A'dv\"\"en{ture Works\"", sb.ToString (), "#D21");
  858. sb.Length = 0;
  859. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture", false);
  860. Assert.AreEqual ("Database=\"A'dv\"\"en{ture\"", sb.ToString (), "#D22");
  861. sb.Length = 0;
  862. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture Works", false);
  863. Assert.AreEqual ("Database=\"A'dv\"\"en}ture Works\"", sb.ToString (), "#D23");
  864. sb.Length = 0;
  865. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture", false);
  866. Assert.AreEqual ("Database=\"A'dv\"\"en}ture\"", sb.ToString (), "#D24");
  867. sb.Length = 0;
  868. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture Works\"", false);
  869. Assert.AreEqual ("Database='\"Adven{ture Works\"'", sb.ToString (), "#D25");
  870. sb.Length = 0;
  871. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"", false);
  872. Assert.AreEqual ("Database='\"Adven{ture\"'", sb.ToString (), "#D26");
  873. sb.Length = 0;
  874. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture Works\"", false);
  875. Assert.AreEqual ("Database='\"Adven}ture Works\"'", sb.ToString (), "#D27");
  876. sb.Length = 0;
  877. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"", false);
  878. Assert.AreEqual ("Database='\"Adven}ture\"'", sb.ToString (), "#D28");
  879. sb.Length = 0;
  880. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}}", false);
  881. Assert.AreEqual ("Database={{{B}}}", sb.ToString (), "#D33a");
  882. sb.Length = 0;
  883. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}}", false);
  884. Assert.AreEqual ("Driver={{{B}}}", sb.ToString (), "#D33b");
  885. sb.Length = 0;
  886. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{A{B{C}D}E}", false);
  887. Assert.AreEqual ("Database={A{B{C}D}E}", sb.ToString (), "#D33c");
  888. sb.Length = 0;
  889. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{A{B{C}D}E}", false);
  890. Assert.AreEqual ("Driver={A{B{C}D}E}", sb.ToString (), "#D33d");
  891. sb.Length = 0;
  892. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}", false);
  893. Assert.AreEqual ("Database={{{B}}", sb.ToString (), "#D33e");
  894. sb.Length = 0;
  895. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}", false);
  896. Assert.AreEqual ("Driver={{{B}}", sb.ToString (), "#D33f");
  897. sb.Length = 0;
  898. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}", false);
  899. Assert.AreEqual ("Database={{{B}", sb.ToString (), "#D33g");
  900. sb.Length = 0;
  901. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}", false);
  902. Assert.AreEqual ("Driver={{{B}", sb.ToString (), "#D33h");
  903. sb.Length = 0;
  904. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}", false);
  905. Assert.AreEqual ("Database={{B}", sb.ToString (), "#D33i");
  906. sb.Length = 0;
  907. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}", false);
  908. Assert.AreEqual ("Driver={{B}", sb.ToString (), "#D33j");
  909. sb.Length = 0;
  910. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}", false);
  911. Assert.AreEqual ("Database={B}}", sb.ToString (), "#D33k");
  912. sb.Length = 0;
  913. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}", false);
  914. Assert.AreEqual ("Driver={B}}", sb.ToString (), "#D33l");
  915. sb.Length = 0;
  916. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}C", false);
  917. Assert.AreEqual ("Database={B}}C", sb.ToString (), "#D33k");
  918. sb.Length = 0;
  919. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}C", false);
  920. Assert.AreEqual ("Driver={B}}C", sb.ToString (), "#D33l");
  921. sb.Length = 0;
  922. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A{B}}", false);
  923. Assert.AreEqual ("Database=A{B}}", sb.ToString (), "#D33k");
  924. sb.Length = 0;
  925. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A{B}}", false);
  926. Assert.AreEqual ("Driver=A{B}}", sb.ToString (), "#D33l");
  927. sb.Length = 0;
  928. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", " {B}} ", false);
  929. Assert.AreEqual ("Database=\" {B}} \"", sb.ToString (), "#D33k");
  930. sb.Length = 0;
  931. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", " {B}} ", false);
  932. Assert.AreEqual ("Driver=\" {B}} \"", sb.ToString (), "#D33l");
  933. sb.Length = 0;
  934. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}}", false);
  935. Assert.AreEqual ("Database={{B}}", sb.ToString (), "#D33a");
  936. sb.Length = 0;
  937. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}}", false);
  938. Assert.AreEqual ("Driver={{B}}", sb.ToString (), "#D33b");
  939. sb.Length = 0;
  940. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}}", false);
  941. Assert.AreEqual ("Database=}}", sb.ToString (), "#D33a");
  942. sb.Length = 0;
  943. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}}", false);
  944. Assert.AreEqual ("Driver=}}", sb.ToString (), "#D33b");
  945. sb.Length = 0;
  946. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}", false);
  947. Assert.AreEqual ("Database=}", sb.ToString (), "#D33a");
  948. sb.Length = 0;
  949. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}", false);
  950. Assert.AreEqual ("Driver=}", sb.ToString (), "#D33b");
  951. sb.Length = 0;
  952. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", false);
  953. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", false);
  954. Assert.AreEqual ("Database=\"Adventure Works\";Server=localhost", sb.ToString (), "#E1");
  955. sb.Length = 0;
  956. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", false);
  957. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", false);
  958. Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E2");
  959. sb.Length = 0;
  960. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty, false);
  961. Assert.AreEqual ("Database=", sb.ToString (), "#E3");
  962. sb.Length = 0;
  963. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null, false);
  964. Assert.AreEqual ("Database=", sb.ToString (), "#E4");
  965. sb.Length = 0;
  966. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", false);
  967. Assert.AreEqual ("Datab==ase=\"Adven=ture\"", sb.ToString (), "#F1");
  968. }
  969. [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
  970. public void AppendKeyValuePair2_UseOdbcRules_True ()
  971. {
  972. StringBuilder sb = new StringBuilder ();
  973. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", true);
  974. Assert.AreEqual ("Database=Adventure Works", sb.ToString (), "#A1a");
  975. sb.Length = 0;
  976. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works", true);
  977. Assert.AreEqual ("Driver={Adventure Works}", sb.ToString (), "#A1b");
  978. sb.Length = 0;
  979. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", true);
  980. Assert.AreEqual ("Database=Adventure", sb.ToString (), "#A2a");
  981. sb.Length = 0;
  982. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure", true);
  983. Assert.AreEqual ("Driver={Adventure}", sb.ToString (), "#A2b");
  984. sb.Length = 0;
  985. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture Works", true);
  986. Assert.AreEqual ("Database=Adven'ture Works", sb.ToString (), "#A3a");
  987. sb.Length = 0;
  988. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven'ture Works", true);
  989. Assert.AreEqual ("Driver={Adven'ture Works}", sb.ToString (), "#A3b");
  990. sb.Length = 0;
  991. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven'ture", true);
  992. Assert.AreEqual ("Database=Adven'ture", sb.ToString (), "#A4a");
  993. sb.Length = 0;
  994. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven'ture", true);
  995. Assert.AreEqual ("Driver={Adven'ture}", sb.ToString (), "#A4b");
  996. sb.Length = 0;
  997. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture Works", true);
  998. Assert.AreEqual ("Database=Adven\"ture Works", sb.ToString (), "#A5a");
  999. sb.Length = 0;
  1000. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven\"ture Works", true);
  1001. Assert.AreEqual ("Driver={Adven\"ture Works}", sb.ToString (), "#A5b");
  1002. sb.Length = 0;
  1003. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven\"ture", true);
  1004. Assert.AreEqual ("Database=Adven\"ture", sb.ToString (), "#A6a");
  1005. sb.Length = 0;
  1006. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven\"ture", true);
  1007. Assert.AreEqual ("Driver={Adven\"ture}", sb.ToString (), "#A6b");
  1008. sb.Length = 0;
  1009. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure Works\"", true);
  1010. Assert.AreEqual ("Database=\"Adventure Works\"", sb.ToString (), "#A7a");
  1011. sb.Length = 0;
  1012. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adventure Works\"", true);
  1013. Assert.AreEqual ("Driver={\"Adventure Works\"}", sb.ToString (), "#A7b");
  1014. sb.Length = 0;
  1015. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adventure\"", true);
  1016. Assert.AreEqual ("Database=\"Adventure\"", sb.ToString (), "#A8a");
  1017. sb.Length = 0;
  1018. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adventure\"", true);
  1019. Assert.AreEqual ("Driver={\"Adventure\"}", sb.ToString (), "#A8b");
  1020. sb.Length = 0;
  1021. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture Works\"", true);
  1022. Assert.AreEqual ("Database=\"Adven'ture Works\"", sb.ToString (), "#A9a");
  1023. sb.Length = 0;
  1024. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven'ture Works\"", true);
  1025. Assert.AreEqual ("Driver={\"Adven'ture Works\"}", sb.ToString (), "#A9b");
  1026. sb.Length = 0;
  1027. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven'ture\"", true);
  1028. Assert.AreEqual ("Database=\"Adven'ture\"", sb.ToString (), "#A10a");
  1029. sb.Length = 0;
  1030. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven'ture\"", true);
  1031. Assert.AreEqual ("Driver={\"Adven'ture\"}", sb.ToString (), "#A10b");
  1032. sb.Length = 0;
  1033. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture Works", true);
  1034. Assert.AreEqual ("Database={Adven;ture Works}", sb.ToString (), "#B1a");
  1035. sb.Length = 0;
  1036. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven;ture Works", true);
  1037. Assert.AreEqual ("Driver={Adven;ture Works}", sb.ToString (), "#B1b");
  1038. sb.Length = 0;
  1039. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven;ture", true);
  1040. Assert.AreEqual ("Database={Adven;ture}", sb.ToString (), "#B2a");
  1041. sb.Length = 0;
  1042. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven;ture", true);
  1043. Assert.AreEqual ("Driver={Adven;ture}", sb.ToString (), "#B2b");
  1044. sb.Length = 0;
  1045. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works;", true);
  1046. Assert.AreEqual ("Database={Adventure Works;}", sb.ToString (), "#B3a");
  1047. sb.Length = 0;
  1048. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works;", true);
  1049. Assert.AreEqual ("Driver={Adventure Works;}", sb.ToString (), "#B3b");
  1050. sb.Length = 0;
  1051. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure;", true);
  1052. Assert.AreEqual ("Database={Adventure;}", sb.ToString (), "#B4a");
  1053. sb.Length = 0;
  1054. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure;", true);
  1055. Assert.AreEqual ("Driver={Adventure;}", sb.ToString (), "#B4b");
  1056. sb.Length = 0;
  1057. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure Works", true);
  1058. Assert.AreEqual ("Database={;Adventure Works}", sb.ToString (), "#B5a");
  1059. sb.Length = 0;
  1060. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", ";Adventure Works", true);
  1061. Assert.AreEqual ("Driver={;Adventure Works}", sb.ToString (), "#B5b");
  1062. sb.Length = 0;
  1063. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", ";Adventure", true);
  1064. Assert.AreEqual ("Database={;Adventure}", sb.ToString (), "#B6a");
  1065. sb.Length = 0;
  1066. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", ";Adventure", true);
  1067. Assert.AreEqual ("Driver={;Adventure}", sb.ToString (), "#B6b");
  1068. sb.Length = 0;
  1069. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture Works", true);
  1070. Assert.AreEqual ("Database={Adv'en;ture Works}", sb.ToString (), "#B7a");
  1071. sb.Length = 0;
  1072. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en;ture Works", true);
  1073. Assert.AreEqual ("Driver={Adv'en;ture Works}", sb.ToString (), "#B7b");
  1074. sb.Length = 0;
  1075. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en;ture", true);
  1076. Assert.AreEqual ("Database={Adv'en;ture}", sb.ToString (), "#B8a");
  1077. sb.Length = 0;
  1078. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en;ture", true);
  1079. Assert.AreEqual ("Driver={Adv'en;ture}", sb.ToString (), "#B8b");
  1080. sb.Length = 0;
  1081. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture Works", true);
  1082. Assert.AreEqual ("Database={Adv\"en;ture Works}", sb.ToString (), "#B9A");
  1083. sb.Length = 0;
  1084. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en;ture Works", true);
  1085. Assert.AreEqual ("Driver={Adv\"en;ture Works}", sb.ToString (), "#B9b");
  1086. sb.Length = 0;
  1087. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en;ture", true);
  1088. Assert.AreEqual ("Database={Adv\"en;ture}", sb.ToString (), "#B10a");
  1089. sb.Length = 0;
  1090. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en;ture", true);
  1091. Assert.AreEqual ("Driver={Adv\"en;ture}", sb.ToString (), "#B10b");
  1092. sb.Length = 0;
  1093. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture Works", true);
  1094. Assert.AreEqual ("Database={A'dv\"en;ture Works}", sb.ToString (), "#B11a");
  1095. sb.Length = 0;
  1096. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en;ture Works", true);
  1097. Assert.AreEqual ("Driver={A'dv\"en;ture Works}", sb.ToString (), "#B11b");
  1098. sb.Length = 0;
  1099. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en;ture", true);
  1100. Assert.AreEqual ("Database={A'dv\"en;ture}", sb.ToString (), "#B12a");
  1101. sb.Length = 0;
  1102. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en;ture", true);
  1103. Assert.AreEqual ("Driver={A'dv\"en;ture}", sb.ToString (), "#B12b");
  1104. sb.Length = 0;
  1105. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture Works\"", true);
  1106. Assert.AreEqual ("Database={\"Adven;ture Works\"}", sb.ToString (), "#B13a");
  1107. sb.Length = 0;
  1108. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven;ture Works\"", true);
  1109. Assert.AreEqual ("Driver={\"Adven;ture Works\"}", sb.ToString (), "#B13b");
  1110. sb.Length = 0;
  1111. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven;ture\"", true);
  1112. Assert.AreEqual ("Database={\"Adven;ture\"}", sb.ToString (), "#B14a");
  1113. sb.Length = 0;
  1114. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven;ture\"", true);
  1115. Assert.AreEqual ("Driver={\"Adven;ture\"}", sb.ToString (), "#B14b");
  1116. sb.Length = 0;
  1117. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture Works", true);
  1118. Assert.AreEqual ("Database=Adven=ture Works", sb.ToString (), "#C1a");
  1119. sb.Length = 0;
  1120. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven=ture Works", true);
  1121. Assert.AreEqual ("Driver={Adven=ture Works}", sb.ToString (), "#C1b");
  1122. sb.Length = 0;
  1123. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven=ture", true);
  1124. Assert.AreEqual ("Database=Adven=ture", sb.ToString (), "#C2a");
  1125. sb.Length = 0;
  1126. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven=ture", true);
  1127. Assert.AreEqual ("Driver={Adven=ture}", sb.ToString (), "#C2b");
  1128. sb.Length = 0;
  1129. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture Works", true);
  1130. Assert.AreEqual ("Database=Adv'en=ture Works", sb.ToString (), "#C3a");
  1131. sb.Length = 0;
  1132. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en=ture Works", true);
  1133. Assert.AreEqual ("Driver={Adv'en=ture Works}", sb.ToString (), "#C3b");
  1134. sb.Length = 0;
  1135. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en=ture", true);
  1136. Assert.AreEqual ("Database=Adv'en=ture", sb.ToString (), "#C4a");
  1137. sb.Length = 0;
  1138. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en=ture", true);
  1139. Assert.AreEqual ("Driver={Adv'en=ture}", sb.ToString (), "#C4b");
  1140. sb.Length = 0;
  1141. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture Works", true);
  1142. Assert.AreEqual ("Database=Adv\"en=ture Works", sb.ToString (), "#C5a");
  1143. sb.Length = 0;
  1144. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en=ture Works", true);
  1145. Assert.AreEqual ("Driver={Adv\"en=ture Works}", sb.ToString (), "#C5b");
  1146. sb.Length = 0;
  1147. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en=ture", true);
  1148. Assert.AreEqual ("Database=Adv\"en=ture", sb.ToString (), "#C6a");
  1149. sb.Length = 0;
  1150. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en=ture", true);
  1151. Assert.AreEqual ("Driver={Adv\"en=ture}", sb.ToString (), "#C6b");
  1152. sb.Length = 0;
  1153. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture Works", true);
  1154. Assert.AreEqual ("Database=A'dv\"en=ture Works", sb.ToString (), "#C7a");
  1155. sb.Length = 0;
  1156. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en=ture Works", true);
  1157. Assert.AreEqual ("Driver={A'dv\"en=ture Works}", sb.ToString (), "#C7b");
  1158. sb.Length = 0;
  1159. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en=ture", true);
  1160. Assert.AreEqual ("Database=A'dv\"en=ture", sb.ToString (), "#C8a");
  1161. sb.Length = 0;
  1162. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en=ture", true);
  1163. Assert.AreEqual ("Driver={A'dv\"en=ture}", sb.ToString (), "#C8b");
  1164. sb.Length = 0;
  1165. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture Works\"", true);
  1166. Assert.AreEqual ("Database=\"Adven=ture Works\"", sb.ToString (), "#C9a");
  1167. sb.Length = 0;
  1168. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven=ture Works\"", true);
  1169. Assert.AreEqual ("Driver={\"Adven=ture Works\"}", sb.ToString (), "#C9b");
  1170. sb.Length = 0;
  1171. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven=ture\"", true);
  1172. Assert.AreEqual ("Database=\"Adven=ture\"", sb.ToString (), "#C10a");
  1173. sb.Length = 0;
  1174. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven=ture\"", true);
  1175. Assert.AreEqual ("Driver={\"Adven=ture\"}", sb.ToString (), "#C10b");
  1176. sb.Length = 0;
  1177. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture Works", true);
  1178. Assert.AreEqual ("Database=Adven{ture Works", sb.ToString (), "#D1a");
  1179. sb.Length = 0;
  1180. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{ture Works", true);
  1181. Assert.AreEqual ("Driver={Adven{ture Works}", sb.ToString (), "#D1b");
  1182. sb.Length = 0;
  1183. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{tu}re Works", true);
  1184. Assert.AreEqual ("Database=Adven{tu}re Works", sb.ToString (), "#D1c");
  1185. sb.Length = 0;
  1186. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{tu}re Works", true);
  1187. Assert.AreEqual ("Driver={Adven{tu}}re Works}", sb.ToString (), "#D1d");
  1188. sb.Length = 0;
  1189. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{ture", true);
  1190. Assert.AreEqual ("Database=Adven{ture", sb.ToString (), "#D2a");
  1191. sb.Length = 0;
  1192. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{ture", true);
  1193. Assert.AreEqual ("Driver={Adven{ture}", sb.ToString (), "#D2b");
  1194. sb.Length = 0;
  1195. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven{tu}re", true);
  1196. Assert.AreEqual ("Database=Adven{tu}re", sb.ToString (), "#D2c");
  1197. sb.Length = 0;
  1198. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven{tu}re", true);
  1199. Assert.AreEqual ("Driver={Adven{tu}}re}", sb.ToString (), "#D2d");
  1200. sb.Length = 0;
  1201. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture Works", true);
  1202. Assert.AreEqual ("Database=Adven}ture Works", sb.ToString (), "#D3a");
  1203. sb.Length = 0;
  1204. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven}ture Works", true);
  1205. Assert.AreEqual ("Driver={Adven}}ture Works}", sb.ToString (), "#D3b");
  1206. sb.Length = 0;
  1207. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adven}ture", true);
  1208. Assert.AreEqual ("Database=Adven}ture", sb.ToString (), "#D4a");
  1209. sb.Length = 0;
  1210. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adven}ture", true);
  1211. Assert.AreEqual ("Driver={Adven}}ture}", sb.ToString (), "#D4b");
  1212. sb.Length = 0;
  1213. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works", true);
  1214. Assert.AreEqual ("Database={{Adventure Works}", sb.ToString (), "#D5a");
  1215. sb.Length = 0;
  1216. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure Works", true);
  1217. Assert.AreEqual ("Driver={{Adventure Works}", sb.ToString (), "#D5b");
  1218. sb.Length = 0;
  1219. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure", true);
  1220. Assert.AreEqual ("Database={{Adventure}", sb.ToString (), "#D6a");
  1221. sb.Length = 0;
  1222. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure", true);
  1223. Assert.AreEqual ("Driver={{Adventure}", sb.ToString (), "#D6b");
  1224. sb.Length = 0;
  1225. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure Works}", true);
  1226. Assert.AreEqual ("Database={Adventure Works}", sb.ToString (), "#D7a");
  1227. sb.Length = 0;
  1228. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure Works}", true);
  1229. Assert.AreEqual ("Driver={Adventure Works}", sb.ToString (), "#D7b");
  1230. sb.Length = 0;
  1231. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu{re Works}", true);
  1232. Assert.AreEqual ("Database={Adventu{re Works}", sb.ToString (), "#D7c");
  1233. sb.Length = 0;
  1234. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu{re Works}", true);
  1235. Assert.AreEqual ("Driver={Adventu{re Works}", sb.ToString (), "#D7d");
  1236. sb.Length = 0;
  1237. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu}re Works}", true);
  1238. Assert.AreEqual ("Database={{Adventu}}re Works}}}", sb.ToString (), "#D7e");
  1239. sb.Length = 0;
  1240. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu}re Works}", true);
  1241. Assert.AreEqual ("Driver={{Adventu}}re Works}}}", sb.ToString (), "#D7f");
  1242. sb.Length = 0;
  1243. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure}", true);
  1244. Assert.AreEqual ("Database={Adventure}", sb.ToString (), "#D8a");
  1245. sb.Length = 0;
  1246. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure}", true);
  1247. Assert.AreEqual ("Driver={Adventure}", sb.ToString (), "#D8b");
  1248. sb.Length = 0;
  1249. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu{re}", true);
  1250. Assert.AreEqual ("Database={Adventu{re}", sb.ToString (), "#D8c");
  1251. sb.Length = 0;
  1252. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu{re}", true);
  1253. Assert.AreEqual ("Driver={Adventu{re}", sb.ToString (), "#D8d");
  1254. sb.Length = 0;
  1255. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventu}re}", true);
  1256. Assert.AreEqual ("Database={{Adventu}}re}}}", sb.ToString (), "#D8e");
  1257. sb.Length = 0;
  1258. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventu}re}", true);
  1259. Assert.AreEqual ("Driver={{Adventu}}re}}}", sb.ToString (), "#D8f");
  1260. sb.Length = 0;
  1261. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adventure }Works", true);
  1262. Assert.AreEqual ("Database={{Adventure }}Works}", sb.ToString (), "#D9a");
  1263. sb.Length = 0;
  1264. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adventure }Works", true);
  1265. Assert.AreEqual ("Driver={{Adventure }}Works}", sb.ToString (), "#D9b");
  1266. sb.Length = 0;
  1267. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{Adven}ture", true);
  1268. Assert.AreEqual ("Database={{Adven}}ture}", sb.ToString (), "#D10a");
  1269. sb.Length = 0;
  1270. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{Adven}ture", true);
  1271. Assert.AreEqual ("Driver={{Adven}}ture}", sb.ToString (), "#D10b");
  1272. sb.Length = 0;
  1273. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure Works", true);
  1274. Assert.AreEqual ("Database=}Adventure Works", sb.ToString (), "#D11a");
  1275. sb.Length = 0;
  1276. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}Adventure Works", true);
  1277. Assert.AreEqual ("Driver={}}Adventure Works}", sb.ToString (), "#D11b");
  1278. sb.Length = 0;
  1279. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}Adventure", true);
  1280. Assert.AreEqual ("Database=}Adventure", sb.ToString (), "#D12a");
  1281. sb.Length = 0;
  1282. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}Adventure", true);
  1283. Assert.AreEqual ("Driver={}}Adventure}", sb.ToString (), "#D12b");
  1284. sb.Length = 0;
  1285. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works{", true);
  1286. Assert.AreEqual ("Database=Adventure Works{", sb.ToString (), "#D13a");
  1287. sb.Length = 0;
  1288. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works{", true);
  1289. Assert.AreEqual ("Driver={Adventure Works{}", sb.ToString (), "#D13b");
  1290. sb.Length = 0;
  1291. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure{", true);
  1292. Assert.AreEqual ("Database=Adventure{", sb.ToString (), "#D14a");
  1293. sb.Length = 0;
  1294. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure{", true);
  1295. Assert.AreEqual ("Driver={Adventure{}", sb.ToString (), "#D14b");
  1296. sb.Length = 0;
  1297. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works}", true);
  1298. Assert.AreEqual ("Database=Adventure Works}", sb.ToString (), "#D15a");
  1299. sb.Length = 0;
  1300. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works}", true);
  1301. Assert.AreEqual ("Driver={Adventure Works}}}", sb.ToString (), "#D15b");
  1302. sb.Length = 0;
  1303. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure}", true);
  1304. Assert.AreEqual ("Database=Adventure}", sb.ToString (), "#D16a");
  1305. sb.Length = 0;
  1306. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure}", true);
  1307. Assert.AreEqual ("Driver={Adventure}}}", sb.ToString (), "#D16b");
  1308. sb.Length = 0;
  1309. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture Works", true);
  1310. Assert.AreEqual ("Database=Adv'en{ture Works", sb.ToString (), "#D17a");
  1311. sb.Length = 0;
  1312. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en{ture Works", true);
  1313. Assert.AreEqual ("Driver={Adv'en{ture Works}", sb.ToString (), "#D17b");
  1314. sb.Length = 0;
  1315. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en{ture", true);
  1316. Assert.AreEqual ("Database=Adv'en{ture", sb.ToString (), "#D18a");
  1317. sb.Length = 0;
  1318. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en{ture", true);
  1319. Assert.AreEqual ("Driver={Adv'en{ture}", sb.ToString (), "#D18b");
  1320. sb.Length = 0;
  1321. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture Works", true);
  1322. Assert.AreEqual ("Database=Adv'en}ture Works", sb.ToString (), "#D19a");
  1323. sb.Length = 0;
  1324. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en}ture Works", true);
  1325. Assert.AreEqual ("Driver={Adv'en}}ture Works}", sb.ToString (), "#D19b");
  1326. sb.Length = 0;
  1327. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv'en}ture", true);
  1328. Assert.AreEqual ("Database=Adv'en}ture", sb.ToString (), "#D20a");
  1329. sb.Length = 0;
  1330. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv'en}ture", true);
  1331. Assert.AreEqual ("Driver={Adv'en}}ture}", sb.ToString (), "#D20b");
  1332. sb.Length = 0;
  1333. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture Works", true);
  1334. Assert.AreEqual ("Database=Adv\"en{ture Works", sb.ToString (), "#D21a");
  1335. sb.Length = 0;
  1336. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en{ture Works", true);
  1337. Assert.AreEqual ("Driver={Adv\"en{ture Works}", sb.ToString (), "#D21b");
  1338. sb.Length = 0;
  1339. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en{ture", true);
  1340. Assert.AreEqual ("Database=Adv\"en{ture", sb.ToString (), "#D22a");
  1341. sb.Length = 0;
  1342. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en{ture", true);
  1343. Assert.AreEqual ("Driver={Adv\"en{ture}", sb.ToString (), "#D22b");
  1344. sb.Length = 0;
  1345. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture Works", true);
  1346. Assert.AreEqual ("Database=Adv\"en}ture Works", sb.ToString (), "#D23a");
  1347. sb.Length = 0;
  1348. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en}ture Works", true);
  1349. Assert.AreEqual ("Driver={Adv\"en}}ture Works}", sb.ToString (), "#D23b");
  1350. sb.Length = 0;
  1351. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adv\"en}ture", true);
  1352. Assert.AreEqual ("Database=Adv\"en}ture", sb.ToString (), "#D24a");
  1353. sb.Length = 0;
  1354. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adv\"en}ture", true);
  1355. Assert.AreEqual ("Driver={Adv\"en}}ture}", sb.ToString (), "#D24b");
  1356. sb.Length = 0;
  1357. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture Works", true);
  1358. Assert.AreEqual ("Database=A'dv\"en{ture Works", sb.ToString (), "#D25a");
  1359. sb.Length = 0;
  1360. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en{ture Works", true);
  1361. Assert.AreEqual ("Driver={A'dv\"en{ture Works}", sb.ToString (), "#D25b");
  1362. sb.Length = 0;
  1363. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en{ture", true);
  1364. Assert.AreEqual ("Database=A'dv\"en{ture", sb.ToString (), "#D26a");
  1365. sb.Length = 0;
  1366. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en{ture", true);
  1367. Assert.AreEqual ("Driver={A'dv\"en{ture}", sb.ToString (), "#D26b");
  1368. sb.Length = 0;
  1369. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture Works", true);
  1370. Assert.AreEqual ("Database=A'dv\"en}ture Works", sb.ToString (), "#D27a");
  1371. sb.Length = 0;
  1372. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en}ture Works", true);
  1373. Assert.AreEqual ("Driver={A'dv\"en}}ture Works}", sb.ToString (), "#D27b");
  1374. sb.Length = 0;
  1375. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A'dv\"en}ture", true);
  1376. Assert.AreEqual ("Database=A'dv\"en}ture", sb.ToString (), "#D28a");
  1377. sb.Length = 0;
  1378. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A'dv\"en}ture", true);
  1379. Assert.AreEqual ("Driver={A'dv\"en}}ture}", sb.ToString (), "#D28b");
  1380. sb.Length = 0;
  1381. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture Works\"", true);
  1382. Assert.AreEqual ("Database=\"Adven{ture Works\"", sb.ToString (), "#D29a");
  1383. sb.Length = 0;
  1384. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven{ture Works\"", true);
  1385. Assert.AreEqual ("Driver={\"Adven{ture Works\"}", sb.ToString (), "#D29b");
  1386. sb.Length = 0;
  1387. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven{ture\"", true);
  1388. Assert.AreEqual ("Database=\"Adven{ture\"", sb.ToString (), "#D30a");
  1389. sb.Length = 0;
  1390. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven{ture\"", true);
  1391. Assert.AreEqual ("Driver={\"Adven{ture\"}", sb.ToString (), "#D30b");
  1392. sb.Length = 0;
  1393. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture Works\"", true);
  1394. Assert.AreEqual ("Database=\"Adven}ture Works\"", sb.ToString (), "#D31a");
  1395. sb.Length = 0;
  1396. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven}ture Works\"", true);
  1397. Assert.AreEqual ("Driver={\"Adven}}ture Works\"}", sb.ToString (), "#D31b");
  1398. sb.Length = 0;
  1399. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "\"Adven}ture\"", true);
  1400. Assert.AreEqual ("Database=\"Adven}ture\"", sb.ToString (), "#D32a");
  1401. sb.Length = 0;
  1402. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "\"Adven}ture\"", true);
  1403. Assert.AreEqual ("Driver={\"Adven}}ture\"}", sb.ToString (), "#D32b");
  1404. sb.Length = 0;
  1405. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}}", true);
  1406. Assert.AreEqual ("Database={{{B}}}", sb.ToString (), "#D33a");
  1407. sb.Length = 0;
  1408. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}}", true);
  1409. Assert.AreEqual ("Driver={{{B}}}", sb.ToString (), "#D33b");
  1410. sb.Length = 0;
  1411. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{A{B{C}D}E}", true);
  1412. Assert.AreEqual ("Database={{A{B{C}}D}}E}}}", sb.ToString (), "#D33c");
  1413. sb.Length = 0;
  1414. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{A{B{C}D}E}", true);
  1415. Assert.AreEqual ("Driver={{A{B{C}}D}}E}}}", sb.ToString (), "#D33d");
  1416. sb.Length = 0;
  1417. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}}", true);
  1418. Assert.AreEqual ("Database={{{{B}}}}}", sb.ToString (), "#D33e");
  1419. sb.Length = 0;
  1420. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}}", true);
  1421. Assert.AreEqual ("Driver={{{{B}}}}}", sb.ToString (), "#D33f");
  1422. sb.Length = 0;
  1423. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{{B}", true);
  1424. Assert.AreEqual ("Database={{{B}", sb.ToString (), "#D33g");
  1425. sb.Length = 0;
  1426. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{{B}", true);
  1427. Assert.AreEqual ("Driver={{{B}", sb.ToString (), "#D33h");
  1428. sb.Length = 0;
  1429. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}", true);
  1430. Assert.AreEqual ("Database={{B}", sb.ToString (), "#D33i");
  1431. sb.Length = 0;
  1432. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}", true);
  1433. Assert.AreEqual ("Driver={{B}", sb.ToString (), "#D33j");
  1434. sb.Length = 0;
  1435. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}", true);
  1436. Assert.AreEqual ("Database={{B}}}}}", sb.ToString (), "#D33k");
  1437. sb.Length = 0;
  1438. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}", true);
  1439. Assert.AreEqual ("Driver={{B}}}}}", sb.ToString (), "#D33l");
  1440. sb.Length = 0;
  1441. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{B}}C", true);
  1442. Assert.AreEqual ("Database={{B}}}}C}", sb.ToString (), "#D33k");
  1443. sb.Length = 0;
  1444. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{B}}C", true);
  1445. Assert.AreEqual ("Driver={{B}}}}C}", sb.ToString (), "#D33l");
  1446. sb.Length = 0;
  1447. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "A{B}}", true);
  1448. Assert.AreEqual ("Database=A{B}}", sb.ToString (), "#D33k");
  1449. sb.Length = 0;
  1450. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "A{B}}", true);
  1451. Assert.AreEqual ("Driver={A{B}}}}}", sb.ToString (), "#D33l");
  1452. sb.Length = 0;
  1453. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", " {B}} ", true);
  1454. Assert.AreEqual ("Database= {B}} ", sb.ToString (), "#D33k");
  1455. sb.Length = 0;
  1456. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", " {B}} ", true);
  1457. Assert.AreEqual ("Driver={ {B}}}} }", sb.ToString (), "#D33l");
  1458. sb.Length = 0;
  1459. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "{{B}}", true);
  1460. Assert.AreEqual ("Database={{{B}}}}}", sb.ToString (), "#D33a");
  1461. sb.Length = 0;
  1462. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "{{B}}", true);
  1463. Assert.AreEqual ("Driver={{{B}}}}}", sb.ToString (), "#D33b");
  1464. sb.Length = 0;
  1465. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}}", true);
  1466. Assert.AreEqual ("Database=}}", sb.ToString (), "#D33a");
  1467. sb.Length = 0;
  1468. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}}", true);
  1469. Assert.AreEqual ("Driver={}}}}}", sb.ToString (), "#D33b");
  1470. sb.Length = 0;
  1471. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "}", true);
  1472. Assert.AreEqual ("Database=}", sb.ToString (), "#D33a");
  1473. sb.Length = 0;
  1474. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "}", true);
  1475. Assert.AreEqual ("Driver={}}}", sb.ToString (), "#D33b");
  1476. sb.Length = 0;
  1477. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure Works", true);
  1478. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
  1479. Assert.AreEqual ("Database=Adventure Works;Server=localhost", sb.ToString (), "#E1a", true);
  1480. sb.Length = 0;
  1481. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure Works", true);
  1482. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
  1483. Assert.AreEqual ("Driver={Adventure Works};Server=localhost", sb.ToString (), "#E1b", true);
  1484. sb.Length = 0;
  1485. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", "Adventure", true);
  1486. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
  1487. Assert.AreEqual ("Database=Adventure;Server=localhost", sb.ToString (), "#E2a", true);
  1488. sb.Length = 0;
  1489. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", "Adventure", true);
  1490. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Server", "localhost", true);
  1491. Assert.AreEqual ("Driver={Adventure};Server=localhost", sb.ToString (), "#E2b", true);
  1492. sb.Length = 0;
  1493. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", string.Empty, true);
  1494. Assert.AreEqual ("Database=", sb.ToString (), "#E3a");
  1495. sb.Length = 0;
  1496. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", string.Empty, true);
  1497. Assert.AreEqual ("Driver=", sb.ToString (), "#E3a");
  1498. sb.Length = 0;
  1499. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Database", null, true);
  1500. Assert.AreEqual ("Database=", sb.ToString (), "#E4a");
  1501. sb.Length = 0;
  1502. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Driver", null, true);
  1503. Assert.AreEqual ("Driver=", sb.ToString (), "#E4b");
  1504. sb.Length = 0;
  1505. DbConnectionStringBuilder.AppendKeyValuePair (sb, "Datab=ase", "Adven=ture", true);
  1506. Assert.AreEqual ("Datab=ase=Adven=ture", sb.ToString (), "#F1");
  1507. }
  1508. [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
  1509. public void AppendKeyValuePair2_Builder_Null ()
  1510. {
  1511. try {
  1512. DbConnectionStringBuilder.AppendKeyValuePair (
  1513. (StringBuilder) null, "Server",
  1514. "localhost", true);
  1515. Assert.Fail ("#A1");
  1516. } catch (ArgumentNullException ex) {
  1517. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
  1518. Assert.IsNull (ex.InnerException, "#A3");
  1519. Assert.IsNotNull (ex.Message, "#A4");
  1520. Assert.AreEqual ("builder", ex.ParamName, "#A5");
  1521. }
  1522. try {
  1523. DbConnectionStringBuilder.AppendKeyValuePair (
  1524. (StringBuilder) null, "Server",
  1525. "localhost", false);
  1526. Assert.Fail ("#B1");
  1527. } catch (ArgumentNullException ex) {
  1528. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
  1529. Assert.IsNull (ex.InnerException, "#B3");
  1530. Assert.IsNotNull (ex.Message, "#B4");
  1531. Assert.AreEqual ("builder", ex.ParamName, "#B5");
  1532. }
  1533. }
  1534. [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
  1535. public void AppendKeyValuePair2_Keyword_Empty ()
  1536. {
  1537. StringBuilder sb = new StringBuilder ();
  1538. try {
  1539. DbConnectionStringBuilder.AppendKeyValuePair (
  1540. sb, string.Empty, "localhost", true);
  1541. Assert.Fail ("#A1");
  1542. } catch (ArgumentException ex) {
  1543. // Expecting non-empty string for 'keyName'
  1544. // parameter
  1545. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  1546. Assert.IsNull (ex.InnerException, "#A3");
  1547. Assert.IsNotNull (ex.Message, "#A4");
  1548. Assert.IsNull (ex.ParamName, "#A5");
  1549. }
  1550. try {
  1551. DbConnectionStringBuilder.AppendKeyValuePair (
  1552. sb, string.Empty, "localhost", false);
  1553. Assert.Fail ("#B1");
  1554. } catch (ArgumentException ex) {
  1555. // Expecting non-empty string for 'keyName'
  1556. // parameter
  1557. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  1558. Assert.IsNull (ex.InnerException, "#B3");
  1559. Assert.IsNotNull (ex.Message, "#B4");
  1560. Assert.IsNull (ex.ParamName, "#B5");
  1561. }
  1562. }
  1563. [Test] // AppendKeyValuePair (StringBuilder, String, String, Boolean)
  1564. public void AppendKeyValuePair2_Keyword_Null ()
  1565. {
  1566. StringBuilder sb = new StringBuilder ();
  1567. try {
  1568. DbConnectionStringBuilder.AppendKeyValuePair (
  1569. sb, (string) null, "localhost", true);
  1570. Assert.Fail ("#A1");
  1571. } catch (ArgumentNullException ex) {
  1572. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
  1573. Assert.IsNull (ex.InnerException, "#A3");
  1574. Assert.IsNotNull (ex.Message, "#A4");
  1575. Assert.AreEqual ("keyName", ex.ParamName, "#A5");
  1576. }
  1577. try {
  1578. DbConnectionStringBuilder.AppendKeyValuePair (
  1579. sb, (string) null, "localhost", false);
  1580. Assert.Fail ("#B1");
  1581. } catch (ArgumentNullException ex) {
  1582. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
  1583. Assert.IsNull (ex.InnerException, "#B3");
  1584. Assert.IsNotNull (ex.Message, "#B4");
  1585. Assert.AreEqual ("keyName", ex.ParamName, "#B5");
  1586. }
  1587. }
  1588. [Test]
  1589. public void ToStringTest ()
  1590. {
  1591. builder.Add (SERVER, SERVER_VALUE);
  1592. string str = builder.ToString ();
  1593. string value = builder.ConnectionString;
  1594. Assert.AreEqual (value, str,
  1595. "ToString shoud return ConnectionString!");
  1596. }
  1597. [Test]
  1598. public void ItemTest ()
  1599. {
  1600. builder.Add (SERVER, SERVER_VALUE);
  1601. string value = (string) builder [SERVER];
  1602. Assert.AreEqual (SERVER_VALUE, value,
  1603. "Item indexor does not retrun correct value!");
  1604. }
  1605. [Test]
  1606. public void ICollectionCopyToTest ()
  1607. {
  1608. KeyValuePair<string, object> [] dict = new KeyValuePair<string, object> [2];
  1609. builder.Add (SERVER, SERVER_VALUE);
  1610. builder.Add (SERVER + "1", SERVER_VALUE + "1");
  1611. int i = 0;
  1612. int j = 1;
  1613. ((ICollection) builder).CopyTo (dict, 0);
  1614. Assert.AreEqual (SERVER, dict [i].Key, "not equal");
  1615. Assert.AreEqual (SERVER_VALUE, dict [i].Value, "not equal");
  1616. Assert.AreEqual (SERVER + "1", dict [j].Key, "not equal");
  1617. Assert.AreEqual (SERVER_VALUE + "1", dict [j].Value, "not equal");
  1618. }
  1619. [Test]
  1620. [ExpectedException (typeof (ArgumentException))]
  1621. public void NegICollectionCopyToTest ()
  1622. {
  1623. KeyValuePair<string, object> [] dict = new KeyValuePair<string, object> [1];
  1624. builder.Add (SERVER, SERVER_VALUE);
  1625. builder.Add (SERVER + "1", SERVER_VALUE + "1");
  1626. ((ICollection) builder).CopyTo (dict, 0);
  1627. Assert.Fail ("Exception Destination Array not enough is not thrown!");
  1628. }
  1629. [Test]
  1630. public void TryGetValueTest ()
  1631. {
  1632. object value = null;
  1633. builder ["DriverID"] = "790";
  1634. builder.Add ("Server", "C:\\");
  1635. Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
  1636. Assert.AreEqual ("790", value, "#A2");
  1637. Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
  1638. Assert.AreEqual ("C:\\", value, "#B2");
  1639. Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
  1640. Assert.IsNull (value, "#C2");
  1641. Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
  1642. Assert.IsNull (value, "#D2");
  1643. Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
  1644. Assert.IsNull (value, "#E2");
  1645. Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
  1646. Assert.IsNull (value, "#F2");
  1647. Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
  1648. Assert.IsNull (value, "#G2");
  1649. Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
  1650. Assert.IsNull (value, "#H2");
  1651. Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
  1652. Assert.IsNull (value, "#I2");
  1653. builder = new DbConnectionStringBuilder (false);
  1654. builder ["DriverID"] = "790";
  1655. builder.Add ("Server", "C:\\");
  1656. Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
  1657. Assert.AreEqual ("790", value, "#A2");
  1658. Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
  1659. Assert.AreEqual ("C:\\", value, "#B2");
  1660. Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
  1661. Assert.IsNull (value, "#C2");
  1662. Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
  1663. Assert.IsNull (value, "#D2");
  1664. Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
  1665. Assert.IsNull (value, "#E2");
  1666. Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
  1667. Assert.IsNull (value, "#F2");
  1668. Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
  1669. Assert.IsNull (value, "#G2");
  1670. Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
  1671. Assert.IsNull (value, "#H2");
  1672. Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
  1673. Assert.IsNull (value, "#I2");
  1674. builder = new DbConnectionStringBuilder (true);
  1675. builder ["DriverID"] = "790";
  1676. builder.Add ("Server", "C:\\");
  1677. Assert.IsTrue (builder.TryGetValue ("DriverID", out value), "#A1");
  1678. Assert.AreEqual ("790", value, "#A2");
  1679. Assert.IsTrue (builder.TryGetValue ("SERVER", out value), "#B1");
  1680. Assert.AreEqual ("C:\\", value, "#B2");
  1681. Assert.IsFalse (builder.TryGetValue (string.Empty, out value), "#C1");
  1682. Assert.IsNull (value, "#C2");
  1683. Assert.IsFalse (builder.TryGetValue ("a;", out value), "#D1");
  1684. Assert.IsNull (value, "#D2");
  1685. Assert.IsFalse (builder.TryGetValue ("\r", out value), "#E1");
  1686. Assert.IsNull (value, "#E2");
  1687. Assert.IsFalse (builder.TryGetValue (" ", out value), "#F1");
  1688. Assert.IsNull (value, "#F2");
  1689. Assert.IsFalse (builder.TryGetValue ("doesnotexist", out value), "#G1");
  1690. Assert.IsNull (value, "#G2");
  1691. Assert.IsFalse (builder.TryGetValue ("Driver", out value), "#H1");
  1692. Assert.IsNull (value, "#H2");
  1693. Assert.IsFalse (builder.TryGetValue ("Dsn", out value), "#I1");
  1694. Assert.IsNull (value, "#I2");
  1695. }
  1696. [Test]
  1697. public void TryGetValue_Keyword_Null ()
  1698. {
  1699. object value = null;
  1700. try {
  1701. builder.TryGetValue (null, out value);
  1702. Assert.Fail ("#1");
  1703. } catch (ArgumentNullException ex) {
  1704. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1705. Assert.IsNull (ex.InnerException, "#3");
  1706. Assert.IsNotNull (ex.Message, "#4");
  1707. Assert.AreEqual ("keyword", ex.ParamName, "#5");
  1708. }
  1709. }
  1710. [Test]
  1711. [NUnit.Framework.Category ("MobileNotWorking")] // DefaultMemberAttribute is removed by the tuner, causing #3 to fail
  1712. public void ICTD_GetClassNameTest ()
  1713. {
  1714. ICustomTypeDescriptor ictd = (ICustomTypeDescriptor) builder;
  1715. string className = ictd.GetClassName ();
  1716. Assert.AreEqual (builder.GetType ().ToString (), className, "#1");
  1717. AttributeCollection collection = ictd.GetAttributes ();
  1718. Assert.AreEqual (1, collection.Count, "#2");
  1719. object [] attr = builder.GetType ().GetCustomAttributes (typeof (DefaultMemberAttribute), false);
  1720. if (attr.Length > 0) {
  1721. DefaultMemberAttribute defAtt = (DefaultMemberAttribute) attr [0];
  1722. Assert.AreEqual ("Item", defAtt.MemberName, "#3");
  1723. } else
  1724. Assert.Fail ("#3");
  1725. string compName = ictd.GetComponentName ();
  1726. Assert.IsNull (compName, "#4");
  1727. TypeConverter converter = ictd.GetConverter ();
  1728. Assert.AreEqual (typeof (CollectionConverter), converter.GetType (), "#5");
  1729. EventDescriptor evtDesc = ictd.GetDefaultEvent ();
  1730. Assert.IsNull (evtDesc, "#6");
  1731. PropertyDescriptor property = ictd.GetDefaultProperty ();
  1732. Assert.IsNull (property, "#7");
  1733. }
  1734. [Test]
  1735. public void EmbeddedCharTest1 ()
  1736. {
  1737. // Notice how the keywords show up in the connection string
  1738. // in the order they were added.
  1739. // And notice the case of the keyword when added is preserved
  1740. // in the connection string.
  1741. DbConnectionStringBuilder sb = new DbConnectionStringBuilder ();
  1742. sb["Data Source"] = "testdb";
  1743. sb["User ID"] = "someuser";
  1744. sb["Password"] = "abcdef";
  1745. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1746. Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=abcdef",
  1747. sb.ConnectionString, "cs#1");
  1748. sb["Password"] = "abcdef#";
  1749. Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=abcdef#",
  1750. sb.ConnectionString, "cs#2");
  1751. // an embedded single-quote value will result in the value being delimieted with double quotes
  1752. sb["Password"] = "abc\'def";
  1753. Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\"abc\'def\"",
  1754. sb.ConnectionString, "cs#3");
  1755. // an embedded double-quote value will result in the value being delimieted with single quotes
  1756. sb["Password"] = "abc\"def";
  1757. Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\'abc\"def\'",
  1758. sb.ConnectionString, "cs#4");
  1759. // an embedded single-quote and double-quote in the value
  1760. // will result in the value being delimited by double-quotes
  1761. // with the embedded double quote being escaped with two double-quotes
  1762. sb["Password"] = "abc\"d\'ef";
  1763. Assert.AreEqual ("Data Source=testdb;User ID=someuser;Password=\"abc\"\"d\'ef\"",
  1764. sb.ConnectionString, "cs#5");
  1765. sb = new DbConnectionStringBuilder ();
  1766. sb["PASSWORD"] = "abcdef1";
  1767. sb["user id"] = "someuser";
  1768. sb["Data Source"] = "testdb";
  1769. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1770. Assert.AreEqual ("PASSWORD=abcdef1;user id=someuser;Data Source=testdb",
  1771. sb.ConnectionString, "cs#6");
  1772. // case is preserved for a keyword that was added the first time
  1773. sb = new DbConnectionStringBuilder ();
  1774. sb["PassWord"] = "abcdef2";
  1775. sb["uSER iD"] = "someuser";
  1776. sb["DaTa SoUrCe"] = "testdb";
  1777. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1778. Assert.AreEqual ("PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb",
  1779. sb.ConnectionString, "cs#7");
  1780. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1781. sb["passWORD"] = "abc123";
  1782. Assert.AreEqual ("PassWord=abc123;uSER iD=someuser;DaTa SoUrCe=testdb",
  1783. sb.ConnectionString, "cs#8");
  1784. // embedded equal sign in the value will cause the value to be
  1785. // delimited with double-quotes
  1786. sb = new DbConnectionStringBuilder ();
  1787. sb["Password"] = "abc=def";
  1788. sb["Data Source"] = "testdb";
  1789. sb["User ID"] = "someuser";
  1790. Assert.AreEqual ("Password=\"abc=def\";Data Source=testdb;User ID=someuser",
  1791. sb.ConnectionString, "cs#9");
  1792. // embedded semicolon in the value will cause the value to be
  1793. // delimited with double-quotes
  1794. sb = new DbConnectionStringBuilder ();
  1795. sb["Password"] = "abc;def";
  1796. sb["Data Source"] = "testdb";
  1797. sb["User ID"] = "someuser";
  1798. Assert.AreEqual ("Password=\"abc;def\";Data Source=testdb;User ID=someuser",
  1799. sb.ConnectionString, "cs#10");
  1800. // more right parentheses then left parentheses - happily takes it
  1801. sb = new DbConnectionStringBuilder();
  1802. sb.ConnectionString = "Data Source=(((Blah=Something))))))";
  1803. Assert.AreEqual ("data source=\"(((Blah=Something))))))\"",
  1804. sb.ConnectionString, "cs#11");
  1805. // more left curly braces then right curly braces - happily takes it
  1806. sb = new DbConnectionStringBuilder();
  1807. sb.ConnectionString = "Data Source={{{{Blah=Something}}";
  1808. Assert.AreEqual ("data source=\"{{{{Blah=Something}}\"",
  1809. sb.ConnectionString, "cs#12");
  1810. // spaces, empty string, null are treated like an empty string
  1811. // and any previous settings is cleared
  1812. sb.ConnectionString = " ";
  1813. Assert.AreEqual (String.Empty,
  1814. sb.ConnectionString, "cs#13");
  1815. sb.ConnectionString = " ";
  1816. Assert.AreEqual (String.Empty,
  1817. sb.ConnectionString, "cs#14");
  1818. sb.ConnectionString = "";
  1819. Assert.AreEqual (String.Empty,
  1820. sb.ConnectionString, "cs#15");
  1821. sb.ConnectionString = String.Empty;
  1822. Assert.AreEqual (String.Empty,
  1823. sb.ConnectionString, "cs#16");
  1824. sb.ConnectionString = null;
  1825. Assert.AreEqual (String.Empty,
  1826. sb.ConnectionString, "cs#17");
  1827. sb = new DbConnectionStringBuilder();
  1828. Assert.AreEqual (String.Empty,
  1829. sb.ConnectionString, "cs#18");
  1830. }
  1831. [Test]
  1832. public void EmbeddedCharTest2 ()
  1833. {
  1834. DbConnectionStringBuilder sb;
  1835. sb = new DbConnectionStringBuilder ();
  1836. sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
  1837. "Trusted_Connection=Yes Or No;Database=Adventure Works;";
  1838. Assert.AreEqual ("{SQL Server}", sb["Driver"], "#A1");
  1839. Assert.AreEqual ("(local host)", sb["Server"], "#A2");
  1840. Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#A3");
  1841. Assert.AreEqual ("driver=\"{SQL Server}\";server=\"(local host)\";" +
  1842. "trusted_connection=\"Yes Or No\";database=\"Adventure Works\"",
  1843. sb.ConnectionString, "#A4");
  1844. sb = new DbConnectionStringBuilder ();
  1845. sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
  1846. "Trusted_Connection=Yes;Database=AdventureWorks;";
  1847. Assert.AreEqual ("{SQLServer}", sb["Driver"], "#B1");
  1848. Assert.AreEqual ("(local)", sb["Server"], "#B2");
  1849. Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#B3");
  1850. Assert.AreEqual ("driver={SQLServer};server=(local);" +
  1851. "trusted_connection=Yes;database=AdventureWorks",
  1852. sb.ConnectionString, "#B4");
  1853. sb = new DbConnectionStringBuilder (false);
  1854. sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
  1855. "Trusted_Connection=Yes Or No;Database=Adventure Works;";
  1856. Assert.AreEqual ("{SQL Server}", sb["Driver"], "#C1");
  1857. Assert.AreEqual ("(local host)", sb["Server"], "#C2");
  1858. Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#C3");
  1859. Assert.AreEqual ("driver=\"{SQL Server}\";server=\"(local host)\";" +
  1860. "trusted_connection=\"Yes Or No\";database=\"Adventure Works\"",
  1861. sb.ConnectionString, "#C4");
  1862. sb = new DbConnectionStringBuilder (false);
  1863. sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
  1864. "Trusted_Connection=Yes;Database=AdventureWorks;";
  1865. Assert.AreEqual ("{SQLServer}", sb["Driver"], "#D1");
  1866. Assert.AreEqual ("(local)", sb["Server"], "#D2");
  1867. Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#D3");
  1868. Assert.AreEqual ("driver={SQLServer};server=(local);" +
  1869. "trusted_connection=Yes;database=AdventureWorks",
  1870. sb.ConnectionString, "#D4");
  1871. sb = new DbConnectionStringBuilder (true);
  1872. sb.ConnectionString = "Driver={SQL Server};Server=(local host);" +
  1873. "Trusted_Connection=Yes Or No;Database=Adventure Works;";
  1874. Assert.AreEqual ("{SQL Server}", sb["Driver"], "#E1");
  1875. Assert.AreEqual ("(local host)", sb["Server"], "#E2");
  1876. Assert.AreEqual ("Yes Or No", sb["Trusted_Connection"], "#E3");
  1877. Assert.AreEqual ("driver={SQL Server};server=(local host);" +
  1878. "trusted_connection=Yes Or No;database=Adventure Works",
  1879. sb.ConnectionString, "#E4");
  1880. sb = new DbConnectionStringBuilder (true);
  1881. sb.ConnectionString = "Driver={SQLServer};Server=(local);" +
  1882. "Trusted_Connection=Yes;Database=AdventureWorks;";
  1883. Assert.AreEqual ("{SQLServer}", sb["Driver"], "#F1");
  1884. Assert.AreEqual ("(local)", sb["Server"], "#F2");
  1885. Assert.AreEqual ("Yes", sb["Trusted_Connection"], "#F3");
  1886. Assert.AreEqual ("driver={SQLServer};server=(local);" +
  1887. "trusted_connection=Yes;database=AdventureWorks",
  1888. sb.ConnectionString, "#F4");
  1889. }
  1890. [Test]
  1891. public void EmbeddedCharTest3 ()
  1892. {
  1893. string dataSource = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)" +
  1894. "(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=TESTDB)))";
  1895. DbConnectionStringBuilder sb;
  1896. sb = new DbConnectionStringBuilder ();
  1897. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1898. sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
  1899. Assert.AreEqual (dataSource, sb["Data Source"], "#A1");
  1900. Assert.AreEqual ("SCOTT", sb["User ID"], "#A2");
  1901. Assert.AreEqual ("TiGeR", sb["Password"], "#A3");
  1902. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1903. Assert.AreEqual (
  1904. "user id=SCOTT;password=TiGeR;data source=\"(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
  1905. "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
  1906. "(SERVICE_NAME=TESTDB)))\"", sb.ConnectionString, "#A4");
  1907. sb = new DbConnectionStringBuilder (false);
  1908. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1909. sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
  1910. Assert.AreEqual (dataSource, sb["Data Source"], "#B1");
  1911. Assert.AreEqual ("SCOTT", sb["User ID"], "#B2");
  1912. Assert.AreEqual ("TiGeR", sb["Password"], "#B3");
  1913. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1914. Assert.AreEqual (
  1915. "user id=SCOTT;password=TiGeR;data source=\"(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
  1916. "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
  1917. "(SERVICE_NAME=TESTDB)))\"", sb.ConnectionString, "#B4");
  1918. sb = new DbConnectionStringBuilder (true);
  1919. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1920. sb.ConnectionString = "User ID=SCOTT;Password=TiGeR;Data Source=" + dataSource;
  1921. Assert.AreEqual (dataSource, sb["Data Source"], "#C1");
  1922. Assert.AreEqual ("SCOTT", sb["User ID"], "#C2");
  1923. Assert.AreEqual ("TiGeR", sb["Password"], "#C3");
  1924. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1925. Assert.AreEqual (
  1926. "user id=SCOTT;password=TiGeR;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=" +
  1927. "TCP)(HOST=192.168.1.101)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)" +
  1928. "(SERVICE_NAME=TESTDB)))", sb.ConnectionString, "#C4");
  1929. }
  1930. [Test]
  1931. public void EmbeddedCharTest4 ()
  1932. {
  1933. DbConnectionStringBuilder sb;
  1934. sb = new DbConnectionStringBuilder ();
  1935. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1936. sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
  1937. sb["Integrated Security"] = "False";
  1938. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1939. Assert.AreEqual (
  1940. "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
  1941. sb.ConnectionString, "#A");
  1942. sb = new DbConnectionStringBuilder (false);
  1943. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1944. sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
  1945. sb["Integrated Security"] = "False";
  1946. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1947. Assert.AreEqual (
  1948. "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
  1949. sb.ConnectionString, "#B");
  1950. sb = new DbConnectionStringBuilder (true);
  1951. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1952. sb.ConnectionString = "PassWord=abcdef2;uSER iD=someuser;DaTa SoUrCe=testdb";
  1953. sb["Integrated Security"] = "False";
  1954. // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret.")]
  1955. Assert.AreEqual (
  1956. "password=abcdef2;user id=someuser;data source=testdb;Integrated Security=False",
  1957. sb.ConnectionString, "#C");
  1958. }
  1959. [Test]
  1960. public void EmbeddedCharTest5 ()
  1961. {
  1962. 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";
  1963. DbConnectionStringBuilder sb;
  1964. sb = new DbConnectionStringBuilder ();
  1965. sb.ConnectionString = connectionString;
  1966. 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");
  1967. Assert.AreEqual ("{abcdef2}", sb ["A"], "#A2");
  1968. Assert.AreEqual ("some{us", sb ["B"], "#A3");
  1969. Assert.AreEqual ("test}db", sb ["C"], "#A4");
  1970. Assert.AreEqual ("12\"3", sb ["D"], "#A5");
  1971. Assert.AreEqual ("45;6", sb ["E"], "#A6");
  1972. Assert.AreEqual ("AB==C", sb ["F"], "#A7");
  1973. Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#A8");
  1974. Assert.AreEqual ("ABC", sb ["Z"], "#A9");
  1975. Assert.AreEqual ("B==C", sb ["g=c"], "#A10");
  1976. sb = new DbConnectionStringBuilder (false);
  1977. sb.ConnectionString = connectionString;
  1978. 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");
  1979. Assert.AreEqual ("{abcdef2}", sb ["A"], "#B2");
  1980. Assert.AreEqual ("some{us", sb ["B"], "#B3");
  1981. Assert.AreEqual ("test}db", sb ["C"], "#B4");
  1982. Assert.AreEqual ("12\"3", sb ["D"], "#B5");
  1983. Assert.AreEqual ("45;6", sb ["E"], "#B6");
  1984. Assert.AreEqual ("AB==C", sb ["F"], "#B7");
  1985. Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#B8");
  1986. Assert.AreEqual ("ABC", sb ["Z"], "#B9");
  1987. Assert.AreEqual ("B==C", sb ["g=c"], "#B10");
  1988. sb = new DbConnectionStringBuilder (true);
  1989. sb.ConnectionString = connectionString;
  1990. 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");
  1991. Assert.AreEqual ("{abcdef2}", sb ["A"], "#C2");
  1992. Assert.AreEqual ("some{us", sb ["B"], "#C3");
  1993. Assert.AreEqual ("test}db", sb ["C"], "#C4");
  1994. Assert.AreEqual ("12\"3", sb ["D"], "#C5");
  1995. Assert.AreEqual ("\"45", sb ["E"], "#C6");
  1996. Assert.AreEqual ("AB==C", sb ["6\";f"], "#C7");
  1997. Assert.AreEqual ("{1='\"2}", sb ["g{a'}\";f"], "#C8");
  1998. Assert.AreEqual ("ABC", sb ["Z"], "#C9");
  1999. Assert.AreEqual ("=C=B==C", sb ["g"], "#C10");
  2000. }
  2001. [Test]
  2002. public void EmbeddedCharTest6 ()
  2003. {
  2004. string [][] shared_tests = new string [][] {
  2005. new string [] { "A=(B;", "A", "(B", "a=(B" },
  2006. new string [] { "A={B{}", "A", "{B{}", "a={B{}" },
  2007. new string [] { "A={B{{}", "A", "{B{{}", "a={B{{}" },
  2008. new string [] { " A =B{C", "A", "B{C", "a=B{C" },
  2009. new string [] { " A =B{{C}", "A", "B{{C}", "a=B{{C}" },
  2010. new string [] { "A={{{B}}}", "A", "{{{B}}}", "a={{{B}}}" },
  2011. new string [] { "A={B}", "A", "{B}", "a={B}" },
  2012. new string [] { "A= {B}", "A", "{B}", "a={B}" },
  2013. new string [] { " A =BC", "a", "BC", "a=BC" },
  2014. new string [] { "\rA\t=BC", "a", "BC", "a=BC" },
  2015. new string [] { "\rA\t=BC", "a", "BC", "a=BC" },
  2016. new string [] { "A;B=BC", "a;b", "BC", "a;b=BC" },
  2017. };
  2018. string [][] non_odbc_tests = new string [][] {
  2019. new string [] { "A=''", "A", "", "a=" },
  2020. new string [] { "A='BC;D'", "A", "BC;D", "a=\"BC;D\"" },
  2021. new string [] { "A=BC''D", "A", "BC''D", "a=\"BC''D\"" },
  2022. new string [] { "A='\"'", "A", "\"", "a='\"'" },
  2023. new string [] { "A=B\"\"C;", "A", "B\"\"C", "a='B\"\"C'" },
  2024. new string [] { "A={B{", "A", "{B{", "a={B{" },
  2025. new string [] { "A={B}C", "A", "{B}C", "a={B}C" },
  2026. new string [] { "A=B'C", "A", "B'C", "a=\"B'C\"" },
  2027. new string [] { "A=B''C", "A", "B''C", "a=\"B''C\"" },
  2028. new string [] { "A= B C ;", "A", "B C", "a=\"B C\"" },
  2029. new string [] { "A={B { }} }", "A", "{B { }} }", "a=\"{B { }} }\"" },
  2030. new string [] { "A={B {{ }} }", "A", "{B {{ }} }", "a=\"{B {{ }} }\"" },
  2031. new string [] { "A= B {C ", "A", "B {C", "a=\"B {C\"" },
  2032. new string [] { "A= B }C ", "A", "B }C", "a=\"B }C\"" },
  2033. new string [] { "A=B }C", "A", "B }C", "a=\"B }C\"" },
  2034. new string [] { "A=B { }C", "A", "B { }C", "a=\"B { }C\"" },
  2035. new string [] { "A= B{C {}}", "A", "B{C {}}", "a=\"B{C {}}\"" },
  2036. new string [] { "A= {C {};B=A", "A", "{C {}", "a=\"{C {}\";b=A" },
  2037. new string [] { "A= {C {} ", "A", "{C {}", "a=\"{C {}\"" },
  2038. new string [] { "A= {C {} ;B=A", "A", "{C {}", "a=\"{C {}\";b=A" },
  2039. new string [] { "A= {C {}}}", "A", "{C {}}}", "a=\"{C {}}}\"" },
  2040. new string [] { "A={B=C}", "A", "{B=C}", "a=\"{B=C}\"" },
  2041. new string [] { "A={B==C}", "A", "{B==C}", "a=\"{B==C}\"" },
  2042. new string [] { "A=B==C", "A", "B==C", "a=\"B==C\"" },
  2043. new string [] { "A={=}", "A", "{=}", "a=\"{=}\"" },
  2044. new string [] { "A={==}", "A", "{==}", "a=\"{==}\"" },
  2045. new string [] { "A=\"B;(C)'\"", "A", "B;(C)'", "a=\"B;(C)'\"" },
  2046. new string [] { "A=B(=)C", "A", "B(=)C", "a=\"B(=)C\"" },
  2047. new string [] { "A=B=C", "A", "B=C", "a=\"B=C\"" },
  2048. new string [] { "A=B(==)C", "A", "B(==)C", "a=\"B(==)C\"" },
  2049. new string [] { "A=B C", "A", "B C", "a=\"B C\"" },
  2050. new string [] { "A= B C ", "A", "B C", "a=\"B C\"" },
  2051. new string [] { "A= B C ", "A", "B C", "a=\"B C\"" },
  2052. new string [] { "A=' B C '", "A", " B C ", "a=\" B C \"" },
  2053. new string [] { "A=\" B C \"", "A", " B C ", "a=\" B C \"" },
  2054. new string [] { "A={ B C }", "A", "{ B C }", "a=\"{ B C }\"" },
  2055. new string [] { "A= B C ;", "A", "B C", "a=\"B C\"" },
  2056. new string [] { "A= B\rC\r\t;", "A", "B\rC", "a=\"B\rC\"" },
  2057. new string [] { "A=\"\"\"B;C\"\"\"", "A", "\"B;C\"", "a='\"B;C\"'" },
  2058. new string [] { "A= \"\"\"B;C\"\"\" ", "A", "\"B;C\"", "a='\"B;C\"'" },
  2059. new string [] { "A='''B;C'''", "A", "'B;C'", "a=\"'B;C'\"" },
  2060. new string [] { "A= '''B;C''' ", "A", "'B;C'", "a=\"'B;C'\"" },
  2061. new string [] { "A={{", "A", "{{", "a={{" },
  2062. new string [] { "A={B C}", "A", "{B C}", "a=\"{B C}\"" },
  2063. new string [] { "A={ B C }", "A", "{ B C }", "a=\"{ B C }\"" },
  2064. new string [] { "A={B {{ } }", "A", "{B {{ } }", "a=\"{B {{ } }\"" },
  2065. new string [] { "A='='", "A", "=", "a=\"=\"" },
  2066. new string [] { "A='=='", "A", "==", "a=\"==\"" },
  2067. new string [] { "A=\"=\"", "A", "=", "a=\"=\"" },
  2068. new string [] { "A=\"==\"", "A", "==", "a=\"==\"" },
  2069. new string [] { "A={B}}", "A", "{B}}", "a={B}}" },
  2070. new string [] { "A=\";\"", "A", ";", "a=\";\"" },
  2071. new string [] { "A(=)=B", "A(", ")=B", "a(=\")=B\"" },
  2072. new string [] { "A==B=C", "A=B", "C", "a==b=C" },
  2073. new string [] { "A===B=C", "A=", "B=C", "a===\"B=C\"" },
  2074. new string [] { "(A=)=BC", "(a", ")=BC", "(a=\")=BC\"" },
  2075. new string [] { "A==C=B==C", "a=c", "B==C", "a==c=\"B==C\"" },
  2076. };
  2077. DbConnectionStringBuilder sb;
  2078. for (int i = 0; i < non_odbc_tests.Length; i++) {
  2079. string [] test = non_odbc_tests [i];
  2080. sb = new DbConnectionStringBuilder ();
  2081. sb.ConnectionString = test [0];
  2082. Assert.AreEqual (test [3], sb.ConnectionString, "#A1:" + i);
  2083. Assert.AreEqual (test [2], sb [test [1]], "#A2:" + i);
  2084. }
  2085. for (int i = 0; i < non_odbc_tests.Length; i++) {
  2086. string [] test = non_odbc_tests [i];
  2087. sb = new DbConnectionStringBuilder (false);
  2088. sb.ConnectionString = test [0];
  2089. Assert.AreEqual (test [3], sb.ConnectionString, "#B1:" + i);
  2090. Assert.AreEqual (test [2], sb [test [1]], "#B2:" + i);
  2091. }
  2092. for (int i = 0; i < shared_tests.Length; i++) {
  2093. string [] test = shared_tests [i];
  2094. sb = new DbConnectionStringBuilder ();
  2095. sb.ConnectionString = test [0];
  2096. Assert.AreEqual (test [3], sb.ConnectionString, "#C1:" + i);
  2097. Assert.AreEqual (test [2], sb [test [1]], "#C2:" + i);
  2098. }
  2099. for (int i = 0; i < shared_tests.Length; i++) {
  2100. string [] test = shared_tests [i];
  2101. sb = new DbConnectionStringBuilder (false);
  2102. sb.ConnectionString = test [0];
  2103. Assert.AreEqual (test [3], sb.ConnectionString, "#D1:" + i);
  2104. Assert.AreEqual (test [2], sb [test [1]], "#D2:" + i);
  2105. }
  2106. string [][] odbc_tests = new string [][] {
  2107. new string [] { "A=B(=)C", "A", "B(=)C", "a=B(=)C" },
  2108. new string [] { "A=B(==)C", "A", "B(==)C", "a=B(==)C" },
  2109. new string [] { "A= B C ;", "A", "B C", "a=B C" },
  2110. new string [] { "A= B\rC\r\t;", "A", "B\rC", "a=B\rC" },
  2111. new string [] { "A='''", "A", "'''", "a='''" },
  2112. new string [] { "A=''", "A", "''", "a=''" },
  2113. new string [] { "A=''B", "A", "''B", "a=''B" },
  2114. new string [] { "A=BC''D", "A", "BC''D", "a=BC''D" },
  2115. new string [] { "A='\"'", "A", "'\"'", "a='\"'" },
  2116. new string [] { "A=\"\"B", "A", "\"\"B", "a=\"\"B"},
  2117. new string [] { "A=B\"\"C;", "A", "B\"\"C", "a=B\"\"C" },
  2118. new string [] { "A=\"B", "A", "\"B", "a=\"B" },
  2119. new string [] { "A=\"", "A", "\"", "a=\"" },
  2120. new string [] { "A=B'C", "A", "B'C", "a=B'C" },
  2121. new string [] { "A=B''C", "A", "B''C", "a=B''C" },
  2122. new string [] { "A='A'C", "A", "'A'C", "a='A'C" },
  2123. new string [] { "A=B C", "A", "B C", "a=B C" },
  2124. new string [] { "A= B C ", "A", "B C", "a=B C" },
  2125. new string [] { "A= B C ", "A", "B C", "a=B C" },
  2126. new string [] { "A=' B C '", "A", "' B C '", "a=' B C '" },
  2127. new string [] { "A=\" B C \"", "A", "\" B C \"", "a=\" B C \"" },
  2128. new string [] { "A={ B C }", "A", "{ B C }", "a={ B C }" },
  2129. new string [] { "A= B C ;", "A", "B C", "a=B C" },
  2130. new string [] { "A=\"\"BC\"\"", "A", "\"\"BC\"\"", "a=\"\"BC\"\"" },
  2131. new string [] { "A=\"\"B\"C\"\";", "A", "\"\"B\"C\"\"", "a=\"\"B\"C\"\"" },
  2132. new string [] { "A= \"\"B\"C\"\" ", "A", "\"\"B\"C\"\"", "a=\"\"B\"C\"\"" },
  2133. new string [] { "A=''BC''", "A", "''BC''", "a=''BC''" },
  2134. new string [] { "A=''B'C'';", "A", "''B'C''", "a=''B'C''" },
  2135. new string [] { "A= ''B'C'' ", "A", "''B'C''", "a=''B'C''" },
  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 { }} }", "A", "{B { }} }", "a={B { }} }" },
  2140. new string [] { "A={ B;= {;=}};= }", "A", "{ B;= {;=}};= }", "a={ B;= {;=}};= }" },
  2141. new string [] { "A={B {{ }} }", "A", "{B {{ }} }", "a={B {{ }} }" },
  2142. new string [] { "A={ B;= {{:= }};= }", "A", "{ B;= {{:= }};= }", "a={ B;= {{:= }};= }" },
  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= {B;{}", "A", "{B;{}", "a={B;{}" },
  2148. new string [] { "A= {B;{}}}", "A", "{B;{}}}", "a={B;{}}}" },
  2149. new string [] { "A= B{C {}}", "A", "B{C {}}", "a=B{C {}}" },
  2150. new string [] { "A= {C {};B=A", "A", "{C {}", "a={C {};b=A" },
  2151. new string [] { "A= {C {} ", "A", "{C {}", "a={C {}" },
  2152. new string [] { "A= {C {} ;B=A", "A", "{C {}", "a={C {};b=A" },
  2153. new string [] { "A= {C {}}}", "A", "{C {}}}", "a={C {}}}" },
  2154. new string [] { "A={B=C}", "A", "{B=C}", "a={B=C}" },
  2155. new string [] { "A={B==C}", "A", "{B==C}", "a={B==C}" },
  2156. new string [] { "A=B==C", "A", "B==C", "a=B==C" },
  2157. new string [] { "A='='", "A", "'='", "a='='" },
  2158. new string [] { "A='=='", "A", "'=='", "a='=='" },
  2159. new string [] { "A=\"=\"", "A", "\"=\"", "a=\"=\"" },
  2160. new string [] { "A=\"==\"", "A", "\"==\"", "a=\"==\"" },
  2161. new string [] { "A={=}", "A", "{=}", "a={=}" },
  2162. new string [] { "A={==}", "A", "{==}", "a={==}" },
  2163. new string [] { "A=B=C", "A", "B=C", "a=B=C" },
  2164. new string [] { "A(=)=B", "A(", ")=B", "a(=)=B" },
  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=C", "A'", "'=B=C", "a'='=B=C" },
  2168. new string [] { "A\"=\"=B=C", "A\"", "\"=B=C", "a\"=\"=B=C" },
  2169. new string [] { "\"A=\"=BC", "\"a", "\"=BC", "\"a=\"=BC" },
  2170. new string [] { "(A=)=BC", "(a", ")=BC", "(a=)=BC" },
  2171. new string [] { "A==C=B==C", "A", "=C=B==C", "a==C=B==C" },
  2172. };
  2173. for (int i = 0; i < odbc_tests.Length; i++) {
  2174. string [] test = odbc_tests [i];
  2175. sb = new DbConnectionStringBuilder (true);
  2176. sb.ConnectionString = test [0];
  2177. Assert.AreEqual (test [3], sb.ConnectionString, "#E1:" + i);
  2178. Assert.AreEqual (test [2], sb [test [1]], "#E2:" + i);
  2179. }
  2180. for (int i = 0; i < shared_tests.Length; i++) {
  2181. string [] test = shared_tests [i];
  2182. sb = new DbConnectionStringBuilder (true);
  2183. sb.ConnectionString = test [0];
  2184. Assert.AreEqual (test [3], sb.ConnectionString, "#F1:" + i);
  2185. Assert.AreEqual (test [2], sb [test [1]], "#F2:" + i);
  2186. }
  2187. // each test that is in odbc_tests and not in non_odbc_tests
  2188. // (or vice versa) should result in an ArgumentException
  2189. AssertValueTest (non_odbc_tests, odbc_tests, true, "#G:");
  2190. AssertValueTest (odbc_tests, non_odbc_tests, false, "#H:");
  2191. }
  2192. [Test]
  2193. public void EmbeddedChar_ConnectionString_Invalid ()
  2194. {
  2195. string [] tests = new string [] {
  2196. " =",
  2197. "=",
  2198. "=;",
  2199. "=ABC;",
  2200. "='A'",
  2201. "A",
  2202. "A=(B;)",
  2203. "A=B';'C",
  2204. "A=B { {;} }",
  2205. "A=B { ; }C",
  2206. "A=BC'E;F'D",
  2207. };
  2208. DbConnectionStringBuilder [] cbs = new DbConnectionStringBuilder [] {
  2209. new DbConnectionStringBuilder (),
  2210. new DbConnectionStringBuilder (false),
  2211. new DbConnectionStringBuilder (true)
  2212. };
  2213. for (int i = 0; i < tests.Length; i++) {
  2214. for (int j = 0; j < cbs.Length; j++) {
  2215. DbConnectionStringBuilder cb =cbs [j];
  2216. try {
  2217. cb.ConnectionString = tests [i];
  2218. Assert.Fail ("#1:" + i + " (" + j + ")");
  2219. } catch (ArgumentException ex) {
  2220. // Format of the initialization string does
  2221. // not conform to specification starting
  2222. // at index 0
  2223. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2:"+ i + " (" + j + ")");
  2224. Assert.IsNull (ex.InnerException, "#3:" + i + " (" + j + ")");
  2225. Assert.IsNotNull (ex.Message, "#4:" + i + " (" + j + ")");
  2226. Assert.IsNull (ex.ParamName, "#5:" + i + " (" + j + ")");
  2227. }
  2228. }
  2229. }
  2230. }
  2231. void AssertValueTest (string [][] tests1, string [][] tests2, bool useOdbc, string prefix)
  2232. {
  2233. DbConnectionStringBuilder sb = new DbConnectionStringBuilder (useOdbc);
  2234. for (int i = 0; i < tests1.Length; i++) {
  2235. string [] test1 = tests1 [i];
  2236. bool found = false;
  2237. for (int j = 0; j < tests2.Length; j++) {
  2238. string [] test2 = tests2 [j];
  2239. if (test2 [0] == test1 [0]) {
  2240. found = true;
  2241. if (test2 [1] != test1 [1])
  2242. continue;
  2243. if (test2 [2] != test1 [2])
  2244. continue;
  2245. if (test2 [3] != test1 [3])
  2246. continue;
  2247. Assert.Fail (string.Format (
  2248. "{0}test1 {1} and test2 {2} " +
  2249. "should be moved to shared_tests.",
  2250. prefix, i, j));
  2251. }
  2252. }
  2253. if (found)
  2254. continue;
  2255. try {
  2256. sb.ConnectionString = test1 [0];
  2257. Assert.Fail (prefix + "1 (" + i + ")");
  2258. } catch (ArgumentException ex) {
  2259. // Format of the initialization string does
  2260. // not conform to specification starting
  2261. // at index 0
  2262. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), prefix + "2 (" + i + ")");
  2263. Assert.IsNull (ex.InnerException, prefix + "3 (" + i + ")");
  2264. Assert.IsNotNull (ex.Message, prefix + "4 (" + i + ")");
  2265. Assert.IsNull (ex.ParamName, prefix + "5 (" + i + ")");
  2266. }
  2267. }
  2268. // check uniqueness of tests
  2269. for (int i = 0; i < tests1.Length; i++) {
  2270. for (int j = 0; j < tests1.Length; j++) {
  2271. if (i == j)
  2272. continue;
  2273. if (tests1 [i] == tests1 [j])
  2274. Assert.Fail (string.Format (
  2275. "{0}Duplicate test in test1 " +
  2276. "{1} and {2}.", prefix, i, j));
  2277. }
  2278. }
  2279. // check uniqueness of tests
  2280. for (int i = 0; i < tests2.Length; i++) {
  2281. for (int j = 0; j < tests2.Length; j++) {
  2282. if (i == j)
  2283. continue;
  2284. if (tests2 [i] == tests2 [j])
  2285. Assert.Fail (string.Format (
  2286. "{0}Duplicate test in test2 " +
  2287. "{1} and {2}.", prefix, i, j));
  2288. }
  2289. }
  2290. }
  2291. }
  2292. }