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
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
);
91 Assert
.IsTrue (res
, "E1");
92 Assert
.AreEqual ("ename", name
, "E2");
93 Assert
.AreEqual ("ens", ns
, "E3");
95 res
= SoapServices
.GetXmlElementForInteropType (typeof(SoapTest1
), out name
, out ns
);
96 Assert
.IsTrue (!res
, "E4");
98 res
= SoapServices
.GetXmlElementForInteropType (typeof(SoapTest2
), out name
, out ns
);
99 Assert
.IsTrue (res
, "E5");
100 Assert
.AreEqual ("ename", name
, "E6");
101 Assert
.AreEqual (ThisNamespace
, ns
, "E7");
103 res
= SoapServices
.GetXmlElementForInteropType (typeof(SoapTest3
), out name
, out ns
);
104 Assert
.IsTrue (res
, "E8");
105 Assert
.AreEqual ("SoapTest3", name
, "E9");
106 Assert
.AreEqual ("ens", ns
, "E10");
110 res
= SoapServices
.GetXmlTypeForInteropType (typeof(SoapTest
), out name
, out ns
);
111 Assert
.IsTrue (res
, "T1");
112 Assert
.AreEqual ("tname", name
, "T2");
113 Assert
.AreEqual ("tns", ns
, "T3");
115 res
= SoapServices
.GetXmlTypeForInteropType (typeof(SoapTest1
), out name
, out ns
);
116 Assert
.IsTrue (!res
, "T4");
118 res
= SoapServices
.GetXmlTypeForInteropType (typeof(SoapTest2
), out name
, out ns
);
119 Assert
.IsTrue (res
, "T5");
120 Assert
.AreEqual ("tname", name
, "T6");
121 Assert
.AreEqual (ThisNamespace
, ns
, "T7");
123 res
= SoapServices
.GetXmlTypeForInteropType (typeof(SoapTest3
), out name
, out ns
);
124 Assert
.IsTrue (res
, "T8");
125 Assert
.AreEqual ("SoapTest3", name
, "T9");
126 Assert
.AreEqual ("tns", ns
, "T10");
130 public void TestGetInteropType ()
134 // Manual registration
136 t
= SoapServices
.GetInteropTypeFromXmlElement ("aa","bb");
137 Assert
.AreEqual (t
, null, "M1");
139 SoapServices
.RegisterInteropXmlElement ("aa","bb",typeof(SoapTest
));
140 t
= SoapServices
.GetInteropTypeFromXmlElement ("aa","bb");
141 Assert
.AreEqual (typeof (SoapTest
), t
, "M2");
144 t
= SoapServices
.GetInteropTypeFromXmlType ("aa","bb");
145 Assert
.AreEqual (null, t
, "M3");
147 SoapServices
.RegisterInteropXmlType ("aa","bb",typeof(SoapTest
));
148 t
= SoapServices
.GetInteropTypeFromXmlType ("aa","bb");
149 Assert
.AreEqual (typeof (SoapTest
), t
, "M4");
153 SoapServices
.PreLoad (typeof(SoapTest2
));
155 t
= SoapServices
.GetInteropTypeFromXmlElement ("ename",ThisNamespace
);
156 Assert
.AreEqual (typeof (SoapTest2
), t
, "T1");
158 t
= SoapServices
.GetInteropTypeFromXmlType ("tname",ThisNamespace
);
159 Assert
.AreEqual (typeof (SoapTest2
), t
, "T2");
163 SoapServices
.PreLoad (typeof(SoapTest
).Assembly
);
165 t
= SoapServices
.GetInteropTypeFromXmlElement ("SoapTest3","ens");
166 Assert
.AreEqual (typeof (SoapTest3
), t
, "A1");
168 t
= SoapServices
.GetInteropTypeFromXmlType ("SoapTest3","tns");
169 Assert
.AreEqual (typeof (SoapTest3
), t
, "A2");
174 public void TestSoapFields ()
179 SoapServices
.GetInteropFieldTypeAndNameFromXmlAttribute (typeof(SoapTest
), "atrib", "ns1", out t
, out name
);
180 Assert
.AreEqual ("atribut", name
, "#1");
181 Assert
.AreEqual (typeof(string), t
, "#2");
183 SoapServices
.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest
), "elem", "ns1", out t
, out name
);
184 Assert
.AreEqual ("element", name
, "#3");
185 Assert
.AreEqual (typeof(int), t
, "#4");
187 SoapServices
.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest
), "elem2", null, out t
, out name
);
188 Assert
.AreEqual ("element2", name
, "#5");
189 Assert
.AreEqual (typeof(int), t
, "#6");
193 [Category("NotWorking")]
194 public void TestSoapActions ()
199 mb
= typeof(SoapTest
).GetMethod ("FesAlgo");
200 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
201 Assert
.AreEqual ("myaction", act
, "S1");
203 mb
= typeof(SoapTest
).GetMethod ("FesAlgoMes");
204 SoapServices
.RegisterSoapActionForMethodBase (mb
, "anotheraction");
205 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
206 Assert
.AreEqual ("anotheraction", act
, "S2");
208 mb
= typeof(SoapTest
).GetMethod ("FesAlgoMesEspecial");
209 act
= SoapServices
.GetSoapActionFromMethodBase (mb
);
210 Assert
.AreEqual (GetClassNs (typeof(SoapTest
))+ "#FesAlgoMesEspecial", act
, "S3");
212 string typeName
, methodName
;
215 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction ("myaction", out typeName
, out methodName
);
216 Assert
.IsTrue (res
, "M1");
217 Assert
.AreEqual (GetSimpleTypeName (typeof(SoapTest
)), typeName
, "M2");
218 Assert
.AreEqual ("FesAlgo", methodName
, "M3");
220 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction ("anotheraction", out typeName
, out methodName
);
221 Assert
.IsTrue (res
, "M4");
222 Assert
.AreEqual (GetSimpleTypeName (typeof(SoapTest
)), typeName
, "M5");
223 Assert
.AreEqual ("FesAlgoMes", methodName
, "M6");
225 res
= SoapServices
.GetTypeAndMethodNameFromSoapAction (GetClassNs (typeof(SoapTest
))+ "#FesAlgoMesEspecial", out typeName
, out methodName
);
226 Assert
.IsTrue (res
, "M7");
227 Assert
.AreEqual (GetSimpleTypeName (typeof(SoapTest
)), typeName
, "M8");
228 Assert
.AreEqual ("FesAlgoMesEspecial", methodName
, "M9");