Merge pull request #1659 from alexanderkyte/stringbuilder-referencesource
[mono.git] / mcs / class / System.Runtime.Serialization.Formatters.Soap / Test / SoapFormatterTest.cs
index 107f14e2cb2c4b1d131ab8991bc4ab1dd1ba7ed0..9735ce04b04384613adcd857558bf1c0e3010d9e 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
@@ -10,6 +12,7 @@ using System.Runtime.Serialization.Formatters.Soap;
 using System.Runtime.Remoting.Metadata.W3cXsd2001;\r
 using System.IO;\r
 using NUnit.Framework;\r
+using System.Collections.Generic;\r
 \r
 namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {\r
        \r
@@ -25,7 +28,7 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
                private string _string;\r
                private string[] _strings = new string[]{};\r
                private Queue _queue = new Queue();\r
-               public Hashtable _table = new Hashtable();\r
+               public Dictionary<object, object> _table = new Dictionary<object, object> ();\r
 \r
                public string ObjString {\r
                        get { return _string; }\r
@@ -54,25 +57,12 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
                        MoreComplexObject objReturn = obj as MoreComplexObject;\r
                        if(objReturn == null) return false;\r
                        if(objReturn._string != this._string) return false;\r
-                       IEnumerator myEnum = this._table.GetEnumerator();\r
-                       foreach(DictionaryEntry e in objReturn._table) {\r
-                               myEnum.MoveNext();\r
-                               DictionaryEntry s = (DictionaryEntry) myEnum.Current;\r
-                               Assertion.AssertEquals("#_table", s.Key, e.Key);\r
-                               Assertion.AssertEquals("#_table", s.Value, e.Value);\r
-                               if(s.Key.ToString() != e.Key.ToString() || s.Value.ToString() != e.Value.ToString()) return false;\r
+\r
+                       Assert.AreEqual (_table.Count, objReturn._table.Count, "#1");\r
+                       foreach(var e in objReturn._table) {\r
+                               Assert.AreEqual (e.Value, _table[e.Key], e.Key.ToString ());\r
                        }\r
-//                     Assertion.Assert("#_table is null", objReturn._table != null);\r
-//                     Console.WriteLine("_table[foo]: {0}", objReturn._table["foo"]);\r
-//                     Assertion.AssertEquals("#_table[\"foo\"]", "barr", objReturn._table["foo"]);\r
-//                     Console.WriteLine("_table[1]: {0}", objReturn._table[1]);\r
-//                     Assertion.AssertEquals("#_table[1]", "foo", objReturn._table[1]);\r
-//                     Console.WriteLine("_table['c']: {0}", objReturn._table['c']);\r
-//                     Assertion.AssertEquals("#_table['c']", "barr", objReturn._table['c']);\r
-//                     Console.WriteLine("_table[barr]: {0}", objReturn._table["barr"]);\r
-//                     Assertion.AssertEquals("#_table[\"barr\"]", 1234567890, objReturn._table["barr"]);\r
                        return SoapFormatterTest.CheckArray(this._queue.ToArray(), objReturn._queue.ToArray());\r
-                       \r
                }\r
                \r
        }\r
@@ -382,6 +372,42 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
                        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