2
0

WebClientTest.cs 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252
  1. //
  2. // WebClientTest.cs - NUnit Test Cases for System.Net.WebClient
  3. //
  4. // Copyright (C) 2007 Novell, Inc (http://www.novell.com)
  5. //
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Specialized;
  9. using System.Globalization;
  10. using System.IO;
  11. using System.Net;
  12. using System.Net.Sockets;
  13. using System.Runtime.Serialization;
  14. using System.Text;
  15. using System.Threading;
  16. using NUnit.Framework;
  17. namespace MonoTests.System.Net
  18. {
  19. [TestFixture]
  20. public class WebClientTest
  21. {
  22. private string _tempFolder;
  23. [SetUp]
  24. public void SetUp ()
  25. {
  26. _tempFolder = Path.Combine (Path.GetTempPath (),
  27. GetType ().FullName);
  28. if (Directory.Exists (_tempFolder))
  29. Directory.Delete (_tempFolder, true);
  30. Directory.CreateDirectory (_tempFolder);
  31. }
  32. [TearDown]
  33. public void TearDown ()
  34. {
  35. if (Directory.Exists (_tempFolder))
  36. Directory.Delete (_tempFolder, true);
  37. }
  38. [Test]
  39. [Category ("InetAccess")]
  40. public void DownloadTwice ()
  41. {
  42. WebClient wc = new WebClient();
  43. string filename = Path.GetTempFileName();
  44. // A new, but empty file has been created. This is a test case
  45. // for bug 81005
  46. wc.DownloadFile("http://google.com/", filename);
  47. // Now, remove the file and attempt to download again.
  48. File.Delete(filename);
  49. wc.DownloadFile("http://google.com/", filename);
  50. }
  51. [Test]
  52. public void DownloadData1_Address_Null ()
  53. {
  54. WebClient wc = new WebClient ();
  55. try {
  56. wc.DownloadData ((string) null);
  57. Assert.Fail ("#1");
  58. #if NET_2_0
  59. } catch (ArgumentNullException ex) {
  60. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  61. Assert.IsNull (ex.InnerException, "#3");
  62. Assert.IsNotNull (ex.Message, "#4");
  63. Assert.IsNotNull (ex.ParamName, "#5");
  64. Assert.AreEqual ("address", ex.ParamName, "#6");
  65. }
  66. #else
  67. } catch (WebException ex) {
  68. // An error occurred performing a WebClient request
  69. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  70. Assert.IsNotNull (ex.Message, "#3");
  71. Assert.IsNull (ex.Response, "#4");
  72. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  73. ArgumentNullException inner = ex.InnerException
  74. as ArgumentNullException;
  75. Assert.IsNotNull (inner, "#6");
  76. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  77. Assert.IsNull (inner.InnerException, "#8");
  78. Assert.IsNotNull (inner.Message, "#9");
  79. Assert.IsNotNull (inner.ParamName, "#10");
  80. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  81. }
  82. #endif
  83. }
  84. [Test] // DownloadData (string)
  85. public void DownloadData1_Address_SchemeNotSupported ()
  86. {
  87. WebClient wc = new WebClient ();
  88. try {
  89. wc.DownloadData ("tp://scheme.notsupported");
  90. Assert.Fail ("#1");
  91. } catch (WebException ex) {
  92. // An error occurred performing a WebClient request
  93. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  94. Assert.IsNotNull (ex.InnerException, "#3");
  95. Assert.IsNotNull (ex.Message, "#4");
  96. Assert.IsNull (ex.Response, "#5");
  97. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  98. // The URI prefix is not recognized
  99. Exception inner = ex.InnerException;
  100. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  101. Assert.IsNull (inner.InnerException, "#8");
  102. Assert.IsNotNull (inner.Message, "#9");
  103. }
  104. }
  105. #if NET_2_0
  106. [Test] // DownloadData (Uri)
  107. public void DownloadData2_Address_Null ()
  108. {
  109. WebClient wc = new WebClient ();
  110. try {
  111. wc.DownloadData ((Uri) null);
  112. Assert.Fail ("#1");
  113. } catch (ArgumentNullException ex) {
  114. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  115. Assert.IsNull (ex.InnerException, "#3");
  116. Assert.IsNotNull (ex.Message, "#4");
  117. Assert.IsNotNull (ex.ParamName, "#5");
  118. Assert.AreEqual ("address", ex.ParamName, "#6");
  119. }
  120. }
  121. [Test] // DownloadData (Uri)
  122. public void DownloadData2_Address_SchemeNotSupported ()
  123. {
  124. WebClient wc = new WebClient ();
  125. try {
  126. wc.DownloadData (new Uri ("tp://scheme.notsupported"));
  127. Assert.Fail ("#1");
  128. } catch (WebException ex) {
  129. // An error occurred performing a WebClient request
  130. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  131. Assert.IsNotNull (ex.InnerException, "#3");
  132. Assert.IsNotNull (ex.Message, "#4");
  133. Assert.IsNull (ex.Response, "#5");
  134. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  135. // The URI prefix is not recognized
  136. Exception inner = ex.InnerException;
  137. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  138. Assert.IsNull (inner.InnerException, "#8");
  139. Assert.IsNotNull (inner.Message, "#9");
  140. }
  141. }
  142. #endif
  143. [Test]
  144. public void DownloadFile1_Address_Null ()
  145. {
  146. WebClient wc = new WebClient ();
  147. try {
  148. wc.DownloadFile ((string) null, "tmp.out");
  149. Assert.Fail ("#1");
  150. #if NET_2_0
  151. } catch (ArgumentNullException ex) {
  152. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  153. Assert.IsNull (ex.InnerException, "#3");
  154. Assert.IsNotNull (ex.Message, "#4");
  155. Assert.IsNotNull (ex.ParamName, "#5");
  156. Assert.AreEqual ("address", ex.ParamName, "#6");
  157. }
  158. #else
  159. } catch (WebException ex) {
  160. // An error occurred performing a WebClient request
  161. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  162. Assert.IsNotNull (ex.Message, "#3");
  163. Assert.IsNull (ex.Response, "#4");
  164. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  165. ArgumentNullException inner = ex.InnerException
  166. as ArgumentNullException;
  167. Assert.IsNotNull (inner, "#6");
  168. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  169. Assert.IsNull (inner.InnerException, "#8");
  170. Assert.IsNotNull (inner.Message, "#9");
  171. Assert.IsNotNull (inner.ParamName, "#10");
  172. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  173. }
  174. #endif
  175. }
  176. [Test] // DownloadFile (string, string)
  177. public void DownloadFile1_Address_SchemeNotSupported ()
  178. {
  179. string file = Path.Combine (Path.GetTempPath (), "tmp.out");
  180. WebClient wc = new WebClient ();
  181. try {
  182. wc.DownloadFile ("tp://scheme.notsupported", file);
  183. Assert.Fail ("#1");
  184. } catch (WebException ex) {
  185. // An error occurred performing a WebClient request
  186. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  187. Assert.IsNotNull (ex.InnerException, "#3");
  188. Assert.IsNotNull (ex.Message, "#4");
  189. Assert.IsNull (ex.Response, "#5");
  190. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  191. // The URI prefix is not recognized
  192. Exception inner = ex.InnerException;
  193. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  194. Assert.IsNull (inner.InnerException, "#8");
  195. Assert.IsNotNull (inner.Message, "#9");
  196. }
  197. finally {
  198. if (File.Exists (file))
  199. File.Delete (file);
  200. }
  201. }
  202. [Test] // DownloadFile (string, string)
  203. public void DownloadFile1_FileName_Null ()
  204. {
  205. WebClient wc = new WebClient ();
  206. try {
  207. wc.DownloadFile ("tp://scheme.notsupported",
  208. (string) null);
  209. Assert.Fail ("#1");
  210. #if NET_2_0
  211. } catch (ArgumentNullException ex) {
  212. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  213. Assert.IsNull (ex.InnerException, "#3");
  214. Assert.IsNotNull (ex.Message, "#4");
  215. Assert.IsNotNull (ex.ParamName, "#5");
  216. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  217. }
  218. #else
  219. } catch (WebException ex) {
  220. // An error occurred performing a WebClient request
  221. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  222. Assert.IsNotNull (ex.Message, "#3");
  223. Assert.IsNull (ex.Response, "#4");
  224. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  225. ArgumentNullException inner = ex.InnerException
  226. as ArgumentNullException;
  227. Assert.IsNotNull (inner, "#6");
  228. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  229. Assert.IsNull (inner.InnerException, "#8");
  230. Assert.IsNotNull (inner.Message, "#9");
  231. Assert.IsNotNull (inner.ParamName, "#10");
  232. Assert.AreEqual ("path", inner.ParamName, "#11");
  233. }
  234. #endif
  235. }
  236. #if NET_2_0
  237. [Test] // DownloadFile (Uri, string)
  238. public void DownloadFile2_Address_Null ()
  239. {
  240. WebClient wc = new WebClient ();
  241. try {
  242. wc.DownloadFile ((Uri) null, "tmp.out");
  243. Assert.Fail ("#1");
  244. } catch (ArgumentNullException ex) {
  245. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  246. Assert.IsNull (ex.InnerException, "#3");
  247. Assert.IsNotNull (ex.Message, "#4");
  248. Assert.IsNotNull (ex.ParamName, "#5");
  249. Assert.AreEqual ("address", ex.ParamName, "#6");
  250. }
  251. }
  252. [Test] // DownloadFile (Uri, string)
  253. public void DownloadFile2_Address_SchemeNotSupported ()
  254. {
  255. string file = Path.Combine (Path.GetTempPath (), "tmp.out");
  256. WebClient wc = new WebClient ();
  257. try {
  258. wc.DownloadFile (new Uri ("tp://scheme.notsupported"), file);
  259. Assert.Fail ("#1");
  260. } catch (WebException ex) {
  261. // An error occurred performing a WebClient request
  262. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  263. Assert.IsNotNull (ex.InnerException, "#3");
  264. Assert.IsNotNull (ex.Message, "#4");
  265. Assert.IsNull (ex.Response, "#5");
  266. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  267. // The URI prefix is not recognized
  268. Exception inner = ex.InnerException;
  269. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  270. Assert.IsNull (inner.InnerException, "#8");
  271. Assert.IsNotNull (inner.Message, "#9");
  272. }
  273. finally {
  274. if (File.Exists (file))
  275. File.Delete (file);
  276. }
  277. }
  278. [Test] // DownloadFile (Uri, string)
  279. public void DownloadFile2_FileName_Null ()
  280. {
  281. WebClient wc = new WebClient ();
  282. try {
  283. wc.DownloadFile (new Uri ("tp://scheme.notsupported"),
  284. (string) null);
  285. Assert.Fail ("#1");
  286. } catch (ArgumentNullException ex) {
  287. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  288. Assert.IsNull (ex.InnerException, "#3");
  289. Assert.IsNotNull (ex.Message, "#4");
  290. Assert.IsNotNull (ex.ParamName, "#5");
  291. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  292. }
  293. }
  294. [Test] // DownloadString (string)
  295. public void DownloadString1_Address_Null ()
  296. {
  297. WebClient wc = new WebClient ();
  298. try {
  299. wc.DownloadString ((string) null);
  300. Assert.Fail ("#1");
  301. } catch (ArgumentNullException ex) {
  302. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  303. Assert.IsNull (ex.InnerException, "#3");
  304. Assert.IsNotNull (ex.Message, "#4");
  305. Assert.IsNotNull (ex.ParamName, "#5");
  306. Assert.AreEqual ("address", ex.ParamName, "#6");
  307. }
  308. }
  309. [Test] // DownloadString (string)
  310. public void DownloadString1_Address_SchemeNotSupported ()
  311. {
  312. WebClient wc = new WebClient ();
  313. try {
  314. wc.DownloadString ("tp://scheme.notsupported");
  315. Assert.Fail ("#1");
  316. } catch (WebException ex) {
  317. // An error occurred performing a WebClient request
  318. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  319. Assert.IsNotNull (ex.InnerException, "#3");
  320. Assert.IsNotNull (ex.Message, "#4");
  321. Assert.IsNull (ex.Response, "#5");
  322. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  323. // The URI prefix is not recognized
  324. Exception inner = ex.InnerException;
  325. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  326. Assert.IsNull (inner.InnerException, "#8");
  327. Assert.IsNotNull (inner.Message, "#9");
  328. }
  329. }
  330. [Test] // DownloadString (Uri)
  331. public void DownloadString2_Address_Null ()
  332. {
  333. WebClient wc = new WebClient ();
  334. try {
  335. wc.DownloadString ((Uri) null);
  336. Assert.Fail ("#1");
  337. } catch (ArgumentNullException ex) {
  338. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  339. Assert.IsNull (ex.InnerException, "#3");
  340. Assert.IsNotNull (ex.Message, "#4");
  341. Assert.IsNotNull (ex.ParamName, "#5");
  342. Assert.AreEqual ("address", ex.ParamName, "#6");
  343. }
  344. }
  345. [Test] // DownloadString (Uri)
  346. public void DownloadString2_Address_SchemeNotSupported ()
  347. {
  348. WebClient wc = new WebClient ();
  349. try {
  350. wc.DownloadString (new Uri ("tp://scheme.notsupported"));
  351. Assert.Fail ("#1");
  352. } catch (WebException ex) {
  353. // An error occurred performing a WebClient request
  354. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  355. Assert.IsNotNull (ex.InnerException, "#3");
  356. Assert.IsNotNull (ex.Message, "#4");
  357. Assert.IsNull (ex.Response, "#5");
  358. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  359. // The URI prefix is not recognized
  360. Exception inner = ex.InnerException;
  361. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  362. Assert.IsNull (inner.InnerException, "#8");
  363. Assert.IsNotNull (inner.Message, "#9");
  364. }
  365. }
  366. [Test]
  367. public void EncodingTest ()
  368. {
  369. WebClient wc = new WebClient ();
  370. Assert.AreSame (Encoding.Default, wc.Encoding, "#1");
  371. wc.Encoding = Encoding.ASCII;
  372. Assert.AreSame (Encoding.ASCII, wc.Encoding, "#2");
  373. }
  374. [Test]
  375. public void Encoding_Value_Null ()
  376. {
  377. WebClient wc = new WebClient ();
  378. try {
  379. wc.Encoding = null;
  380. Assert.Fail ("#1");
  381. } catch (ArgumentNullException ex) {
  382. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  383. Assert.IsNull (ex.InnerException, "#3");
  384. Assert.IsNotNull (ex.Message, "#4");
  385. Assert.AreEqual ("Encoding", ex.ParamName, "#6");
  386. }
  387. }
  388. #endif
  389. [Test] // OpenRead (string)
  390. public void OpenRead1_Address_Null ()
  391. {
  392. WebClient wc = new WebClient ();
  393. try {
  394. wc.OpenRead ((string) null);
  395. Assert.Fail ("#1");
  396. #if NET_2_0
  397. } catch (ArgumentNullException ex) {
  398. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  399. Assert.IsNull (ex.InnerException, "#3");
  400. Assert.IsNotNull (ex.Message, "#4");
  401. Assert.IsNotNull (ex.ParamName, "#5");
  402. Assert.AreEqual ("address", ex.ParamName, "#6");
  403. }
  404. #else
  405. } catch (WebException ex) {
  406. // An error occurred performing a WebClient request
  407. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  408. Assert.IsNotNull (ex.Message, "#3");
  409. Assert.IsNull (ex.Response, "#4");
  410. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  411. ArgumentNullException inner = ex.InnerException
  412. as ArgumentNullException;
  413. Assert.IsNotNull (inner, "#6");
  414. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  415. Assert.IsNull (inner.InnerException, "#8");
  416. Assert.IsNotNull (inner.Message, "#9");
  417. Assert.IsNotNull (inner.ParamName, "#10");
  418. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  419. }
  420. #endif
  421. }
  422. [Test] // OpenRead (string)
  423. public void OpenRead1_Address_SchemeNotSupported ()
  424. {
  425. WebClient wc = new WebClient ();
  426. try {
  427. wc.OpenRead ("tp://scheme.notsupported");
  428. Assert.Fail ("#1");
  429. } catch (WebException ex) {
  430. // An error occurred performing a WebClient request
  431. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  432. Assert.IsNotNull (ex.InnerException, "#3");
  433. Assert.IsNotNull (ex.Message, "#4");
  434. Assert.IsNull (ex.Response, "#5");
  435. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  436. // The URI prefix is not recognized
  437. Exception inner = ex.InnerException;
  438. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  439. Assert.IsNull (inner.InnerException, "#8");
  440. Assert.IsNotNull (inner.Message, "#9");
  441. }
  442. }
  443. #if NET_2_0
  444. [Test] // OpenRead (Uri)
  445. public void OpenRead2_Address_Null ()
  446. {
  447. WebClient wc = new WebClient ();
  448. try {
  449. wc.OpenRead ((Uri) null);
  450. Assert.Fail ("#1");
  451. } catch (ArgumentNullException ex) {
  452. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  453. Assert.IsNull (ex.InnerException, "#3");
  454. Assert.IsNotNull (ex.Message, "#4");
  455. Assert.IsNotNull (ex.ParamName, "#5");
  456. Assert.AreEqual ("address", ex.ParamName, "#6");
  457. }
  458. }
  459. [Test] // OpenRead (Uri)
  460. public void OpenRead2_Address_SchemeNotSupported ()
  461. {
  462. WebClient wc = new WebClient ();
  463. try {
  464. wc.OpenRead (new Uri ("tp://scheme.notsupported"));
  465. Assert.Fail ("#1");
  466. } catch (WebException ex) {
  467. // An error occurred performing a WebClient request
  468. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  469. Assert.IsNotNull (ex.InnerException, "#3");
  470. Assert.IsNotNull (ex.Message, "#4");
  471. Assert.IsNull (ex.Response, "#5");
  472. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  473. // The URI prefix is not recognized
  474. Exception inner = ex.InnerException;
  475. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  476. Assert.IsNull (inner.InnerException, "#8");
  477. Assert.IsNotNull (inner.Message, "#9");
  478. }
  479. }
  480. #endif
  481. [Test] // OpenWrite (string)
  482. public void OpenWrite1_Address_Null ()
  483. {
  484. WebClient wc = new WebClient ();
  485. try {
  486. wc.OpenWrite ((string) null);
  487. Assert.Fail ("#1");
  488. #if NET_2_0
  489. } catch (ArgumentNullException ex) {
  490. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  491. Assert.IsNull (ex.InnerException, "#3");
  492. Assert.IsNotNull (ex.Message, "#4");
  493. Assert.IsNotNull (ex.ParamName, "#5");
  494. Assert.AreEqual ("address", ex.ParamName, "#6");
  495. }
  496. #else
  497. } catch (WebException ex) {
  498. // An error occurred performing a WebClient request
  499. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  500. Assert.IsNotNull (ex.Message, "#3");
  501. Assert.IsNull (ex.Response, "#4");
  502. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  503. ArgumentNullException inner = ex.InnerException
  504. as ArgumentNullException;
  505. Assert.IsNotNull (inner, "#6");
  506. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  507. Assert.IsNull (inner.InnerException, "#8");
  508. Assert.IsNotNull (inner.Message, "#9");
  509. Assert.IsNotNull (inner.ParamName, "#10");
  510. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  511. }
  512. #endif
  513. }
  514. [Test] // OpenWrite (string)
  515. public void OpenWrite1_Address_SchemeNotSupported ()
  516. {
  517. WebClient wc = new WebClient ();
  518. try {
  519. wc.OpenWrite ("tp://scheme.notsupported");
  520. Assert.Fail ("#1");
  521. } catch (WebException ex) {
  522. // An error occurred performing a WebClient request
  523. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  524. Assert.IsNotNull (ex.InnerException, "#3");
  525. Assert.IsNotNull (ex.Message, "#4");
  526. Assert.IsNull (ex.Response, "#5");
  527. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  528. // The URI prefix is not recognized
  529. Exception inner = ex.InnerException;
  530. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  531. Assert.IsNull (inner.InnerException, "#8");
  532. Assert.IsNotNull (inner.Message, "#9");
  533. }
  534. }
  535. [Test] // OpenWrite (string, string)
  536. public void OpenWrite2_Address_Null ()
  537. {
  538. WebClient wc = new WebClient ();
  539. try {
  540. wc.OpenWrite ((string) null, "PUT");
  541. Assert.Fail ("#1");
  542. #if NET_2_0
  543. } catch (ArgumentNullException ex) {
  544. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  545. Assert.IsNull (ex.InnerException, "#3");
  546. Assert.IsNotNull (ex.Message, "#4");
  547. Assert.IsNotNull (ex.ParamName, "#5");
  548. Assert.AreEqual ("address", ex.ParamName, "#6");
  549. }
  550. #else
  551. } catch (WebException ex) {
  552. // An error occurred performing a WebClient request
  553. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  554. Assert.IsNotNull (ex.Message, "#3");
  555. Assert.IsNull (ex.Response, "#4");
  556. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  557. ArgumentNullException inner = ex.InnerException
  558. as ArgumentNullException;
  559. Assert.IsNotNull (inner, "#6");
  560. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  561. Assert.IsNull (inner.InnerException, "#8");
  562. Assert.IsNotNull (inner.Message, "#9");
  563. Assert.IsNotNull (inner.ParamName, "#10");
  564. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  565. }
  566. #endif
  567. }
  568. [Test] // OpenWrite (string, string)
  569. public void OpenWrite2_Address_SchemeNotSupported ()
  570. {
  571. WebClient wc = new WebClient ();
  572. try {
  573. wc.OpenWrite ("tp://scheme.notsupported", "PUT");
  574. Assert.Fail ("#1");
  575. } catch (WebException ex) {
  576. // An error occurred performing a WebClient request
  577. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  578. Assert.IsNotNull (ex.InnerException, "#3");
  579. Assert.IsNotNull (ex.Message, "#4");
  580. Assert.IsNull (ex.Response, "#5");
  581. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  582. // The URI prefix is not recognized
  583. Exception inner = ex.InnerException;
  584. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  585. Assert.IsNull (inner.InnerException, "#8");
  586. Assert.IsNotNull (inner.Message, "#9");
  587. }
  588. }
  589. #if NET_2_0
  590. [Test] // OpenWrite (Uri)
  591. public void OpenWrite3_Address_Null ()
  592. {
  593. WebClient wc = new WebClient ();
  594. try {
  595. wc.OpenWrite ((Uri) null);
  596. Assert.Fail ("#1");
  597. } catch (ArgumentNullException ex) {
  598. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  599. Assert.IsNull (ex.InnerException, "#3");
  600. Assert.IsNotNull (ex.Message, "#4");
  601. Assert.IsNotNull (ex.ParamName, "#5");
  602. Assert.AreEqual ("address", ex.ParamName, "#6");
  603. }
  604. }
  605. [Test] // OpenWrite (Uri)
  606. public void OpenWrite3_Address_SchemeNotSupported ()
  607. {
  608. WebClient wc = new WebClient ();
  609. try {
  610. wc.OpenWrite (new Uri ("tp://scheme.notsupported"));
  611. Assert.Fail ("#1");
  612. } catch (WebException ex) {
  613. // An error occurred performing a WebClient request
  614. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  615. Assert.IsNotNull (ex.InnerException, "#3");
  616. Assert.IsNotNull (ex.Message, "#4");
  617. Assert.IsNull (ex.Response, "#5");
  618. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  619. // The URI prefix is not recognized
  620. Exception inner = ex.InnerException;
  621. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  622. Assert.IsNull (inner.InnerException, "#8");
  623. Assert.IsNotNull (inner.Message, "#9");
  624. }
  625. }
  626. [Test] // OpenWrite (Uri, string)
  627. public void OpenWrite4_Address_Null ()
  628. {
  629. WebClient wc = new WebClient ();
  630. try {
  631. wc.OpenWrite ((Uri) null, "POST");
  632. Assert.Fail ("#1");
  633. } catch (ArgumentNullException ex) {
  634. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  635. Assert.IsNull (ex.InnerException, "#3");
  636. Assert.IsNotNull (ex.Message, "#4");
  637. Assert.IsNotNull (ex.ParamName, "#5");
  638. Assert.AreEqual ("address", ex.ParamName, "#6");
  639. }
  640. }
  641. [Test] // OpenWrite (Uri, string)
  642. public void OpenWrite4_Address_SchemeNotSupported ()
  643. {
  644. WebClient wc = new WebClient ();
  645. try {
  646. wc.OpenWrite (new Uri ("tp://scheme.notsupported"),
  647. "POST");
  648. Assert.Fail ("#1");
  649. } catch (WebException ex) {
  650. // An error occurred performing a WebClient request
  651. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  652. Assert.IsNotNull (ex.InnerException, "#3");
  653. Assert.IsNotNull (ex.Message, "#4");
  654. Assert.IsNull (ex.Response, "#5");
  655. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  656. // The URI prefix is not recognized
  657. Exception inner = ex.InnerException;
  658. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  659. Assert.IsNull (inner.InnerException, "#8");
  660. Assert.IsNotNull (inner.Message, "#9");
  661. }
  662. }
  663. #endif
  664. [Test] // UploadData (string, byte [])
  665. public void UploadData1_Address_Null ()
  666. {
  667. WebClient wc = new WebClient ();
  668. try {
  669. wc.UploadData ((string) null, new byte [] { 0x1a });
  670. Assert.Fail ("#1");
  671. #if NET_2_0
  672. } catch (ArgumentNullException ex) {
  673. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  674. Assert.IsNull (ex.InnerException, "#3");
  675. Assert.IsNotNull (ex.Message, "#4");
  676. Assert.IsNotNull (ex.ParamName, "#5");
  677. Assert.AreEqual ("address", ex.ParamName, "#6");
  678. }
  679. #else
  680. } catch (WebException ex) {
  681. // An error occurred performing a WebClient request
  682. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  683. Assert.IsNotNull (ex.Message, "#3");
  684. Assert.IsNull (ex.Response, "#4");
  685. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  686. ArgumentNullException inner = ex.InnerException
  687. as ArgumentNullException;
  688. Assert.IsNotNull (inner, "#6");
  689. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  690. Assert.IsNull (inner.InnerException, "#8");
  691. Assert.IsNotNull (inner.Message, "#9");
  692. Assert.IsNotNull (inner.ParamName, "#10");
  693. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  694. }
  695. #endif
  696. }
  697. [Test] // UploadData (string, byte [])
  698. public void UploadData1_Address_SchemeNotSupported ()
  699. {
  700. WebClient wc = new WebClient ();
  701. try {
  702. wc.UploadData ("tp://scheme.notsupported", new byte [] { 0x1a });
  703. Assert.Fail ("#1");
  704. } catch (WebException ex) {
  705. // An error occurred performing a WebClient request
  706. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  707. Assert.IsNotNull (ex.InnerException, "#3");
  708. Assert.IsNotNull (ex.Message, "#4");
  709. Assert.IsNull (ex.Response, "#5");
  710. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  711. // The URI prefix is not recognized
  712. Exception inner = ex.InnerException;
  713. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  714. Assert.IsNull (inner.InnerException, "#8");
  715. Assert.IsNotNull (inner.Message, "#9");
  716. }
  717. }
  718. [Test] // UploadData (string, byte [])
  719. #if ONLY_1_1
  720. [Category ("NotDotNet")] // On MS, there's a nested NotImplementedException
  721. #endif
  722. public void UploadData1_Data_Null ()
  723. {
  724. WebClient wc = new WebClient ();
  725. try {
  726. wc.UploadData ("http://www.mono-project.com",
  727. (byte []) null);
  728. Assert.Fail ("#1");
  729. #if NET_2_0
  730. } catch (ArgumentNullException ex) {
  731. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  732. Assert.IsNull (ex.InnerException, "#3");
  733. Assert.IsNotNull (ex.Message, "#4");
  734. Assert.IsNotNull (ex.ParamName, "#5");
  735. Assert.AreEqual ("data", ex.ParamName, "#6");
  736. }
  737. #else
  738. } catch (WebException ex) {
  739. // An error occurred performing a WebClient request
  740. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  741. Assert.IsNotNull (ex.Message, "#3");
  742. Assert.IsNull (ex.Response, "#4");
  743. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  744. ArgumentNullException inner = ex.InnerException
  745. as ArgumentNullException;
  746. Assert.IsNotNull (inner, "#6");
  747. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  748. Assert.IsNull (inner.InnerException, "#8");
  749. Assert.IsNotNull (inner.Message, "#9");
  750. Assert.IsNotNull (inner.ParamName, "#10");
  751. Assert.AreEqual ("data", inner.ParamName, "#11");
  752. }
  753. #endif
  754. }
  755. #if NET_2_0
  756. [Test] // UploadData (Uri, byte [])
  757. public void UploadData2_Address_Null ()
  758. {
  759. WebClient wc = new WebClient ();
  760. try {
  761. wc.UploadData ((Uri) null, new byte [] { 0x1a });
  762. Assert.Fail ("#1");
  763. } catch (ArgumentNullException ex) {
  764. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  765. Assert.IsNull (ex.InnerException, "#3");
  766. Assert.IsNotNull (ex.Message, "#4");
  767. Assert.IsNotNull (ex.ParamName, "#5");
  768. Assert.AreEqual ("address", ex.ParamName, "#6");
  769. }
  770. }
  771. [Test] // UploadData (Uri, byte [])
  772. public void UploadData2_Address_SchemeNotSupported ()
  773. {
  774. WebClient wc = new WebClient ();
  775. try {
  776. wc.UploadData (new Uri ("tp://scheme.notsupported"),
  777. new byte [] { 0x1a });
  778. Assert.Fail ("#1");
  779. } catch (WebException ex) {
  780. // An error occurred performing a WebClient request
  781. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  782. Assert.IsNotNull (ex.InnerException, "#3");
  783. Assert.IsNotNull (ex.Message, "#4");
  784. Assert.IsNull (ex.Response, "#5");
  785. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  786. // The URI prefix is not recognized
  787. Exception inner = ex.InnerException;
  788. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  789. Assert.IsNull (inner.InnerException, "#8");
  790. Assert.IsNotNull (inner.Message, "#9");
  791. }
  792. }
  793. [Test] // UploadData (Uri, byte [])
  794. public void UploadData2_Data_Null ()
  795. {
  796. WebClient wc = new WebClient ();
  797. try {
  798. wc.UploadData (new Uri ("http://www.mono-project.com"),
  799. (byte []) null);
  800. Assert.Fail ("#1");
  801. } catch (ArgumentNullException ex) {
  802. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  803. Assert.IsNull (ex.InnerException, "#3");
  804. Assert.IsNotNull (ex.Message, "#4");
  805. Assert.IsNotNull (ex.ParamName, "#5");
  806. Assert.AreEqual ("data", ex.ParamName, "#6");
  807. }
  808. }
  809. #endif
  810. [Test] // UploadData (string, string, byte [])
  811. public void UploadData3_Address_Null ()
  812. {
  813. WebClient wc = new WebClient ();
  814. try {
  815. wc.UploadData ((string) null, "POST",
  816. new byte [] { 0x1a });
  817. Assert.Fail ("#1");
  818. #if NET_2_0
  819. } catch (ArgumentNullException ex) {
  820. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  821. Assert.IsNull (ex.InnerException, "#3");
  822. Assert.IsNotNull (ex.Message, "#4");
  823. Assert.IsNotNull (ex.ParamName, "#5");
  824. Assert.AreEqual ("address", ex.ParamName, "#6");
  825. }
  826. #else
  827. } catch (WebException ex) {
  828. // An error occurred performing a WebClient request
  829. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  830. Assert.IsNotNull (ex.Message, "#3");
  831. Assert.IsNull (ex.Response, "#4");
  832. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  833. ArgumentNullException inner = ex.InnerException
  834. as ArgumentNullException;
  835. Assert.IsNotNull (inner, "#6");
  836. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  837. Assert.IsNull (inner.InnerException, "#8");
  838. Assert.IsNotNull (inner.Message, "#9");
  839. Assert.IsNotNull (inner.ParamName, "#10");
  840. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  841. }
  842. #endif
  843. }
  844. [Test] // UploadData (string, string, byte [])
  845. public void UploadData3_Address_SchemeNotSupported ()
  846. {
  847. WebClient wc = new WebClient ();
  848. try {
  849. wc.UploadData ("tp://scheme.notsupported",
  850. "POST", new byte [] { 0x1a });
  851. Assert.Fail ("#1");
  852. } catch (WebException ex) {
  853. // An error occurred performing a WebClient request
  854. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  855. Assert.IsNotNull (ex.InnerException, "#3");
  856. Assert.IsNotNull (ex.Message, "#4");
  857. Assert.IsNull (ex.Response, "#5");
  858. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  859. // The URI prefix is not recognized
  860. Exception inner = ex.InnerException;
  861. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  862. Assert.IsNull (inner.InnerException, "#8");
  863. Assert.IsNotNull (inner.Message, "#9");
  864. }
  865. }
  866. [Test] // UploadData (string, string, byte [])
  867. #if ONLY_1_1
  868. [Category ("NotDotNet")] // On MS, there's a nested NotImplementedException
  869. #endif
  870. public void UploadData3_Data_Null ()
  871. {
  872. WebClient wc = new WebClient ();
  873. try {
  874. wc.UploadData ("http://www.mono-project.com",
  875. "POST", (byte []) null);
  876. Assert.Fail ("#1");
  877. #if NET_2_0
  878. } catch (ArgumentNullException ex) {
  879. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  880. Assert.IsNull (ex.InnerException, "#3");
  881. Assert.IsNotNull (ex.Message, "#4");
  882. Assert.IsNotNull (ex.ParamName, "#5");
  883. Assert.AreEqual ("data", ex.ParamName, "#6");
  884. }
  885. #else
  886. } catch (WebException ex) {
  887. // An error occurred performing a WebClient request
  888. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  889. Assert.IsNotNull (ex.Message, "#3");
  890. Assert.IsNull (ex.Response, "#4");
  891. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  892. ArgumentNullException inner = ex.InnerException
  893. as ArgumentNullException;
  894. Assert.IsNotNull (inner, "#6");
  895. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  896. Assert.IsNull (inner.InnerException, "#8");
  897. Assert.IsNotNull (inner.Message, "#9");
  898. Assert.IsNotNull (inner.ParamName, "#10");
  899. Assert.AreEqual ("data", inner.ParamName, "#11");
  900. }
  901. #endif
  902. }
  903. #if NET_2_0
  904. [Test] // UploadData (Uri, string, byte [])
  905. public void UploadData4_Address_Null ()
  906. {
  907. WebClient wc = new WebClient ();
  908. try {
  909. wc.UploadData ((Uri) null, "POST", new byte [] { 0x1a });
  910. Assert.Fail ("#1");
  911. } catch (ArgumentNullException ex) {
  912. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  913. Assert.IsNull (ex.InnerException, "#3");
  914. Assert.IsNotNull (ex.Message, "#4");
  915. Assert.IsNotNull (ex.ParamName, "#5");
  916. Assert.AreEqual ("address", ex.ParamName, "#6");
  917. }
  918. }
  919. [Test] // UploadData (Uri, string, byte [])
  920. public void UploadData4_Address_SchemeNotSupported ()
  921. {
  922. WebClient wc = new WebClient ();
  923. try {
  924. wc.UploadData (new Uri ("tp://scheme.notsupported"),
  925. "POST", new byte [] { 0x1a });
  926. Assert.Fail ("#1");
  927. } catch (WebException ex) {
  928. // An error occurred performing a WebClient request
  929. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  930. Assert.IsNotNull (ex.InnerException, "#3");
  931. Assert.IsNotNull (ex.Message, "#4");
  932. Assert.IsNull (ex.Response, "#5");
  933. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  934. // The URI prefix is not recognized
  935. Exception inner = ex.InnerException;
  936. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  937. Assert.IsNull (inner.InnerException, "#8");
  938. Assert.IsNotNull (inner.Message, "#9");
  939. }
  940. }
  941. [Test] // UploadData (Uri, string, byte [])
  942. public void UploadData4_Data_Null ()
  943. {
  944. WebClient wc = new WebClient ();
  945. try {
  946. wc.UploadData (new Uri ("http://www.mono-project.com"),
  947. "POST", (byte []) null);
  948. Assert.Fail ("#1");
  949. } catch (ArgumentNullException ex) {
  950. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  951. Assert.IsNull (ex.InnerException, "#3");
  952. Assert.IsNotNull (ex.Message, "#4");
  953. Assert.IsNotNull (ex.ParamName, "#5");
  954. Assert.AreEqual ("data", ex.ParamName, "#6");
  955. }
  956. }
  957. #endif
  958. [Test] // UploadFile (string, string)
  959. public void UploadFile1_Address_Null ()
  960. {
  961. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  962. File.Create (tempFile).Close ();
  963. WebClient wc = new WebClient ();
  964. try {
  965. wc.UploadFile ((string) null, tempFile);
  966. Assert.Fail ("#1");
  967. #if NET_2_0
  968. } catch (ArgumentNullException ex) {
  969. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  970. Assert.IsNull (ex.InnerException, "#3");
  971. Assert.IsNotNull (ex.Message, "#4");
  972. Assert.IsNotNull (ex.ParamName, "#5");
  973. Assert.AreEqual ("address", ex.ParamName, "#6");
  974. }
  975. #else
  976. } catch (WebException ex) {
  977. // An error occurred performing a WebClient request
  978. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  979. Assert.IsNotNull (ex.Message, "#3");
  980. Assert.IsNull (ex.Response, "#4");
  981. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  982. ArgumentNullException inner = ex.InnerException
  983. as ArgumentNullException;
  984. Assert.IsNotNull (inner, "#6");
  985. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  986. Assert.IsNull (inner.InnerException, "#8");
  987. Assert.IsNotNull (inner.Message, "#9");
  988. Assert.IsNotNull (inner.ParamName, "#10");
  989. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  990. }
  991. #endif
  992. }
  993. [Test] // UploadFile (string, string)
  994. public void UploadFile1_Address_SchemeNotSupported ()
  995. {
  996. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  997. File.Create (tempFile).Close ();
  998. WebClient wc = new WebClient ();
  999. try {
  1000. wc.UploadFile ("tp://scheme.notsupported",
  1001. tempFile);
  1002. Assert.Fail ("#1");
  1003. } catch (WebException ex) {
  1004. // An error occurred performing a WebClient request
  1005. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1006. Assert.IsNotNull (ex.InnerException, "#3");
  1007. Assert.IsNotNull (ex.Message, "#4");
  1008. Assert.IsNull (ex.Response, "#5");
  1009. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1010. // The URI prefix is not recognized
  1011. Exception inner = ex.InnerException;
  1012. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1013. Assert.IsNull (inner.InnerException, "#8");
  1014. Assert.IsNotNull (inner.Message, "#9");
  1015. }
  1016. }
  1017. [Test] // UploadFile (string, string)
  1018. public void UploadFile1_FileName_NotFound ()
  1019. {
  1020. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1021. WebClient wc = new WebClient ();
  1022. try {
  1023. wc.UploadFile ("tp://scheme.notsupported",
  1024. tempFile);
  1025. Assert.Fail ("#1");
  1026. } catch (WebException ex) {
  1027. // An error occurred performing a WebClient request
  1028. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1029. Assert.IsNotNull (ex.Message, "#3");
  1030. Assert.IsNull (ex.Response, "#4");
  1031. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1032. // Could not find file "..."
  1033. FileNotFoundException inner = ex.InnerException
  1034. as FileNotFoundException;
  1035. Assert.IsNotNull (inner, "#6");
  1036. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  1037. Assert.IsNotNull (inner.FileName, "#8");
  1038. Assert.AreEqual (tempFile, inner.FileName, "#9");
  1039. Assert.IsNull (inner.InnerException, "#10");
  1040. Assert.IsNotNull (inner.Message, "#11");
  1041. }
  1042. }
  1043. [Test] // UploadFile (string, string)
  1044. public void UploadFile1_FileName_Null ()
  1045. {
  1046. WebClient wc = new WebClient ();
  1047. try {
  1048. wc.UploadFile ("tp://scheme.notsupported",
  1049. (string) null);
  1050. Assert.Fail ("#1");
  1051. #if NET_2_0
  1052. } catch (ArgumentNullException ex) {
  1053. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1054. Assert.IsNull (ex.InnerException, "#3");
  1055. Assert.IsNotNull (ex.Message, "#4");
  1056. Assert.IsNotNull (ex.ParamName, "#5");
  1057. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1058. }
  1059. #else
  1060. } catch (WebException ex) {
  1061. // An error occurred performing a WebClient request
  1062. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1063. Assert.IsNotNull (ex.Message, "#3");
  1064. Assert.IsNull (ex.Response, "#4");
  1065. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1066. ArgumentNullException inner = ex.InnerException
  1067. as ArgumentNullException;
  1068. Assert.IsNotNull (inner, "#6");
  1069. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1070. Assert.IsNull (inner.InnerException, "#8");
  1071. Assert.IsNotNull (inner.Message, "#9");
  1072. Assert.IsNotNull (inner.ParamName, "#10");
  1073. Assert.AreEqual ("path", inner.ParamName, "#11");
  1074. }
  1075. #endif
  1076. }
  1077. #if NET_2_0
  1078. [Test] // UploadFile (Uri, string)
  1079. public void UploadFile2_Address_Null ()
  1080. {
  1081. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1082. WebClient wc = new WebClient ();
  1083. try {
  1084. wc.UploadFile ((Uri) null, tempFile);
  1085. Assert.Fail ("#1");
  1086. } catch (ArgumentNullException ex) {
  1087. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1088. Assert.IsNull (ex.InnerException, "#3");
  1089. Assert.IsNotNull (ex.Message, "#4");
  1090. Assert.IsNotNull (ex.ParamName, "#5");
  1091. Assert.AreEqual ("address", ex.ParamName, "#6");
  1092. }
  1093. }
  1094. [Test] // UploadFile (Uri, string)
  1095. public void UploadFile2_Address_SchemeNotSupported ()
  1096. {
  1097. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1098. File.Create (tempFile).Close ();
  1099. WebClient wc = new WebClient ();
  1100. try {
  1101. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1102. tempFile);
  1103. Assert.Fail ("#1");
  1104. } catch (WebException ex) {
  1105. // An error occurred performing a WebClient request
  1106. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1107. Assert.IsNotNull (ex.InnerException, "#3");
  1108. Assert.IsNotNull (ex.Message, "#4");
  1109. Assert.IsNull (ex.Response, "#5");
  1110. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1111. // The URI prefix is not recognized
  1112. Exception inner = ex.InnerException;
  1113. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1114. Assert.IsNull (inner.InnerException, "#8");
  1115. Assert.IsNotNull (inner.Message, "#9");
  1116. }
  1117. }
  1118. [Test] // UploadFile (Uri, string)
  1119. public void UploadFile2_FileName_NotFound ()
  1120. {
  1121. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1122. WebClient wc = new WebClient ();
  1123. try {
  1124. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1125. tempFile);
  1126. Assert.Fail ("#1");
  1127. } catch (WebException ex) {
  1128. // An error occurred performing a WebClient request
  1129. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1130. Assert.IsNotNull (ex.Message, "#3");
  1131. Assert.IsNull (ex.Response, "#4");
  1132. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1133. // Could not find file "..."
  1134. FileNotFoundException inner = ex.InnerException
  1135. as FileNotFoundException;
  1136. Assert.IsNotNull (inner, "#6");
  1137. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  1138. Assert.IsNotNull (inner.FileName, "#8");
  1139. Assert.AreEqual (tempFile, inner.FileName, "#9");
  1140. Assert.IsNull (inner.InnerException, "#10");
  1141. Assert.IsNotNull (inner.Message, "#11");
  1142. }
  1143. }
  1144. [Test] // UploadFile (Uri, string)
  1145. public void UploadFile2_FileName_Null ()
  1146. {
  1147. WebClient wc = new WebClient ();
  1148. try {
  1149. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1150. null);
  1151. Assert.Fail ("#1");
  1152. } catch (ArgumentNullException ex) {
  1153. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1154. Assert.IsNull (ex.InnerException, "#3");
  1155. Assert.IsNotNull (ex.Message, "#4");
  1156. Assert.IsNotNull (ex.ParamName, "#5");
  1157. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1158. }
  1159. }
  1160. #endif
  1161. [Test] // UploadFile (string, string, string)
  1162. public void UploadFile3_Address_Null ()
  1163. {
  1164. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1165. File.Create (tempFile).Close ();
  1166. WebClient wc = new WebClient ();
  1167. try {
  1168. wc.UploadFile ((string) null, "POST", tempFile);
  1169. Assert.Fail ("#1");
  1170. #if NET_2_0
  1171. } catch (ArgumentNullException ex) {
  1172. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1173. Assert.IsNull (ex.InnerException, "#3");
  1174. Assert.IsNotNull (ex.Message, "#4");
  1175. Assert.IsNotNull (ex.ParamName, "#5");
  1176. Assert.AreEqual ("path", ex.ParamName, "#6");
  1177. }
  1178. #else
  1179. } catch (WebException ex) {
  1180. // An error occurred performing a WebClient request
  1181. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1182. Assert.IsNotNull (ex.Message, "#3");
  1183. Assert.IsNull (ex.Response, "#4");
  1184. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1185. ArgumentNullException inner = ex.InnerException
  1186. as ArgumentNullException;
  1187. Assert.IsNotNull (inner, "#6");
  1188. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1189. Assert.IsNull (inner.InnerException, "#8");
  1190. Assert.IsNotNull (inner.Message, "#9");
  1191. Assert.IsNotNull (inner.ParamName, "#10");
  1192. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  1193. }
  1194. #endif
  1195. }
  1196. [Test] // UploadFile (string, string, string)
  1197. public void UploadFile3_Address_SchemeNotSupported ()
  1198. {
  1199. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1200. File.Create (tempFile).Close ();
  1201. WebClient wc = new WebClient ();
  1202. try {
  1203. wc.UploadFile ("tp://scheme.notsupported",
  1204. "POST", tempFile);
  1205. Assert.Fail ("#1");
  1206. } catch (WebException ex) {
  1207. // An error occurred performing a WebClient request
  1208. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1209. Assert.IsNotNull (ex.InnerException, "#3");
  1210. Assert.IsNotNull (ex.Message, "#4");
  1211. Assert.IsNull (ex.Response, "#5");
  1212. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1213. // The URI prefix is not recognized
  1214. Exception inner = ex.InnerException;
  1215. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1216. Assert.IsNull (inner.InnerException, "#8");
  1217. Assert.IsNotNull (inner.Message, "#9");
  1218. }
  1219. }
  1220. [Test] // UploadFile (string, string, string)
  1221. public void UploadFile3_FileName_NotFound ()
  1222. {
  1223. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1224. WebClient wc = new WebClient ();
  1225. try {
  1226. wc.UploadFile ("tp://scheme.notsupported",
  1227. "POST", tempFile);
  1228. Assert.Fail ("#1");
  1229. } catch (WebException ex) {
  1230. // An error occurred performing a WebClient request
  1231. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1232. Assert.IsNotNull (ex.Message, "#3");
  1233. Assert.IsNull (ex.Response, "#4");
  1234. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1235. // Could not find file "..."
  1236. FileNotFoundException inner = ex.InnerException
  1237. as FileNotFoundException;
  1238. Assert.IsNotNull (inner, "#6");
  1239. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  1240. Assert.IsNotNull (inner.FileName, "#8");
  1241. Assert.AreEqual (tempFile, inner.FileName, "#9");
  1242. Assert.IsNull (inner.InnerException, "#10");
  1243. Assert.IsNotNull (inner.Message, "#11");
  1244. }
  1245. }
  1246. [Test] // UploadFile (string, string, string)
  1247. public void UploadFile3_FileName_Null ()
  1248. {
  1249. WebClient wc = new WebClient ();
  1250. try {
  1251. wc.UploadFile ("tp://scheme.notsupported",
  1252. "POST", (string) null);
  1253. Assert.Fail ("#1");
  1254. #if NET_2_0
  1255. } catch (ArgumentNullException ex) {
  1256. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1257. Assert.IsNull (ex.InnerException, "#3");
  1258. Assert.IsNotNull (ex.Message, "#4");
  1259. Assert.IsNotNull (ex.ParamName, "#5");
  1260. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1261. }
  1262. #else
  1263. } catch (WebException ex) {
  1264. // An error occurred performing a WebClient request
  1265. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1266. Assert.IsNotNull (ex.Message, "#3");
  1267. Assert.IsNull (ex.Response, "#4");
  1268. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1269. ArgumentNullException inner = ex.InnerException
  1270. as ArgumentNullException;
  1271. Assert.IsNotNull (inner, "#6");
  1272. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1273. Assert.IsNull (inner.InnerException, "#8");
  1274. Assert.IsNotNull (inner.Message, "#9");
  1275. Assert.IsNotNull (inner.ParamName, "#10");
  1276. Assert.AreEqual ("path", inner.ParamName, "#11");
  1277. }
  1278. #endif
  1279. }
  1280. #if NET_2_0
  1281. [Test] // UploadFile (Uri, string, string)
  1282. public void UploadFile4_Address_Null ()
  1283. {
  1284. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1285. WebClient wc = new WebClient ();
  1286. try {
  1287. wc.UploadFile ((Uri) null, "POST", tempFile);
  1288. Assert.Fail ("#1");
  1289. } catch (ArgumentNullException ex) {
  1290. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1291. Assert.IsNull (ex.InnerException, "#3");
  1292. Assert.IsNotNull (ex.Message, "#4");
  1293. Assert.IsNotNull (ex.ParamName, "#5");
  1294. Assert.AreEqual ("address", ex.ParamName, "#6");
  1295. }
  1296. }
  1297. [Test] // UploadFile (Uri, string, string)
  1298. public void UploadFile4_Address_SchemeNotSupported ()
  1299. {
  1300. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1301. File.Create (tempFile).Close ();
  1302. WebClient wc = new WebClient ();
  1303. try {
  1304. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1305. "POST", tempFile);
  1306. Assert.Fail ("#1");
  1307. } catch (WebException ex) {
  1308. // An error occurred performing a WebClient request
  1309. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1310. Assert.IsNotNull (ex.InnerException, "#3");
  1311. Assert.IsNotNull (ex.Message, "#4");
  1312. Assert.IsNull (ex.Response, "#5");
  1313. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1314. // The URI prefix is not recognized
  1315. Exception inner = ex.InnerException;
  1316. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1317. Assert.IsNull (inner.InnerException, "#8");
  1318. Assert.IsNotNull (inner.Message, "#9");
  1319. }
  1320. }
  1321. [Test] // UploadFile (Uri, string, string)
  1322. public void UploadFile4_FileName_NotFound ()
  1323. {
  1324. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1325. WebClient wc = new WebClient ();
  1326. try {
  1327. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1328. "POST", tempFile);
  1329. Assert.Fail ("#1");
  1330. } catch (WebException ex) {
  1331. // An error occurred performing a WebClient request
  1332. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1333. Assert.IsNotNull (ex.Message, "#3");
  1334. Assert.IsNull (ex.Response, "#4");
  1335. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1336. // Could not find file "..."
  1337. FileNotFoundException inner = ex.InnerException
  1338. as FileNotFoundException;
  1339. Assert.IsNotNull (inner, "#6");
  1340. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  1341. Assert.IsNotNull (inner.FileName, "#8");
  1342. Assert.AreEqual (tempFile, inner.FileName, "#9");
  1343. Assert.IsNull (inner.InnerException, "#10");
  1344. Assert.IsNotNull (inner.Message, "#11");
  1345. }
  1346. }
  1347. [Test] // UploadFile (Uri, string, string)
  1348. public void UploadFile4_FileName_Null ()
  1349. {
  1350. WebClient wc = new WebClient ();
  1351. try {
  1352. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1353. "POST", (string) null);
  1354. Assert.Fail ("#1");
  1355. } catch (ArgumentNullException ex) {
  1356. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1357. Assert.IsNull (ex.InnerException, "#3");
  1358. Assert.IsNotNull (ex.Message, "#4");
  1359. Assert.IsNotNull (ex.ParamName, "#5");
  1360. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1361. }
  1362. }
  1363. [Test] // UploadString (string, string)
  1364. public void UploadString1_Address_Null ()
  1365. {
  1366. WebClient wc = new WebClient ();
  1367. try {
  1368. wc.UploadString ((string) null, (string) null);
  1369. Assert.Fail ("#1");
  1370. } catch (ArgumentNullException ex) {
  1371. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1372. Assert.IsNull (ex.InnerException, "#3");
  1373. Assert.IsNotNull (ex.Message, "#4");
  1374. Assert.IsNotNull (ex.ParamName, "#5");
  1375. Assert.AreEqual ("address", ex.ParamName, "#6");
  1376. }
  1377. }
  1378. [Test] // UploadString (string, string)
  1379. public void UploadString1_Address_SchemeNotSupported ()
  1380. {
  1381. WebClient wc = new WebClient ();
  1382. try {
  1383. wc.UploadString ("tp://scheme.notsupported", "abc");
  1384. Assert.Fail ("#1");
  1385. } catch (WebException ex) {
  1386. // An error occurred performing a WebClient request
  1387. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1388. Assert.IsNotNull (ex.InnerException, "#3");
  1389. Assert.IsNotNull (ex.Message, "#4");
  1390. Assert.IsNull (ex.Response, "#5");
  1391. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1392. // The URI prefix is not recognized
  1393. Exception inner = ex.InnerException;
  1394. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1395. Assert.IsNull (inner.InnerException, "#8");
  1396. Assert.IsNotNull (inner.Message, "#9");
  1397. }
  1398. }
  1399. [Test] // UploadString (string, string)
  1400. public void UploadString1_Data_Null ()
  1401. {
  1402. WebClient wc = new WebClient ();
  1403. try {
  1404. wc.UploadString ("tp://scheme.notsupported", (string) null);
  1405. Assert.Fail ("#1");
  1406. } catch (ArgumentNullException ex) {
  1407. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1408. Assert.IsNull (ex.InnerException, "#3");
  1409. Assert.IsNotNull (ex.Message, "#4");
  1410. Assert.IsNotNull (ex.ParamName, "#5");
  1411. Assert.AreEqual ("data", ex.ParamName, "#6");
  1412. }
  1413. }
  1414. [Test] // UploadString (Uri, string)
  1415. public void UploadString2_Address_Null ()
  1416. {
  1417. WebClient wc = new WebClient ();
  1418. try {
  1419. wc.UploadString ((Uri) null, (string) null);
  1420. Assert.Fail ("#1");
  1421. } catch (ArgumentNullException ex) {
  1422. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1423. Assert.IsNull (ex.InnerException, "#3");
  1424. Assert.IsNotNull (ex.Message, "#4");
  1425. Assert.IsNotNull (ex.ParamName, "#5");
  1426. Assert.AreEqual ("address", ex.ParamName, "#6");
  1427. }
  1428. }
  1429. [Test] // UploadString (Uri, string)
  1430. public void UploadString2_Address_SchemeNotSupported ()
  1431. {
  1432. WebClient wc = new WebClient ();
  1433. try {
  1434. wc.UploadString (new Uri ("tp://scheme.notsupported"), "abc");
  1435. Assert.Fail ("#1");
  1436. } catch (WebException ex) {
  1437. // An error occurred performing a WebClient request
  1438. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1439. Assert.IsNotNull (ex.InnerException, "#3");
  1440. Assert.IsNotNull (ex.Message, "#4");
  1441. Assert.IsNull (ex.Response, "#5");
  1442. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1443. // The URI prefix is not recognized
  1444. Exception inner = ex.InnerException;
  1445. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1446. Assert.IsNull (inner.InnerException, "#8");
  1447. Assert.IsNotNull (inner.Message, "#9");
  1448. }
  1449. }
  1450. [Test] // UploadString (Uri, string)
  1451. public void UploadString2_Data_Null ()
  1452. {
  1453. WebClient wc = new WebClient ();
  1454. try {
  1455. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1456. (string) null);
  1457. Assert.Fail ("#1");
  1458. } catch (ArgumentNullException ex) {
  1459. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1460. Assert.IsNull (ex.InnerException, "#3");
  1461. Assert.IsNotNull (ex.Message, "#4");
  1462. Assert.IsNotNull (ex.ParamName, "#5");
  1463. Assert.AreEqual ("data", ex.ParamName, "#6");
  1464. }
  1465. }
  1466. [Test] // UploadString (string, string, string)
  1467. public void UploadString3_Address_Null ()
  1468. {
  1469. WebClient wc = new WebClient ();
  1470. try {
  1471. wc.UploadString ((string) null, (string) null,
  1472. (string) null);
  1473. Assert.Fail ("#1");
  1474. } catch (ArgumentNullException ex) {
  1475. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1476. Assert.IsNull (ex.InnerException, "#3");
  1477. Assert.IsNotNull (ex.Message, "#4");
  1478. Assert.IsNotNull (ex.ParamName, "#5");
  1479. Assert.AreEqual ("address", ex.ParamName, "#6");
  1480. }
  1481. }
  1482. [Test] // UploadString (string, string, string)
  1483. public void UploadString3_Address_SchemeNotSupported ()
  1484. {
  1485. WebClient wc = new WebClient ();
  1486. try {
  1487. wc.UploadString ("tp://scheme.notsupported",
  1488. "POST", "abc");
  1489. Assert.Fail ("#1");
  1490. } catch (WebException ex) {
  1491. // An error occurred performing a WebClient request
  1492. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1493. Assert.IsNotNull (ex.InnerException, "#3");
  1494. Assert.IsNotNull (ex.Message, "#4");
  1495. Assert.IsNull (ex.Response, "#5");
  1496. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1497. // The URI prefix is not recognized
  1498. Exception inner = ex.InnerException;
  1499. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1500. Assert.IsNull (inner.InnerException, "#8");
  1501. Assert.IsNotNull (inner.Message, "#9");
  1502. }
  1503. }
  1504. [Test] // UploadString (string, string, string)
  1505. public void UploadString3_Data_Null ()
  1506. {
  1507. WebClient wc = new WebClient ();
  1508. try {
  1509. wc.UploadString ("tp://scheme.notsupported",
  1510. "POST", (string) null);
  1511. Assert.Fail ("#1");
  1512. } catch (ArgumentNullException ex) {
  1513. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1514. Assert.IsNull (ex.InnerException, "#3");
  1515. Assert.IsNotNull (ex.Message, "#4");
  1516. Assert.IsNotNull (ex.ParamName, "#5");
  1517. Assert.AreEqual ("data", ex.ParamName, "#6");
  1518. }
  1519. }
  1520. [Test] // UploadString (Uri, string, string)
  1521. public void UploadString4_Address_Null ()
  1522. {
  1523. WebClient wc = new WebClient ();
  1524. try {
  1525. wc.UploadString ((Uri) null, (string) null,
  1526. (string) null);
  1527. Assert.Fail ("#1");
  1528. } catch (ArgumentNullException ex) {
  1529. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1530. Assert.IsNull (ex.InnerException, "#3");
  1531. Assert.IsNotNull (ex.Message, "#4");
  1532. Assert.IsNotNull (ex.ParamName, "#5");
  1533. Assert.AreEqual ("address", ex.ParamName, "#6");
  1534. }
  1535. }
  1536. [Test] // UploadString (Uri, string, string)
  1537. public void UploadString4_Address_SchemeNotSupported ()
  1538. {
  1539. WebClient wc = new WebClient ();
  1540. try {
  1541. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1542. "POST", "abc");
  1543. Assert.Fail ("#1");
  1544. } catch (WebException ex) {
  1545. // An error occurred performing a WebClient request
  1546. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1547. Assert.IsNotNull (ex.InnerException, "#3");
  1548. Assert.IsNotNull (ex.Message, "#4");
  1549. Assert.IsNull (ex.Response, "#5");
  1550. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1551. // The URI prefix is not recognized
  1552. Exception inner = ex.InnerException;
  1553. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1554. Assert.IsNull (inner.InnerException, "#8");
  1555. Assert.IsNotNull (inner.Message, "#9");
  1556. }
  1557. }
  1558. [Test] // UploadString (Uri, string, string)
  1559. public void UploadString4_Data_Null ()
  1560. {
  1561. WebClient wc = new WebClient ();
  1562. try {
  1563. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1564. "POST", (string) null);
  1565. Assert.Fail ("#1");
  1566. } catch (ArgumentNullException ex) {
  1567. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1568. Assert.IsNull (ex.InnerException, "#3");
  1569. Assert.IsNotNull (ex.Message, "#4");
  1570. Assert.IsNotNull (ex.ParamName, "#5");
  1571. Assert.AreEqual ("data", ex.ParamName, "#6");
  1572. }
  1573. }
  1574. #endif
  1575. [Test]
  1576. public void UploadValues1 ()
  1577. {
  1578. IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
  1579. string url = "http://" + IPAddress.Loopback.ToString () + ":8000/test/";
  1580. using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (EchoRequestHandler))) {
  1581. responder.Start ();
  1582. WebClient wc = new WebClient ();
  1583. #if NET_2_0
  1584. wc.Encoding = Encoding.ASCII;
  1585. #endif
  1586. NameValueCollection nvc = new NameValueCollection ();
  1587. nvc.Add ("Name", "\u0041\u2262\u0391\u002E");
  1588. nvc.Add ("Address", "\u002E\u2262\u0041\u0391");
  1589. byte [] buffer = wc.UploadValues (url, nvc);
  1590. string response = Encoding.UTF8.GetString (buffer);
  1591. Assert.AreEqual ("Name=A%e2%89%a2%ce%91.&Address=.%e2%89%a2A%ce%91\r\n", response);
  1592. }
  1593. }
  1594. [Test] // UploadValues (string, NameValueCollection)
  1595. public void UploadValues1_Address_Null ()
  1596. {
  1597. WebClient wc = new WebClient ();
  1598. try {
  1599. wc.UploadValues ((string) null, new NameValueCollection ());
  1600. Assert.Fail ("#1");
  1601. #if NET_2_0
  1602. } catch (ArgumentNullException ex) {
  1603. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1604. Assert.IsNull (ex.InnerException, "#3");
  1605. Assert.IsNotNull (ex.Message, "#4");
  1606. Assert.IsNotNull (ex.ParamName, "#5");
  1607. Assert.AreEqual ("address", ex.ParamName, "#6");
  1608. }
  1609. #else
  1610. } catch (WebException ex) {
  1611. // An error occurred performing a WebClient request
  1612. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1613. Assert.IsNotNull (ex.Message, "#3");
  1614. Assert.IsNull (ex.Response, "#4");
  1615. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1616. ArgumentNullException inner = ex.InnerException
  1617. as ArgumentNullException;
  1618. Assert.IsNotNull (inner, "#6");
  1619. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1620. Assert.IsNull (inner.InnerException, "#8");
  1621. Assert.IsNotNull (inner.Message, "#9");
  1622. Assert.IsNotNull (inner.ParamName, "#10");
  1623. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  1624. }
  1625. #endif
  1626. }
  1627. [Test] // UploadValues (string, NameValueCollection)
  1628. public void UploadValues1_Address_SchemeNotSupported ()
  1629. {
  1630. WebClient wc = new WebClient ();
  1631. try {
  1632. wc.UploadValues ("tp://scheme.notsupported",
  1633. new NameValueCollection ());
  1634. Assert.Fail ("#1");
  1635. } catch (WebException ex) {
  1636. // An error occurred performing a WebClient request
  1637. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1638. Assert.IsNotNull (ex.InnerException, "#3");
  1639. Assert.IsNotNull (ex.Message, "#4");
  1640. Assert.IsNull (ex.Response, "#5");
  1641. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1642. // The URI prefix is not recognized
  1643. Exception inner = ex.InnerException;
  1644. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1645. Assert.IsNull (inner.InnerException, "#8");
  1646. Assert.IsNotNull (inner.Message, "#9");
  1647. }
  1648. }
  1649. [Test] // UploadValues (string, NameValueCollection)
  1650. #if ONLY_1_1
  1651. [Category ("NotDotNet")] // On MS, there's a nested NotImplementedException
  1652. #endif
  1653. public void UploadValues1_Data_Null ()
  1654. {
  1655. WebClient wc = new WebClient ();
  1656. try {
  1657. wc.UploadValues ("http://www.mono-project.com",
  1658. (NameValueCollection) null);
  1659. Assert.Fail ("#1");
  1660. #if NET_2_0
  1661. } catch (ArgumentNullException ex) {
  1662. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1663. Assert.IsNull (ex.InnerException, "#3");
  1664. Assert.IsNotNull (ex.Message, "#4");
  1665. Assert.IsNotNull (ex.ParamName, "#5");
  1666. Assert.AreEqual ("data", ex.ParamName, "#6");
  1667. }
  1668. #else
  1669. } catch (WebException ex) {
  1670. // An error occurred performing a WebClient request
  1671. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1672. Assert.IsNotNull (ex.Message, "#3");
  1673. Assert.IsNull (ex.Response, "#4");
  1674. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1675. ArgumentNullException inner = ex.InnerException
  1676. as ArgumentNullException;
  1677. Assert.IsNotNull (inner, "#6");
  1678. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1679. Assert.IsNull (inner.InnerException, "#8");
  1680. Assert.IsNotNull (inner.Message, "#9");
  1681. Assert.IsNotNull (inner.ParamName, "#10");
  1682. Assert.AreEqual ("data", inner.ParamName, "#11");
  1683. }
  1684. #endif
  1685. }
  1686. #if NET_2_0
  1687. [Test] // UploadValues (Uri, NameValueCollection)
  1688. public void UploadValues2_Address_Null ()
  1689. {
  1690. WebClient wc = new WebClient ();
  1691. try {
  1692. wc.UploadValues ((Uri) null, new NameValueCollection ());
  1693. Assert.Fail ("#1");
  1694. } catch (ArgumentNullException ex) {
  1695. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1696. Assert.IsNull (ex.InnerException, "#3");
  1697. Assert.IsNotNull (ex.Message, "#4");
  1698. Assert.IsNotNull (ex.ParamName, "#5");
  1699. Assert.AreEqual ("address", ex.ParamName, "#6");
  1700. }
  1701. }
  1702. [Test] // UploadValues (Uri, NameValueCollection)
  1703. public void UploadValues2_Address_SchemeNotSupported ()
  1704. {
  1705. WebClient wc = new WebClient ();
  1706. try {
  1707. wc.UploadValues (new Uri ("tp://scheme.notsupported"),
  1708. new NameValueCollection ());
  1709. Assert.Fail ("#1");
  1710. } catch (WebException ex) {
  1711. // An error occurred performing a WebClient request
  1712. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1713. Assert.IsNotNull (ex.InnerException, "#3");
  1714. Assert.IsNotNull (ex.Message, "#4");
  1715. Assert.IsNull (ex.Response, "#5");
  1716. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1717. // The URI prefix is not recognized
  1718. Exception inner = ex.InnerException;
  1719. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1720. Assert.IsNull (inner.InnerException, "#8");
  1721. Assert.IsNotNull (inner.Message, "#9");
  1722. }
  1723. }
  1724. [Test] // UploadValues (Uri, NameValueCollection)
  1725. public void UploadValues2_Data_Null ()
  1726. {
  1727. WebClient wc = new WebClient ();
  1728. try {
  1729. wc.UploadValues (new Uri ("http://www.mono-project.com"),
  1730. (NameValueCollection) null);
  1731. Assert.Fail ("#1");
  1732. } catch (ArgumentNullException ex) {
  1733. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1734. Assert.IsNull (ex.InnerException, "#3");
  1735. Assert.IsNotNull (ex.Message, "#4");
  1736. Assert.IsNotNull (ex.ParamName, "#5");
  1737. Assert.AreEqual ("data", ex.ParamName, "#6");
  1738. }
  1739. }
  1740. #endif
  1741. [Test] // UploadValues (string, string, NameValueCollection)
  1742. public void UploadValues3_Address_Null ()
  1743. {
  1744. WebClient wc = new WebClient ();
  1745. try {
  1746. wc.UploadValues ((string) null, "POST",
  1747. new NameValueCollection ());
  1748. Assert.Fail ("#1");
  1749. #if NET_2_0
  1750. } catch (ArgumentNullException ex) {
  1751. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1752. Assert.IsNull (ex.InnerException, "#3");
  1753. Assert.IsNotNull (ex.Message, "#4");
  1754. Assert.IsNotNull (ex.ParamName, "#5");
  1755. Assert.AreEqual ("address", ex.ParamName, "#6");
  1756. }
  1757. #else
  1758. } catch (WebException ex) {
  1759. // An error occurred performing a WebClient request
  1760. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1761. Assert.IsNotNull (ex.Message, "#3");
  1762. Assert.IsNull (ex.Response, "#4");
  1763. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1764. ArgumentNullException inner = ex.InnerException
  1765. as ArgumentNullException;
  1766. Assert.IsNotNull (inner, "#6");
  1767. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1768. Assert.IsNull (inner.InnerException, "#8");
  1769. Assert.IsNotNull (inner.Message, "#9");
  1770. Assert.IsNotNull (inner.ParamName, "#10");
  1771. Assert.AreEqual ("uriString", inner.ParamName, "#11");
  1772. }
  1773. #endif
  1774. }
  1775. [Test] // UploadValues (string, string, NameValueCollection)
  1776. public void UploadValues3_Address_SchemeNotSupported ()
  1777. {
  1778. WebClient wc = new WebClient ();
  1779. try {
  1780. wc.UploadValues ("tp://scheme.notsupported",
  1781. "POST", new NameValueCollection ());
  1782. Assert.Fail ("#1");
  1783. } catch (WebException ex) {
  1784. // An error occurred performing a WebClient request
  1785. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1786. Assert.IsNotNull (ex.InnerException, "#3");
  1787. Assert.IsNotNull (ex.Message, "#4");
  1788. Assert.IsNull (ex.Response, "#5");
  1789. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1790. // The URI prefix is not recognized
  1791. Exception inner = ex.InnerException;
  1792. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1793. Assert.IsNull (inner.InnerException, "#8");
  1794. Assert.IsNotNull (inner.Message, "#9");
  1795. }
  1796. }
  1797. [Test] // UploadValues (string, string, NameValueCollection)
  1798. #if ONLY_1_1
  1799. [Category ("NotDotNet")] // On MS, there's a nested NotImplementedException
  1800. #endif
  1801. public void UploadValues3_Data_Null ()
  1802. {
  1803. WebClient wc = new WebClient ();
  1804. try {
  1805. wc.UploadValues ("http://www.mono-project.com",
  1806. "POST", (NameValueCollection) null);
  1807. Assert.Fail ("#1");
  1808. #if NET_2_0
  1809. } catch (ArgumentNullException ex) {
  1810. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1811. Assert.IsNull (ex.InnerException, "#3");
  1812. Assert.IsNotNull (ex.Message, "#4");
  1813. Assert.IsNotNull (ex.ParamName, "#5");
  1814. Assert.AreEqual ("data", ex.ParamName, "#6");
  1815. }
  1816. #else
  1817. } catch (WebException ex) {
  1818. // An error occurred performing a WebClient request
  1819. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1820. Assert.IsNotNull (ex.Message, "#3");
  1821. Assert.IsNull (ex.Response, "#4");
  1822. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1823. ArgumentNullException inner = ex.InnerException
  1824. as ArgumentNullException;
  1825. Assert.IsNotNull (inner, "#6");
  1826. Assert.AreEqual (typeof (ArgumentNullException), inner.GetType (), "#7");
  1827. Assert.IsNull (inner.InnerException, "#8");
  1828. Assert.IsNotNull (inner.Message, "#9");
  1829. Assert.IsNotNull (inner.ParamName, "#10");
  1830. Assert.AreEqual ("data", inner.ParamName, "#11");
  1831. }
  1832. #endif
  1833. }
  1834. #if NET_2_0
  1835. [Test] // UploadValues (Uri, string, NameValueCollection)
  1836. public void UploadValues4_Address_Null ()
  1837. {
  1838. WebClient wc = new WebClient ();
  1839. try {
  1840. wc.UploadValues ((Uri) null, "POST",
  1841. new NameValueCollection ());
  1842. Assert.Fail ("#1");
  1843. } catch (ArgumentNullException ex) {
  1844. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1845. Assert.IsNull (ex.InnerException, "#3");
  1846. Assert.IsNotNull (ex.Message, "#4");
  1847. Assert.IsNotNull (ex.ParamName, "#5");
  1848. Assert.AreEqual ("address", ex.ParamName, "#6");
  1849. }
  1850. }
  1851. [Test] // UploadValues (Uri, string, NameValueCollection)
  1852. public void UploadValues4_Address_SchemeNotSupported ()
  1853. {
  1854. WebClient wc = new WebClient ();
  1855. try {
  1856. wc.UploadValues (new Uri ("tp://scheme.notsupported"),
  1857. "POST", new NameValueCollection ());
  1858. Assert.Fail ("#1");
  1859. } catch (WebException ex) {
  1860. // An error occurred performing a WebClient request
  1861. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1862. Assert.IsNotNull (ex.InnerException, "#3");
  1863. Assert.IsNotNull (ex.Message, "#4");
  1864. Assert.IsNull (ex.Response, "#5");
  1865. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1866. // The URI prefix is not recognized
  1867. Exception inner = ex.InnerException;
  1868. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1869. Assert.IsNull (inner.InnerException, "#8");
  1870. Assert.IsNotNull (inner.Message, "#9");
  1871. }
  1872. }
  1873. [Test] // UploadValues (Uri, string, NameValueCollection)
  1874. public void UploadValues4_Data_Null ()
  1875. {
  1876. WebClient wc = new WebClient ();
  1877. try {
  1878. wc.UploadValues (new Uri ("http://www.mono-project.com"),
  1879. "POST", (NameValueCollection) null);
  1880. Assert.Fail ("#1");
  1881. } catch (ArgumentNullException ex) {
  1882. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1883. Assert.IsNull (ex.InnerException, "#3");
  1884. Assert.IsNotNull (ex.Message, "#4");
  1885. Assert.IsNotNull (ex.ParamName, "#5");
  1886. Assert.AreEqual ("data", ex.ParamName, "#6");
  1887. }
  1888. }
  1889. #endif
  1890. #if NET_2_0
  1891. [Test]
  1892. public void GetWebRequestOverriding ()
  1893. {
  1894. GetWebRequestOverridingTestClass testObject = new GetWebRequestOverridingTestClass ();
  1895. testObject.DownloadData ("http://www.mono-project.com");
  1896. Assert.IsTrue (testObject.overridedCodeRan, "Overrided code wasn't called");
  1897. }
  1898. class GetWebRequestOverridingTestClass : WebClient
  1899. {
  1900. internal bool overridedCodeRan = false;
  1901. protected override WebRequest GetWebRequest(Uri address)
  1902. {
  1903. overridedCodeRan = true;
  1904. return base.GetWebRequest (address);
  1905. }
  1906. }
  1907. #endif
  1908. static byte [] EchoRequestHandler (Socket socket)
  1909. {
  1910. MemoryStream ms = new MemoryStream ();
  1911. byte [] buffer = new byte [4096];
  1912. int bytesReceived = socket.Receive (buffer);
  1913. while (bytesReceived > 0) {
  1914. ms.Write (buffer, 0, bytesReceived);
  1915. // We don't check for Content-Length or anything else here, so we give the client a little time to write
  1916. // after sending the headers
  1917. Thread.Sleep (200);
  1918. if (socket.Available > 0) {
  1919. bytesReceived = socket.Receive (buffer);
  1920. } else {
  1921. bytesReceived = 0;
  1922. }
  1923. }
  1924. ms.Flush ();
  1925. ms.Position = 0;
  1926. StringBuilder sb = new StringBuilder ();
  1927. string expect = null;
  1928. StreamReader sr = new StreamReader (ms, Encoding.UTF8);
  1929. string line = null;
  1930. byte state = 0;
  1931. while ((line = sr.ReadLine ()) != null) {
  1932. if (state > 0) {
  1933. state = 2;
  1934. sb.Append (line);
  1935. sb.Append ("\r\n");
  1936. } if (line.Length == 0) {
  1937. state = 1;
  1938. } else if (line.StartsWith ("Expect:")) {
  1939. expect = line.Substring (8);
  1940. }
  1941. }
  1942. StringWriter sw = new StringWriter ();
  1943. if (expect == "100-continue" && state != 2) {
  1944. sw.WriteLine ("HTTP/1.1 100 Continue");
  1945. sw.WriteLine ();
  1946. sw.Flush ();
  1947. socket.Send (Encoding.UTF8.GetBytes (sw.ToString ()));
  1948. // receive body
  1949. ms = new MemoryStream ();
  1950. buffer = new byte [4096];
  1951. bytesReceived = socket.Receive (buffer);
  1952. while (bytesReceived > 0) {
  1953. ms.Write (buffer, 0, bytesReceived);
  1954. Thread.Sleep (200);
  1955. if (socket.Available > 0) {
  1956. bytesReceived = socket.Receive (buffer);
  1957. } else {
  1958. bytesReceived = 0;
  1959. }
  1960. }
  1961. ms.Flush ();
  1962. ms.Position = 0;
  1963. sb = new StringBuilder ();
  1964. sr = new StreamReader (ms, Encoding.UTF8);
  1965. line = sr.ReadLine ();
  1966. while (line != null) {
  1967. sb.Append (line);
  1968. sb.Append ("\r\n");
  1969. line = sr.ReadLine ();
  1970. }
  1971. }
  1972. sw = new StringWriter ();
  1973. sw.WriteLine ("HTTP/1.1 200 OK");
  1974. sw.WriteLine ("Content-Type: text/xml");
  1975. sw.WriteLine ("Content-Length: " + sb.Length.ToString (CultureInfo.InvariantCulture));
  1976. sw.WriteLine ();
  1977. sw.Write (sb.ToString ());
  1978. sw.Flush ();
  1979. return Encoding.UTF8.GetBytes (sw.ToString ());
  1980. }
  1981. [Test]
  1982. public void DefaultProxy ()
  1983. {
  1984. WebClient wc = new WebClient ();
  1985. // this is never null on .net
  1986. Assert.IsNotNull (wc.Proxy);
  1987. // and return the same instance as WebRequest.DefaultWebProxy
  1988. Assert.AreSame (wc.Proxy, WebRequest.DefaultWebProxy);
  1989. }
  1990. #if NET_4_5
  1991. [Test]
  1992. public void UploadStringAsyncCancelEvent ()
  1993. {
  1994. UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
  1995. {
  1996. webClient.UploadStringCompleted += (sender, args) =>
  1997. {
  1998. if (args.Cancelled)
  1999. cancelEvent.Set ();
  2000. };
  2001. webClient.UploadStringAsync (uri, "PUT", "text");
  2002. });
  2003. }
  2004. [Test]
  2005. public void UploadDataAsyncCancelEvent ()
  2006. {
  2007. UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
  2008. {
  2009. webClient.UploadDataCompleted += (sender, args) =>
  2010. {
  2011. if (args.Cancelled)
  2012. cancelEvent.Set ();
  2013. };
  2014. webClient.UploadDataAsync (uri, "PUT", new byte[] { });
  2015. });
  2016. }
  2017. [Test]
  2018. public void UploadValuesAsyncCancelEvent ()
  2019. {
  2020. UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
  2021. {
  2022. webClient.UploadValuesCompleted += (sender, args) =>
  2023. {
  2024. if (args.Cancelled)
  2025. cancelEvent.Set ();
  2026. };
  2027. webClient.UploadValuesAsync (uri, "PUT", new NameValueCollection ());
  2028. });
  2029. }
  2030. [Test]
  2031. public void UploadFileAsyncCancelEvent ()
  2032. {
  2033. UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
  2034. {
  2035. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  2036. File.Create (tempFile).Close ();
  2037. webClient.UploadFileCompleted += (sender, args) =>
  2038. {
  2039. if (args.Cancelled)
  2040. cancelEvent.Set ();
  2041. };
  2042. webClient.UploadFileAsync (uri, "PUT", tempFile);
  2043. });
  2044. }
  2045. #endif
  2046. #if NET_4_0
  2047. public void UploadAsyncCancelEventTest (Action<WebClient, Uri, EventWaitHandle> uploadAction)
  2048. {
  2049. var ep = new IPEndPoint (IPAddress.Loopback, 8000);
  2050. string url = "http://" + IPAddress.Loopback + ":8000/test/";
  2051. using (var responder = new SocketResponder (ep, EchoRequestHandler))
  2052. {
  2053. responder.Start ();
  2054. var webClient = new WebClient ();
  2055. var cancellationTokenSource = new CancellationTokenSource ();
  2056. cancellationTokenSource.Token.Register (webClient.CancelAsync);
  2057. var cancelEvent = new ManualResetEvent (false);
  2058. uploadAction.Invoke (webClient, new Uri (url), cancelEvent);
  2059. cancellationTokenSource.Cancel ();
  2060. Assert.IsTrue (cancelEvent.WaitOne (1000));
  2061. }
  2062. }
  2063. #endif
  2064. }
  2065. }