DbConnectionStringBuilderTest.cs 112 KB

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