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 public void TestSoapActions ()
198 mb
= typeof(SoapTest
).GetMethod ("FesAlgo");
199 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
200 AssertEquals ("S1", "myaction", act
);
202 mb
= typeof(SoapTest
).GetMethod ("FesAlgoMes");
203 SoapServices
.RegisterSoapActionForMethodBase (mb
, "anotheraction");
204 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
205 AssertEquals ("S2", "anotheraction", act
);
207 mb
= typeof(SoapTest
).GetMethod ("FesAlgoMesEspecial");
208 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
209 AssertEquals ("S3", GetClassNs (typeof(SoapTest
))+ "#FesAlgoMesEspecial", act
);
211 string typeName
, methodName
;
214 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction ("myaction", out typeName
, out methodName
);
216 AssertEquals ("M2", GetSimpleTypeName (typeof(SoapTest
)), typeName
);
217 AssertEquals ("M3", "FesAlgo", methodName
);
219 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction ("anotheraction", out typeName
, out methodName
);
221 AssertEquals ("M5", GetSimpleTypeName (typeof(SoapTest
)), typeName
);
222 AssertEquals ("M6", "FesAlgoMes", methodName
);
224 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction (GetClassNs (typeof(SoapTest
))+ "#FesAlgoMesEspecial", out typeName
, out methodName
);
226 AssertEquals ("M8", GetSimpleTypeName (typeof(SoapTest
)), typeName
);
227 AssertEquals ("M9", "FesAlgoMesEspecial", methodName
);