using System;\r
using System.Collections;\r
using System.Reflection;\r
+using System.Threading;\r
+using System.Globalization;\r
using System.Runtime.Remoting;\r
using System.Runtime.Remoting.Messaging;\r
using System.Runtime.Serialization;\r
using System.Runtime.Serialization.Formatters;\r
using System.Runtime.Serialization.Formatters.Soap;\r
+using System.Runtime.Remoting.Metadata.W3cXsd2001;\r
using System.IO;\r
using NUnit.Framework;\r
\r
objReturn = Serialize(1);\r
Assertion.AssertEquals("#int32", objReturn, 1);\r
objReturn = Serialize((Single)0.1234);\r
- Assertion.AssertEquals("#Single", objReturn, 0.1234);\r
+ Assertion.AssertEquals("#Single", objReturn, 0.123400003f);\r
objReturn = Serialize((Double)1234567890.0987654321);\r
Assertion.AssertEquals("#iDouble", objReturn, 1234567890.0987654321);\r
objReturn = Serialize(true);\r
Assertion.AssertEquals("#_value", 123, ((Version2) objReturn)._value);\r
Assertion.AssertEquals("#_foo", "Default value", ((Version2) objReturn)._foo);\r
}\r
+ \r
+ [Test]\r
+ public void TestMethodSignatureSerialization ()\r
+ {\r
+ Header h = new Header ("__MethodSignature", new Type [] { typeof(string),typeof(SignatureTest[]) }, false, "http://schemas.microsoft.com/clr/soap/messageProperties");\r
+\r
+ SoapMessage msg = new SoapMessage ();\r
+ msg.MethodName = "Run";\r
+ msg.ParamNames = new string [] { "nom" };\r
+ msg.ParamTypes = new Type [] { typeof(SignatureTest) };\r
+ msg.ParamValues = new object[] { new SignatureTest () };\r
+ msg.Headers = new Header[] { h};\r
+\r
+ MemoryStream ms = new MemoryStream ();\r
+ SoapFormatter sf = new SoapFormatter ();\r
+ sf.Serialize (ms, msg);\r
+\r
+ ms.Position = 0;\r
+\r
+ SoapMessage t = new SoapMessage ();\r
+ sf.TopObject = t;\r
+ t = (SoapMessage) sf.Deserialize (ms);\r
+ \r
+ Assertion.AssertNotNull ("#1", t.Headers[0].Value);\r
+ Assertion.AssertEquals ("#2", t.Headers[0].Value.GetType (), typeof(Type[]));\r
+ \r
+ Type[] ts = (Type[]) t.Headers[0].Value;\r
+ \r
+ Assertion.AssertEquals ("#3", 2, ts.Length);\r
+ Assertion.AssertNotNull ("#4", ts[0]);\r
+ Assertion.AssertNotNull ("#5", ts[1]);\r
+ Console.WriteLine ("PPP:" + ts[0].GetType());\r
+ Assertion.AssertEquals ("#6", typeof(string), ts[0]);\r
+ Assertion.AssertEquals ("#7", typeof(SignatureTest[]), ts[1]);\r
+ }\r
+\r
+ [Test]\r
+ public void TestCulture ()\r
+ {\r
+ var currentCulture = Thread.CurrentThread.CurrentCulture;\r
+ try {\r
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");\r
+\r
+ var ms = new MemoryStream ();\r
+ var test = new CultureTest ();\r
+\r
+ _soapFormatter.Serialize(ms, test);\r
+ ms.Position = 0;\r
+ _soapFormatter.Deserialize(ms);\r
+ } finally {\r
+ Thread.CurrentThread.CurrentCulture = currentCulture;\r
+ }\r
+ }\r
+\r
+ [Serializable]\r
+ public class CultureTest\r
+ {\r
+ [OnDeserialized]\r
+ public void OnDeserialization (StreamingContext context)\r
+ {\r
+ var ci = Thread.CurrentThread.CurrentCulture;\r
+ Assertion.AssertEquals("#1", "German (Germany)", ci.EnglishName);\r
+ }\r
+ \r
+ [OnSerialized]\r
+ public void OnSerialized (StreamingContext context)\r
+ {\r
+ var ci = Thread.CurrentThread.CurrentCulture;\r
+ Assertion.AssertEquals("#2", "German (Germany)", ci.EnglishName);\r
+ }\r
+ }\r
}\r
+ \r
+ [Serializable]\r
+ public class SignatureTest\r
+ {\r
+ public SoapQName qn = new SoapQName ("e", "name", "espai");\r
+ } \r
}\r