MailAddressTest.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. //
  2. // MailAddressTest.cs - NUnit Test Cases for System.Net.MailAddress.MailAddress
  3. //
  4. // Authors:
  5. // John Luke ([email protected])
  6. //
  7. // (C) 2005 John Luke
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. using System.Net.Mail;
  12. namespace MonoTests.System.Net.Mail
  13. {
  14. [TestFixture]
  15. public class MailAddressTest
  16. {
  17. MailAddress address;
  18. [SetUp]
  19. public void GetReady ()
  20. {
  21. address = new MailAddress ("[email protected]", "Mr. Foo Bar");
  22. }
  23. [Test]
  24. public void Constructor0 ()
  25. {
  26. address = new MailAddress (" [email protected] ");
  27. Assert.AreEqual ("[email protected]", address.Address, "#A1");
  28. Assert.AreEqual (string.Empty, address.DisplayName, "#A2");
  29. Assert.AreEqual ("example.com", address.Host, "#A3");
  30. Assert.AreEqual ("[email protected]", address.ToString (), "#A4");
  31. Assert.AreEqual ("foo", address.User, "#A5");
  32. address = new MailAddress ("Mr. Foo Bar <[email protected]>");
  33. Assert.AreEqual ("[email protected]", address.Address, "#B1");
  34. Assert.AreEqual ("Mr. Foo Bar", address.DisplayName, "#B2");
  35. Assert.AreEqual ("example.com", address.Host, "#B3");
  36. Assert.AreEqual ("\"Mr. Foo Bar\" <[email protected]>", address.ToString (), "#B4");
  37. Assert.AreEqual ("foo", address.User, "#B5");
  38. address = new MailAddress ("Mr. F@@ Bar <[email protected]> Whatever@You@Want");
  39. Assert.AreEqual ("[email protected]", address.Address, "#C1");
  40. Assert.AreEqual ("Mr. F@@ Bar", address.DisplayName, "#C2");
  41. Assert.AreEqual ("example.com", address.Host, "#C3");
  42. Assert.AreEqual ("\"Mr. F@@ Bar\" <[email protected]>", address.ToString (), "#C4");
  43. Assert.AreEqual ("foo", address.User, "#C5");
  44. address = new MailAddress ("\"Mr. F@@ Bar\" <[email protected]> Whatever@You@Want");
  45. Assert.AreEqual ("[email protected]", address.Address, "#D1");
  46. Assert.AreEqual ("Mr. F@@ Bar", address.DisplayName, "#D2");
  47. Assert.AreEqual ("example.com", address.Host, "#D3");
  48. Assert.AreEqual ("\"Mr. F@@ Bar\" <[email protected]>", address.ToString (), "#D4");
  49. Assert.AreEqual ("foo", address.User, "#D5");
  50. address = new MailAddress ("FooBar <[email protected]>");
  51. Assert.AreEqual ("[email protected]", address.Address, "#E1");
  52. Assert.AreEqual ("FooBar", address.DisplayName, "#E2");
  53. Assert.AreEqual ("example.com", address.Host, "#E3");
  54. Assert.AreEqual ("\"FooBar\" <[email protected]>", address.ToString (), "#E4");
  55. Assert.AreEqual ("foo", address.User, "#E5");
  56. address = new MailAddress ("\"FooBar\"[email protected] ");
  57. Assert.AreEqual ("[email protected]", address.Address, "#F1");
  58. Assert.AreEqual ("FooBar", address.DisplayName, "#F2");
  59. Assert.AreEqual ("example.com", address.Host, "#F3");
  60. Assert.AreEqual ("\"FooBar\" <[email protected]>", address.ToString (), "#F4");
  61. Assert.AreEqual ("foo", address.User, "#F5");
  62. address = new MailAddress ("\" FooBar \"< [email protected] >");
  63. Assert.AreEqual ("[email protected]", address.Address, "#G1");
  64. Assert.AreEqual ("FooBar", address.DisplayName, "#G2");
  65. Assert.AreEqual ("example.com", address.Host, "#G3");
  66. Assert.AreEqual ("\"FooBar\" <[email protected]>", address.ToString (), "#G4");
  67. Assert.AreEqual ("foo", address.User, "#G5");
  68. address = new MailAddress ("<[email protected]>");
  69. Assert.AreEqual ("[email protected]", address.Address, "#H1");
  70. Assert.AreEqual (string.Empty, address.DisplayName, "#H2");
  71. Assert.AreEqual ("example.com", address.Host, "#H3");
  72. Assert.AreEqual ("[email protected]", address.ToString (), "#H4");
  73. Assert.AreEqual ("foo", address.User, "#H5");
  74. address = new MailAddress (" < [email protected] >");
  75. Assert.AreEqual ("[email protected]", address.Address, "#H1");
  76. Assert.AreEqual (string.Empty, address.DisplayName, "#H2");
  77. Assert.AreEqual ("example.com", address.Host, "#H3");
  78. Assert.AreEqual ("[email protected]", address.ToString (), "#H4");
  79. Assert.AreEqual ("foo", address.User, "#H5");
  80. }
  81. [Test]
  82. public void Constructor0_Address_Null ()
  83. {
  84. try {
  85. new MailAddress ((string) null);
  86. Assert.Fail ("#1");
  87. } catch (ArgumentNullException ex) {
  88. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  89. Assert.IsNull (ex.InnerException, "#3");
  90. Assert.IsNotNull (ex.Message, "#4");
  91. Assert.IsNotNull (ex.ParamName, "#5");
  92. Assert.AreEqual ("address", ex.ParamName, "#6");
  93. }
  94. }
  95. [Test]
  96. [ExpectedException (typeof (ArgumentException))]
  97. public void Constructor_Address_Empty ()
  98. {
  99. new MailAddress ("");
  100. }
  101. [Test]
  102. public void Constructor0_Address_Invalid ()
  103. {
  104. try {
  105. new MailAddress ("Mr. Foo Bar");
  106. Assert.Fail ("#A1");
  107. } catch (FormatException ex) {
  108. // The specified string is not in the form required for an
  109. // e-mail address
  110. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#A2");
  111. Assert.IsNull (ex.InnerException, "#A3");
  112. Assert.IsNotNull (ex.Message, "#A4");
  113. }
  114. try {
  115. new MailAddress ("foo@b@ar");
  116. Assert.Fail ("#B1");
  117. } catch (FormatException ex) {
  118. // The specified string is not in the form required for an
  119. // e-mail address
  120. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#B2");
  121. Assert.IsNull (ex.InnerException, "#B3");
  122. Assert.IsNotNull (ex.Message, "#B4");
  123. }
  124. try {
  125. new MailAddress ("Mr. Foo Bar <foo@exa<mple.com");
  126. Assert.Fail ("#C1");
  127. } catch (FormatException ex) {
  128. // The specified string is not in the form required for an
  129. // e-mail address
  130. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#C2");
  131. Assert.IsNull (ex.InnerException, "#C3");
  132. Assert.IsNotNull (ex.Message, "#C4");
  133. }
  134. try {
  135. new MailAddress ("Mr. Foo Bar <[email protected]");
  136. Assert.Fail ("#D1");
  137. } catch (FormatException ex) {
  138. // The specified string is not in the form required for an
  139. // e-mail address
  140. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#D2");
  141. Assert.IsNull (ex.InnerException, "#D3");
  142. Assert.IsNotNull (ex.Message, "#D4");
  143. }
  144. try {
  145. new MailAddress ("Mr. \"F@@ Bar\" <[email protected]> Whatever@You@Want");
  146. Assert.Fail ("#E1");
  147. } catch (FormatException ex) {
  148. // The specified string is not in the form required for an
  149. // e-mail address
  150. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#E2");
  151. Assert.IsNull (ex.InnerException, "#E3");
  152. Assert.IsNotNull (ex.Message, "#E4");
  153. }
  154. try {
  155. new MailAddress ("Mr. F@@ Bar <[email protected]> What\"ever@You@Want");
  156. Assert.Fail ("#F1");
  157. } catch (FormatException ex) {
  158. // The specified string is not in the form required for an
  159. // e-mail address
  160. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#F2");
  161. Assert.IsNull (ex.InnerException, "#F3");
  162. Assert.IsNotNull (ex.Message, "#F4");
  163. }
  164. try {
  165. new MailAddress ("\"MrFo@Bar\"");
  166. Assert.Fail ("#G1");
  167. } catch (FormatException ex) {
  168. // The specified string is not in the form required for an
  169. // e-mail address
  170. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#G2");
  171. Assert.IsNull (ex.InnerException, "#G3");
  172. Assert.IsNotNull (ex.Message, "#G4");
  173. }
  174. try {
  175. new MailAddress ("\"MrFo@Bar\"<>");
  176. Assert.Fail ("#H1");
  177. } catch (FormatException ex) {
  178. // The specified string is not in the form required for an
  179. // e-mail address
  180. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#H2");
  181. Assert.IsNull (ex.InnerException, "#H3");
  182. Assert.IsNotNull (ex.Message, "#H4");
  183. }
  184. try {
  185. new MailAddress (" ");
  186. Assert.Fail ("#I1");
  187. } catch (FormatException ex) {
  188. // The specified string is not in the form required for an
  189. // e-mail address
  190. Assert.AreEqual (typeof (FormatException), ex.GetType (), "#I2");
  191. Assert.IsNull (ex.InnerException, "#I3");
  192. Assert.IsNotNull (ex.Message, "#I4");
  193. }
  194. }
  195. [Test]
  196. public void Constructor1 ()
  197. {
  198. address = new MailAddress (" [email protected] ", (string) null);
  199. Assert.AreEqual ("[email protected]", address.Address, "#A1");
  200. Assert.AreEqual (string.Empty, address.DisplayName, "#A2");
  201. Assert.AreEqual ("example.com", address.Host, "#A3");
  202. Assert.AreEqual ("[email protected]", address.ToString (), "#A4");
  203. Assert.AreEqual ("foo", address.User, "#A5");
  204. address = new MailAddress ("<[email protected]> WhatEver", " Mr. Foo Bar ");
  205. Assert.AreEqual ("[email protected]", address.Address, "#B1");
  206. Assert.AreEqual ("Mr. Foo Bar", address.DisplayName, "#B2");
  207. Assert.AreEqual ("example.com", address.Host, "#B3");
  208. Assert.AreEqual ("\"Mr. Foo Bar\" <[email protected]>", address.ToString (), "#B4");
  209. Assert.AreEqual ("foo", address.User, "#B5");
  210. address = new MailAddress ("Mr. F@@ Bar <[email protected]> Whatever", "BarFoo");
  211. Assert.AreEqual ("[email protected]", address.Address, "#C1");
  212. Assert.AreEqual ("BarFoo", address.DisplayName, "#C2");
  213. Assert.AreEqual ("example.com", address.Host, "#C3");
  214. Assert.AreEqual ("\"BarFoo\" <[email protected]>", address.ToString (), "#C4");
  215. Assert.AreEqual ("foo", address.User, "#C5");
  216. address = new MailAddress ("Mr. F@@ Bar <[email protected]> Whatever", string.Empty);
  217. Assert.AreEqual ("[email protected]", address.Address, "#D1");
  218. Assert.AreEqual (string.Empty, address.DisplayName, "#D2");
  219. Assert.AreEqual ("example.com", address.Host, "#D3");
  220. Assert.AreEqual ("[email protected]", address.ToString (), "#D4");
  221. Assert.AreEqual ("foo", address.User, "#D5");
  222. address = new MailAddress ("Mr. F@@ Bar <[email protected]> Whatever", (string) null);
  223. Assert.AreEqual ("[email protected]", address.Address, "#E1");
  224. Assert.AreEqual ("Mr. F@@ Bar", address.DisplayName, "#E2");
  225. Assert.AreEqual ("example.com", address.Host, "#E3");
  226. Assert.AreEqual ("\"Mr. F@@ Bar\" <[email protected]>", address.ToString (), "#E4");
  227. Assert.AreEqual ("foo", address.User, "#E5");
  228. address = new MailAddress ("Mr. F@@ Bar <[email protected]> Whatever", " ");
  229. Assert.AreEqual ("[email protected]", address.Address, "#F1");
  230. Assert.AreEqual (string.Empty, address.DisplayName, "#F2");
  231. Assert.AreEqual ("example.com", address.Host, "#F3");
  232. Assert.AreEqual ("[email protected]", address.ToString (), "#F4");
  233. Assert.AreEqual ("foo", address.User, "#F5");
  234. }
  235. [Test]
  236. public void DisplayName_Precedence ()
  237. {
  238. var ma = new MailAddress ("Hola <[email protected]>");
  239. Assert.AreEqual (ma.DisplayName, "Hola");
  240. ma = new MailAddress ("Hola <[email protected]>", "Adios");
  241. Assert.AreEqual (ma.DisplayName, "Adios");
  242. ma = new MailAddress ("Hola <[email protected]>", "");
  243. Assert.AreEqual (ma.DisplayName, "");
  244. }
  245. [Test]
  246. [ExpectedException (typeof (FormatException))]
  247. public void Address_Invalid ()
  248. {
  249. new MailAddress ("foobar");
  250. }
  251. [Test]
  252. public void Address_QuoteFirst ()
  253. {
  254. new MailAddress ("\"Hola\" <[email protected]>");
  255. }
  256. [Test]
  257. [ExpectedException (typeof (FormatException))]
  258. public void Address_QuoteNotFirst ()
  259. {
  260. new MailAddress ("H\"ola\" <[email protected]>");
  261. }
  262. [Test]
  263. [ExpectedException (typeof (FormatException))]
  264. public void Address_NoClosingQuote ()
  265. {
  266. new MailAddress ("\"Hola <[email protected]>");
  267. }
  268. [Test]
  269. [ExpectedException (typeof (FormatException))]
  270. public void Address_NoUser ()
  271. {
  272. new MailAddress ("Hola <@bar.com>");
  273. }
  274. [Test]
  275. [ExpectedException (typeof (FormatException))]
  276. public void Address_NoUserNoHost ()
  277. {
  278. new MailAddress ("Hola <@>");
  279. }
  280. [Test]
  281. public void Address ()
  282. {
  283. Assert.AreEqual ("[email protected]", address.Address);
  284. }
  285. [Test]
  286. public void DisplayName ()
  287. {
  288. Assert.AreEqual ("Mr. Foo Bar", address.DisplayName);
  289. }
  290. [Test]
  291. public void Host ()
  292. {
  293. Assert.AreEqual ("example.com", address.Host);
  294. }
  295. [Test]
  296. public void User ()
  297. {
  298. Assert.AreEqual ("foo", address.User);
  299. }
  300. [Test]
  301. public void ToStringTest ()
  302. {
  303. Assert.AreEqual ("\"Mr. Foo Bar\" <[email protected]>", address.ToString ());
  304. }
  305. [Test]
  306. public void EqualsTest ()
  307. {
  308. var n = new MailAddress ("Mr. Bar <[email protected]>");
  309. var n2 = new MailAddress ("[email protected]", "Mr. Bar");
  310. Assert.AreEqual (n, n2);
  311. }
  312. [Test]
  313. public void EqualsTest2 ()
  314. {
  315. var n = new MailAddress ("Mr. Bar <[email protected]>");
  316. var n2 = new MailAddress ("MR. BAR <[email protected]>");
  317. Assert.AreEqual (n, n2);
  318. }
  319. }
  320. }