Merge pull request #485 from mtausig/master
[mono.git] / mcs / class / System.Runtime.Serialization.Formatters.Soap / Test / SoapFormatterTest.cs
index ad4bf29dce3e28b1119599d63d4a19022ef1bf4b..3dd914db71bd48309df4f6a987248553a1e0b3ab 100644 (file)
@@ -2,6 +2,8 @@
 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
@@ -9,7 +11,7 @@ using System.Runtime.Serialization.Formatters;
 using System.Runtime.Serialization.Formatters.Soap;\r
 using System.Runtime.Remoting.Metadata.W3cXsd2001;\r
 using System.IO;\r
-using NUnit.Framework;
+using NUnit.Framework;\r
 \r
 namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {\r
        \r
@@ -223,7 +225,7 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
                        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
@@ -346,10 +348,10 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
                        Assertion.AssertEquals("#Version1 Version2", "Version2", objReturn.GetType().Name);\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 ()
+               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
@@ -368,22 +370,58 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
 \r
                        SoapMessage t = new SoapMessage ();\r
                        sf.TopObject = t;\r
-                       t = (SoapMessage) sf.Deserialize (ms);
-                       
+                       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[]));
-                       
-                       Type[] ts = (Type[]) t.Headers[0].Value;
-                       
-                       Assertion.AssertEquals ("#3", 2, ts.Length);
+                       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]);
-                       Console.WriteLine ("PPP:" + ts[0].GetType());
+                       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