**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System.Runtime.Remoting / SoapServicesTest.cs
blob1debd5c8c033e59fb0fb048a57fd345cffc0948f
1 //
2 // MonoTests.System.Runtime.Remoting.SoapServicesTest.cs
3 //
4 // Author: Lluis Sanchez Gual (lluis@ximian.com)
5 //
6 // 2003 (C) Copyright, Novell, Inc.
7 //
9 using System;
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")]
18 public class SoapTest
20 [SoapField(XmlElementName="atrib",XmlNamespace="ns1",UseAttribute=true)]
21 public string atribut;
23 [SoapField(XmlElementName="elem",XmlNamespace="ns1")]
24 public int element;
26 [SoapField(XmlElementName="elem2")]
27 public int element2;
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
57 [TestFixture]
58 public class SoapServicesTest: Assertion
60 public string ThisNamespace
62 get
64 string tn = "http://schemas.microsoft.com/clr/nsassem/";
65 tn += GetType ().Namespace + "/" + GetType ().Assembly.GetName().Name;
66 return tn;
70 public string GetClassNs (Type t)
72 string tn = "http://schemas.microsoft.com/clr/nsassem/";
73 tn += t.FullName + "/" + t.Assembly.GetName().Name;
74 return tn;
77 public string GetSimpleTypeName (Type t)
79 return t.FullName + ", " + t.Assembly.GetName().Name;
82 [Test]
83 public void TestGetXmlType ()
85 bool res;
86 string name, ns;
88 // XmlType
90 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest), out name, out ns);
91 Assert ("E1",res);
92 AssertEquals ("E2", "ename", name);
93 AssertEquals ("E3", "ens", ns);
95 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest1), out name, out ns);
96 Assert ("E4",!res);
98 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest2), out name, out ns);
99 Assert ("E5",res);
100 AssertEquals ("E6", "ename", name);
101 AssertEquals ("E7", ThisNamespace, ns);
103 res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest3), out name, out ns);
104 Assert ("E8",res);
105 AssertEquals ("E9", "SoapTest3", name);
106 AssertEquals ("E10", "ens", ns);
108 // XmlElement
110 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest), out name, out ns);
111 Assert ("T1",res);
112 AssertEquals ("T2", "tname", name);
113 AssertEquals ("T3", "tns", ns);
115 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest1), out name, out ns);
116 Assert ("T4",!res);
118 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest2), out name, out ns);
119 Assert ("T5",res);
120 AssertEquals ("T6", "tname", name);
121 AssertEquals ("T7", ThisNamespace, ns);
123 res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest3), out name, out ns);
124 Assert ("T8",res);
125 AssertEquals ("T9", "SoapTest3", name);
126 AssertEquals ("T10", "tns", ns);
129 [Test]
130 public void TestGetInteropType ()
132 Type t;
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);
151 // Preload type
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);
161 // Preload assembly
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);
173 [Test]
174 public void TestSoapFields ()
176 string name;
177 Type t;
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);
192 [Test]
193 public void TestSoapActions ()
195 string act;
196 MethodBase mb;
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;
212 bool res;
214 res = SoapServices.GetTypeAndMethodNameFromSoapAction ("myaction", out typeName, out methodName);
215 Assert ("M1", res);
216 AssertEquals ("M2", GetSimpleTypeName (typeof(SoapTest)), typeName);
217 AssertEquals ("M3", "FesAlgo", methodName);
219 res = SoapServices.GetTypeAndMethodNameFromSoapAction ("anotheraction", out typeName, out methodName);
220 Assert ("M4", res);
221 AssertEquals ("M5", GetSimpleTypeName (typeof(SoapTest)), typeName);
222 AssertEquals ("M6", "FesAlgoMes", methodName);
224 res = SoapServices.GetTypeAndMethodNameFromSoapAction (GetClassNs (typeof(SoapTest))+ "#FesAlgoMesEspecial", out typeName, out methodName);
225 Assert ("M7", res);
226 AssertEquals ("M8", GetSimpleTypeName (typeof(SoapTest)), typeName);
227 AssertEquals ("M9", "FesAlgoMesEspecial", methodName);