a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
232 lines
6.6 KiB
C#
232 lines
6.6 KiB
C#
//
|
|
// MonoTests.System.Runtime.Remoting.SoapServicesTest.cs
|
|
//
|
|
// Author: Lluis Sanchez Gual (lluis@ximian.com)
|
|
//
|
|
// 2003 (C) Copyright, Novell, Inc.
|
|
//
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Runtime.Remoting;
|
|
using System.Runtime.Remoting.Metadata;
|
|
using NUnit.Framework;
|
|
|
|
namespace MonoTests.System.Runtime.Remoting
|
|
{
|
|
[SoapTypeAttribute (XmlElementName="ename", XmlNamespace="ens", XmlTypeName="tname", XmlTypeNamespace="tns")]
|
|
public class SoapTest
|
|
{
|
|
[SoapField(XmlElementName="atrib",XmlNamespace="ns1",UseAttribute=true)]
|
|
public string atribut;
|
|
|
|
[SoapField(XmlElementName="elem",XmlNamespace="ns1")]
|
|
public int element;
|
|
|
|
[SoapField(XmlElementName="elem2")]
|
|
public int element2;
|
|
|
|
[SoapMethod (SoapAction="myaction")]
|
|
public void FesAlgo ()
|
|
{
|
|
}
|
|
|
|
public void FesAlgoMes ()
|
|
{
|
|
}
|
|
|
|
public void FesAlgoMesEspecial ()
|
|
{
|
|
}
|
|
}
|
|
|
|
public class SoapTest1
|
|
{
|
|
}
|
|
|
|
[SoapTypeAttribute (XmlElementName="ename", XmlTypeName="tname")]
|
|
public class SoapTest2
|
|
{
|
|
}
|
|
|
|
[SoapTypeAttribute (XmlNamespace="ens", XmlTypeNamespace="tns")]
|
|
public class SoapTest3
|
|
{
|
|
}
|
|
|
|
[TestFixture]
|
|
public class SoapServicesTest
|
|
{
|
|
public string ThisNamespace
|
|
{
|
|
get
|
|
{
|
|
string tn = "http://schemas.microsoft.com/clr/nsassem/";
|
|
tn += GetType ().Namespace + "/" + GetType ().Assembly.GetName().Name;
|
|
return tn;
|
|
}
|
|
}
|
|
|
|
public string GetClassNs (Type t)
|
|
{
|
|
string tn = "http://schemas.microsoft.com/clr/nsassem/";
|
|
tn += t.FullName + "/" + t.Assembly.GetName().Name;
|
|
return tn;
|
|
}
|
|
|
|
public string GetSimpleTypeName (Type t)
|
|
{
|
|
return t.FullName + ", " + t.Assembly.GetName().Name;
|
|
}
|
|
|
|
[Test]
|
|
public void TestGetXmlType ()
|
|
{
|
|
bool res;
|
|
string name, ns;
|
|
|
|
// XmlType
|
|
|
|
res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest), out name, out ns);
|
|
Assert.IsTrue (res, "E1");
|
|
Assert.AreEqual ("ename", name, "E2");
|
|
Assert.AreEqual ("ens", ns, "E3");
|
|
|
|
res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest1), out name, out ns);
|
|
Assert.IsTrue (!res, "E4");
|
|
|
|
res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest2), out name, out ns);
|
|
Assert.IsTrue (res, "E5");
|
|
Assert.AreEqual ("ename", name, "E6");
|
|
Assert.AreEqual (ThisNamespace, ns, "E7");
|
|
|
|
res = SoapServices.GetXmlElementForInteropType (typeof(SoapTest3), out name, out ns);
|
|
Assert.IsTrue (res, "E8");
|
|
Assert.AreEqual ("SoapTest3", name, "E9");
|
|
Assert.AreEqual ("ens", ns, "E10");
|
|
|
|
// XmlElement
|
|
|
|
res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest), out name, out ns);
|
|
Assert.IsTrue (res, "T1");
|
|
Assert.AreEqual ("tname", name, "T2");
|
|
Assert.AreEqual ("tns", ns, "T3");
|
|
|
|
res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest1), out name, out ns);
|
|
Assert.IsTrue (!res, "T4");
|
|
|
|
res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest2), out name, out ns);
|
|
Assert.IsTrue (res, "T5");
|
|
Assert.AreEqual ("tname", name, "T6");
|
|
Assert.AreEqual (ThisNamespace, ns, "T7");
|
|
|
|
res = SoapServices.GetXmlTypeForInteropType (typeof(SoapTest3), out name, out ns);
|
|
Assert.IsTrue (res, "T8");
|
|
Assert.AreEqual ("SoapTest3", name, "T9");
|
|
Assert.AreEqual ("tns", ns, "T10");
|
|
}
|
|
|
|
[Test]
|
|
public void TestGetInteropType ()
|
|
{
|
|
Type t;
|
|
|
|
// Manual registration
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlElement ("aa","bb");
|
|
Assert.AreEqual (t, null, "M1");
|
|
|
|
SoapServices.RegisterInteropXmlElement ("aa","bb",typeof(SoapTest));
|
|
t = SoapServices.GetInteropTypeFromXmlElement ("aa","bb");
|
|
Assert.AreEqual (typeof (SoapTest), t, "M2");
|
|
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlType ("aa","bb");
|
|
Assert.AreEqual (null, t, "M3");
|
|
|
|
SoapServices.RegisterInteropXmlType ("aa","bb",typeof(SoapTest));
|
|
t = SoapServices.GetInteropTypeFromXmlType ("aa","bb");
|
|
Assert.AreEqual (typeof (SoapTest), t, "M4");
|
|
|
|
// Preload type
|
|
|
|
SoapServices.PreLoad (typeof(SoapTest2));
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlElement ("ename",ThisNamespace);
|
|
Assert.AreEqual (typeof (SoapTest2), t, "T1");
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlType ("tname",ThisNamespace);
|
|
Assert.AreEqual (typeof (SoapTest2), t, "T2");
|
|
|
|
// Preload assembly
|
|
|
|
SoapServices.PreLoad (typeof(SoapTest).Assembly);
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlElement ("SoapTest3","ens");
|
|
Assert.AreEqual (typeof (SoapTest3), t, "A1");
|
|
|
|
t = SoapServices.GetInteropTypeFromXmlType ("SoapTest3","tns");
|
|
Assert.AreEqual (typeof (SoapTest3), t, "A2");
|
|
|
|
}
|
|
|
|
[Test]
|
|
public void TestSoapFields ()
|
|
{
|
|
string name;
|
|
Type t;
|
|
|
|
SoapServices.GetInteropFieldTypeAndNameFromXmlAttribute (typeof(SoapTest), "atrib", "ns1", out t, out name);
|
|
Assert.AreEqual ("atribut", name, "#1");
|
|
Assert.AreEqual (typeof(string), t, "#2");
|
|
|
|
SoapServices.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest), "elem", "ns1", out t, out name);
|
|
Assert.AreEqual ("element", name, "#3");
|
|
Assert.AreEqual (typeof(int), t, "#4");
|
|
|
|
SoapServices.GetInteropFieldTypeAndNameFromXmlElement (typeof(SoapTest), "elem2", null, out t, out name);
|
|
Assert.AreEqual ("element2", name, "#5");
|
|
Assert.AreEqual (typeof(int), t, "#6");
|
|
}
|
|
|
|
[Test]
|
|
[Category("NotWorking")]
|
|
public void TestSoapActions ()
|
|
{
|
|
string act;
|
|
MethodBase mb;
|
|
|
|
mb = typeof(SoapTest).GetMethod ("FesAlgo");
|
|
act = SoapServices.GetSoapActionFromMethodBase (mb);
|
|
Assert.AreEqual ("myaction", act, "S1");
|
|
|
|
mb = typeof(SoapTest).GetMethod ("FesAlgoMes");
|
|
SoapServices.RegisterSoapActionForMethodBase (mb, "anotheraction");
|
|
act = SoapServices.GetSoapActionFromMethodBase (mb);
|
|
Assert.AreEqual ("anotheraction", act, "S2");
|
|
|
|
mb = typeof(SoapTest).GetMethod ("FesAlgoMesEspecial");
|
|
act = SoapServices.GetSoapActionFromMethodBase (mb);
|
|
Assert.AreEqual (GetClassNs (typeof(SoapTest))+ "#FesAlgoMesEspecial", act, "S3");
|
|
|
|
string typeName, methodName;
|
|
bool res;
|
|
|
|
res = SoapServices.GetTypeAndMethodNameFromSoapAction ("myaction", out typeName, out methodName);
|
|
Assert.IsTrue (res, "M1");
|
|
Assert.AreEqual (GetSimpleTypeName (typeof(SoapTest)), typeName, "M2");
|
|
Assert.AreEqual ("FesAlgo", methodName, "M3");
|
|
|
|
res = SoapServices.GetTypeAndMethodNameFromSoapAction ("anotheraction", out typeName, out methodName);
|
|
Assert.IsTrue (res, "M4");
|
|
Assert.AreEqual (GetSimpleTypeName (typeof(SoapTest)), typeName, "M5");
|
|
Assert.AreEqual ("FesAlgoMes", methodName, "M6");
|
|
|
|
res = SoapServices.GetTypeAndMethodNameFromSoapAction (GetClassNs (typeof(SoapTest))+ "#FesAlgoMesEspecial", out typeName, out methodName);
|
|
Assert.IsTrue (res, "M7");
|
|
Assert.AreEqual (GetSimpleTypeName (typeof(SoapTest)), typeName, "M8");
|
|
Assert.AreEqual ("FesAlgoMesEspecial", methodName, "M9");
|
|
}
|
|
}
|
|
}
|