[LoongArch64] Part-5:add loongarch support in some files for LoongArch64. (#21769)
[mono-project.git] / mcs / class / corlib / Test / System.Runtime.Remoting / SoapServicesTest.cs
blob2afeaae97c840b425c8f3b949ef74057121a92e5
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
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.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");
108 // XmlElement
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");
129 [Test]
130 public void TestGetInteropType ()
132 Type t;
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");
151 // Preload type
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");
161 // Preload assembly
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");
173 [Test]
174 public void TestSoapFields ()
176 string name;
177 Type t;
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");
192 [Test]
193 [Category("NotWorking")]
194 public void TestSoapActions ()
196 string act;
197 MethodBase mb;
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;
213 bool res;
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");