ConvDocEncWraTest.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. /*
  2. WARNING: This code was generated by a tool.
  3. Changes to this file will be lost if the code is regenerated
  4. */
  5. using System;
  6. using System.Threading;
  7. using NUnit.Framework;
  8. using System.Web.Services.Protocols;
  9. using System.Xml;
  10. using ConvDocEncWraTests.Soap;
  11. namespace Localhost.ConvDocEncWraTests
  12. {
  13. [TestFixture]
  14. public class ConverterTest: WebServiceTest
  15. {
  16. [Test]
  17. public void TestService ()
  18. {
  19. ConverterService cs = new ConverterService ();
  20. cs.Login ("lluis");
  21. cs.SetCurrencyRate ("EUR", 0.5);
  22. Assert.AreEqual (0.5, cs.GetCurrencyRate ("EUR"), "#1");
  23. double res = cs.Convert ("EUR","USD",6);
  24. Assert.AreEqual ((int)res, (int)12, "#2");
  25. CurrencyInfo[] infos = cs.GetCurrencyInfo ();
  26. Assert.IsNotNull (infos, "infos");
  27. foreach (CurrencyInfo info in infos)
  28. {
  29. double val = 0;
  30. Assert.IsNotNull (info.Name, "info.Name");
  31. switch (info.Name)
  32. {
  33. case "USD": val = 1; break;
  34. case "EUR": val = 0.5; break;
  35. case "GBP": val = 0.611817; break;
  36. case "JPY": val = 118.271; break;
  37. case "CAD": val = 1.36338; break;
  38. case "AUD": val = 1.51485; break;
  39. case "CHF": val = 1.36915; break;
  40. case "RUR": val = 30.4300; break;
  41. case "CNY": val = 8.27740; break;
  42. case "ZAR": val = 7.62645; break;
  43. case "MXN": val = 10.5025; break;
  44. }
  45. Assert.AreEqual (val, info.Rate, "#3 " + info.Name);
  46. }
  47. cs.SetCurrencyRate ("EUR", 0.9);
  48. }
  49. // Async tests
  50. ConverterService acs;
  51. bool a1;
  52. bool a2;
  53. bool a3;
  54. AutoResetEvent eve = new AutoResetEvent (false);
  55. [Test]
  56. public void AsyncTestService ()
  57. {
  58. IAsyncResult ar;
  59. acs = new ConverterService ();
  60. ar = acs.BeginLogin ("lluis", null, null);
  61. acs.EndLogin (ar);
  62. acs.BeginSetCurrencyRate ("EUR", 0.5, new AsyncCallback(Callback1), null);
  63. Assert.IsTrue (eve.WaitOne (5000, false), "#0");
  64. Assert.IsTrue (a1, "#1");
  65. Assert.IsTrue (eve.WaitOne (5000, false), "#2");
  66. Assert.IsTrue (a2, "#3");
  67. Assert.IsTrue (eve.WaitOne (5000, false), "#4");
  68. Assert.IsTrue (a3, "#5");
  69. }
  70. void Callback1 (IAsyncResult ar)
  71. {
  72. acs.EndSetCurrencyRate (ar);
  73. acs.BeginGetCurrencyRate ("EUR", new AsyncCallback(Callback2), null);
  74. }
  75. void Callback2 (IAsyncResult ar)
  76. {
  77. double res = acs.EndGetCurrencyRate (ar);
  78. a1 = (res == 0.5);
  79. eve.Set ();
  80. acs.BeginConvert ("EUR","USD",6, new AsyncCallback(Callback3), null);
  81. }
  82. void Callback3 (IAsyncResult ar)
  83. {
  84. double res = acs.EndConvert (ar);
  85. a2 = (res == 12);
  86. eve.Set ();
  87. acs.BeginGetCurrencyInfo (new AsyncCallback(Callback4),null);
  88. }
  89. void Callback4 (IAsyncResult ar)
  90. {
  91. CurrencyInfo[] infos = acs.EndGetCurrencyInfo (ar);
  92. foreach (CurrencyInfo info in infos)
  93. {
  94. double val = 0;
  95. switch (info.Name)
  96. {
  97. case "USD": val = 1; break;
  98. case "EUR": val = 0.5; break;
  99. case "GBP": val = 0.611817; break;
  100. case "JPY": val = 118.271; break;
  101. case "CAD": val = 1.36338; break;
  102. case "AUD": val = 1.51485; break;
  103. case "CHF": val = 1.36915; break;
  104. case "RUR": val = 30.4300; break;
  105. case "CNY": val = 8.27740; break;
  106. case "ZAR": val = 7.62645; break;
  107. case "MXN": val = 10.5025; break;
  108. }
  109. a3 = (val == info.Rate);
  110. if (!a3) break;
  111. }
  112. eve.Set ();
  113. }
  114. [Test]
  115. public void TestException ()
  116. {
  117. ConverterService cs = new ConverterService ();
  118. try
  119. {
  120. cs.SetCurrencyRate ("EUR", 0.5);
  121. Assert.Fail ("#0");
  122. }
  123. catch (SoapException ex)
  124. {
  125. Assert.IsTrue (ex.Message.IndexOf ("User not logged") != -1, "#1");
  126. Assert.AreEqual (SoapException.ServerFaultCode, ex.Code, "#2");
  127. }
  128. }
  129. [Test]
  130. public void AsyncTestException ()
  131. {
  132. ConverterService cs = new ConverterService ();
  133. IAsyncResult ar = cs.BeginSetCurrencyRate ("EUR", 0.5, null, null);
  134. try
  135. {
  136. cs.EndSetCurrencyRate (ar);
  137. Assert.Fail ("#0");
  138. }
  139. catch (SoapException ex)
  140. {
  141. Assert.IsTrue (ex.Message.IndexOf ("User not logged") != -1, "#1");
  142. Assert.AreEqual (SoapException.ServerFaultCode, ex.Code, "#2");
  143. }
  144. }
  145. [Test]
  146. public void TestObjectReturn ()
  147. {
  148. ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
  149. // Test the Discover method.
  150. et.Url = "http://localhost:8080/ConvDocEncWra.asmx?disco";
  151. et.Discover ();
  152. string d;
  153. object res = et.GetTestInfo ("hi", out d);
  154. Assert.AreEqual ("iii", d, "t1");
  155. Assert.IsNotNull (res, "t2");
  156. Assert.IsTrue (res is XmlNode[], "t3");
  157. XmlNode[] nods = res as XmlNode[];
  158. Assert.AreEqual (5, nods.Length, "t4");
  159. Assert.IsTrue (nods[0] is XmlAttribute, "t5");
  160. XmlAttribute at = nods[0] as XmlAttribute;
  161. Assert.AreEqual ("id", at.LocalName, "t6");
  162. Assert.IsTrue (nods[1] is XmlAttribute, "t7");
  163. at = nods[1] as XmlAttribute;
  164. Assert.AreEqual ("type", at.LocalName, "t8");
  165. Assert.IsTrue (nods[2] is XmlAttribute, "t9");
  166. at = nods[2] as XmlAttribute;
  167. Assert.IsTrue (nods[3] is XmlElement, "t10");
  168. XmlElement el = nods[3] as XmlElement;
  169. Assert.AreEqual ("a", el.Name, "t11");
  170. Assert.IsTrue (nods[4] is XmlElement, "t12");
  171. el = nods[4] as XmlElement;
  172. Assert.AreEqual ("b", el.Name, "t13");
  173. }
  174. [Test]
  175. public void TestUnknownHeaders ()
  176. {
  177. ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
  178. et.Url = "http://localhost:8080/ConvDocEncWra.asmx";
  179. et.myUserInfo = new MyUserInfo ();
  180. et.myUserInfo.userId = 5;
  181. et.myUserInfo.Actor = "hi";
  182. et.TestUnknownHeader1 ();
  183. et.TestUnknownHeader2 ();
  184. int res = et.TestUnknownHeader3 ();
  185. Assert.AreEqual (5, res, "TestUnknownHeader3");
  186. res = et.TestUnknownHeader4 ();
  187. Assert.AreEqual (5, res, "TestUnknownHeader4");
  188. }
  189. }
  190. [System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
  191. public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
  192. {
  193. public MyUserInfo myUserInfo;
  194. [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
  195. public object GetTestInfo(string s, out string d) {
  196. object[] results = this.Invoke("GetTestInfo", new object[] {s});
  197. d = (string) results[1];
  198. return ((object)(results[0]));
  199. }
  200. [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
  201. [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
  202. public virtual void TestUnknownHeader1() {
  203. this.Invoke("TestUnknownHeader1", new object[0]);
  204. }
  205. [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
  206. [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
  207. public virtual void TestUnknownHeader2() {
  208. this.Invoke("TestUnknownHeader2", new object[0]);
  209. }
  210. [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
  211. [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
  212. public virtual int TestUnknownHeader3() {
  213. System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
  214. return ((int)(results[0]));
  215. }
  216. [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
  217. [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
  218. public virtual int TestUnknownHeader4() {
  219. System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
  220. return ((int)(results[0]));
  221. }
  222. }
  223. public class MyUserInfo : System.Web.Services.Protocols.SoapHeader
  224. {
  225. public int userId;
  226. }
  227. }