2 // MonoTests.System.Runtime.Remoting.SoapServicesTest.cs
4 // Author: Lluis Sanchez Gual (lluis@ximian.com)
6 // 2003 (C) Copyright, Novell, Inc.
10 using System.Reflection;
11 using System.Runtime.Remoting;
12 using System.Runtime.Remoting.Metadata;
13 using NUnit.Framework;
15 namespace MonoTests.System.Runtime.Remoting
17 [SoapTypeAttribute (XmlElementName="ename", XmlNamespace="ens", XmlTypeName="tname", XmlTypeNamespace="tns")]
20 [SoapField(XmlElementName="atrib",XmlNamespace="ns1",UseAttribute=true)]
21 public string atribut;
23 [SoapField(XmlElementName="elem",XmlNamespace="ns1")]
26 [SoapField(XmlElementName="elem2")]
29 [SoapMethod (SoapAction="myaction")]
30 public void FesAlgo ()
34 public void FesAlgoMes ()
38 public void FesAlgoMesEspecial ()
43 public class SoapTest1
47 [SoapTypeAttribute (XmlElementName="ename", XmlTypeName="tname")]
48 public class SoapTest2
52 [SoapTypeAttribute (XmlNamespace="ens", XmlTypeNamespace="tns")]
53 public class SoapTest3
58 public class SoapServicesTest: Assertion
60 public string ThisNamespace
64 string tn = "http://schemas.microsoft.com/clr/nsassem/";
65 tn += GetType ().Namespace + "/" + GetType ().Assembly.GetName().Name;
70 public string GetClassNs (Type t)
72 string tn = "http://schemas.microsoft.com/clr/nsassem/";
73 tn += t.FullName + "/" + t.Assembly.GetName().Name;
77 public string GetSimpleTypeName (Type t)
79 return t.FullName + ", " + t.Assembly.GetName().Name;
83 public void TestGetXmlType ()
90 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest), out name, out ns);
92 AssertEquals ("E2", "ename", name);
93 AssertEquals ("E3", "ens", ns);
95 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest1), out name, out ns);
98 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest2), out name, out ns);
100 AssertEquals ("E6", "ename", name);
101 AssertEquals ("E7", ThisNamespace, ns);
103 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest3), out name, out ns);
105 AssertEquals ("E9", "SoapTest3", name);
106 AssertEquals ("E10", "ens", ns);
110 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest), out name, out ns);
112 AssertEquals ("T2", "tname", name);
113 AssertEquals ("T3", "tns", ns);
115 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest1), out name, out ns);
118 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest2), out name, out ns);
120 AssertEquals ("T6", "tname", name);
121 AssertEquals ("T7", ThisNamespace, ns);
123 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest3), out name, out ns);
125 AssertEquals ("T9", "SoapTest3", name);
126 AssertEquals ("T10", "tns", ns);
130 public void TestGetInteropType ()
134 // Manual registration
136 t = SoapServices.GetInteropTypeFromXmlElement ("aa","bb");
137 AssertEquals ("M1", t, null);
139 SoapServices.RegisterInteropXmlElement ("aa","bb",typeof(SoapTest));
140 t = SoapServices.GetInteropTypeFromXmlElement ("aa","bb");
141 AssertEquals ("M2", typeof (SoapTest), t);
144 t = SoapServices.GetInteropTypeFromXmlType ("aa","bb");
145 AssertEquals ("M3", null, t);
147 SoapServices.RegisterInteropXmlType ("aa","bb",typeof(SoapTest));
148 t = SoapServices.GetInteropTypeFromXmlType ("aa","bb");
149 AssertEquals ("M4", typeof (SoapTest), t);
153 SoapServices.PreLoad (typeof(SoapTest2));
155 t = SoapServices.GetInteropTypeFromXmlElement ("ename",ThisNamespace);
156 AssertEquals ("T1", typeof (SoapTest2), t);
158 t = SoapServices.GetInteropTypeFromXmlType ("tname",ThisNamespace);
159 AssertEquals ("T2", typeof (SoapTest2), t);
163 SoapServices.PreLoad (typeof(SoapTest).Assembly);
165 t = SoapServices.GetInteropTypeFromXmlElement ("SoapTest3","ens");
166 AssertEquals ("A1", typeof (SoapTest3), t);
168 t = SoapServices.GetInteropTypeFromXmlType ("SoapTest3","tns");
169 AssertEquals ("A2", typeof (SoapTest3), t);
174 public void TestSoapFields ()
179 SoapServices.GetInteropFieldTypeAndNameFromXmlAttribute (typeof(SoapTest), "atrib", "ns1", out t, out name);
180 AssertEquals ("#1", "atribut", name);
181 AssertEquals ("#2", typeof(string), t);
183 SoapServices.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest), "elem", "ns1", out t, out name);
184 AssertEquals ("#3", "element", name);
185 AssertEquals ("#4", typeof(int), t);
187 SoapServices.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest), "elem2", null, out t, out name);
188 AssertEquals ("#5", "element2", name);
189 AssertEquals ("#6", typeof(int), t);
193 [Category("NotWorking")]
194 public void TestSoapActions ()
199 mb = typeof(SoapTest).GetMethod ("FesAlgo");
200 act = SoapServices.GetSoapActionFromMethodBase (mb);
201 AssertEquals ("S1", "myaction", act);
203 mb = typeof(SoapTest).GetMethod ("FesAlgoMes");
204 SoapServices.RegisterSoapActionForMethodBase (mb, "anotheraction");
205 act = SoapServices.GetSoapActionFromMethodBase (mb);
206 AssertEquals ("S2", "anotheraction", act);
208 mb = typeof(SoapTest).GetMethod ("FesAlgoMesEspecial");
209 act = SoapServices.GetSoapActionFromMethodBase (mb);
210 AssertEquals ("S3", GetClassNs (typeof(SoapTest))+ "#FesAlgoMesEspecial", act);
212 string typeName, methodName;
215 res = SoapServices.GetTypeAndMethodNameFromSoapAction ("myaction", out typeName, out methodName);
217 AssertEquals ("M2", GetSimpleTypeName (typeof(SoapTest)), typeName);
218 AssertEquals ("M3", "FesAlgo", methodName);
220 res = SoapServices.GetTypeAndMethodNameFromSoapAction ("anotheraction", out typeName, out methodName);
222 AssertEquals ("M5", GetSimpleTypeName (typeof(SoapTest)), typeName);
223 AssertEquals ("M6", "FesAlgoMes", methodName);
225 res = SoapServices.GetTypeAndMethodNameFromSoapAction (GetClassNs (typeof(SoapTest))+ "#FesAlgoMesEspecial", out typeName, out methodName);
227 AssertEquals ("M8", GetSimpleTypeName (typeof(SoapTest)), typeName);
228 AssertEquals ("M9", "FesAlgoMesEspecial", methodName);