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