X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Runtime.Serialization.Formatters.Soap%2FTest%2FSoapFormatterTest.cs;h=9735ce04b04384613adcd857558bf1c0e3010d9e;hb=a0866bdd3475cc20242edd6d26e89be4b3ec39e1;hp=ad4bf29dce3e28b1119599d63d4a19022ef1bf4b;hpb=d49951ccf584ba637afb1dab7fff714478e3174d;p=mono.git diff --git a/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs b/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs index ad4bf29dce3..9735ce04b04 100644 --- a/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs +++ b/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs @@ -2,6 +2,8 @@ using System; using System.Collections; using System.Reflection; +using System.Threading; +using System.Globalization; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Runtime.Serialization; @@ -9,7 +11,8 @@ using System.Runtime.Serialization.Formatters; using System.Runtime.Serialization.Formatters.Soap; using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.IO; -using NUnit.Framework; +using NUnit.Framework; +using System.Collections.Generic; namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { @@ -25,7 +28,7 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { private string _string; private string[] _strings = new string[]{}; private Queue _queue = new Queue(); - public Hashtable _table = new Hashtable(); + public Dictionary _table = new Dictionary (); public string ObjString { get { return _string; } @@ -54,25 +57,12 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { MoreComplexObject objReturn = obj as MoreComplexObject; if(objReturn == null) return false; if(objReturn._string != this._string) return false; - IEnumerator myEnum = this._table.GetEnumerator(); - foreach(DictionaryEntry e in objReturn._table) { - myEnum.MoveNext(); - DictionaryEntry s = (DictionaryEntry) myEnum.Current; - Assertion.AssertEquals("#_table", s.Key, e.Key); - Assertion.AssertEquals("#_table", s.Value, e.Value); - if(s.Key.ToString() != e.Key.ToString() || s.Value.ToString() != e.Value.ToString()) return false; + + Assert.AreEqual (_table.Count, objReturn._table.Count, "#1"); + foreach(var e in objReturn._table) { + Assert.AreEqual (e.Value, _table[e.Key], e.Key.ToString ()); } -// Assertion.Assert("#_table is null", objReturn._table != null); -// Console.WriteLine("_table[foo]: {0}", objReturn._table["foo"]); -// Assertion.AssertEquals("#_table[\"foo\"]", "barr", objReturn._table["foo"]); -// Console.WriteLine("_table[1]: {0}", objReturn._table[1]); -// Assertion.AssertEquals("#_table[1]", "foo", objReturn._table[1]); -// Console.WriteLine("_table['c']: {0}", objReturn._table['c']); -// Assertion.AssertEquals("#_table['c']", "barr", objReturn._table['c']); -// Console.WriteLine("_table[barr]: {0}", objReturn._table["barr"]); -// Assertion.AssertEquals("#_table[\"barr\"]", 1234567890, objReturn._table["barr"]); return SoapFormatterTest.CheckArray(this._queue.ToArray(), objReturn._queue.ToArray()); - } } @@ -223,7 +213,7 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { objReturn = Serialize(1); Assertion.AssertEquals("#int32", objReturn, 1); objReturn = Serialize((Single)0.1234); - Assertion.AssertEquals("#Single", objReturn, 0.1234); + Assertion.AssertEquals("#Single", objReturn, 0.123400003f); objReturn = Serialize((Double)1234567890.0987654321); Assertion.AssertEquals("#iDouble", objReturn, 1234567890.0987654321); objReturn = Serialize(true); @@ -346,10 +336,10 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { Assertion.AssertEquals("#Version1 Version2", "Version2", objReturn.GetType().Name); Assertion.AssertEquals("#_value", 123, ((Version2) objReturn)._value); Assertion.AssertEquals("#_foo", "Default value", ((Version2) objReturn)._foo); - } - + } + [Test] - public void TestMethodSignatureSerialization () + public void TestMethodSignatureSerialization () { Header h = new Header ("__MethodSignature", new Type [] { typeof(string),typeof(SignatureTest[]) }, false, "http://schemas.microsoft.com/clr/soap/messageProperties"); @@ -368,22 +358,58 @@ namespace MonoTests.System.Runtime.Serialization.Formatters.Soap { SoapMessage t = new SoapMessage (); sf.TopObject = t; - t = (SoapMessage) sf.Deserialize (ms); - + t = (SoapMessage) sf.Deserialize (ms); + Assertion.AssertNotNull ("#1", t.Headers[0].Value); - 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[])); + + Type[] ts = (Type[]) t.Headers[0].Value; + + Assertion.AssertEquals ("#3", 2, ts.Length); Assertion.AssertNotNull ("#4", ts[0]); - Assertion.AssertNotNull ("#5", ts[1]); - Console.WriteLine ("PPP:" + ts[0].GetType()); + Assertion.AssertNotNull ("#5", ts[1]); + Console.WriteLine ("PPP:" + ts[0].GetType()); Assertion.AssertEquals ("#6", typeof(string), ts[0]); Assertion.AssertEquals ("#7", typeof(SignatureTest[]), ts[1]); } - } - + + [Test] + public void TestCulture () + { + var currentCulture = Thread.CurrentThread.CurrentCulture; + try { + Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE"); + + var ms = new MemoryStream (); + var test = new CultureTest (); + + _soapFormatter.Serialize(ms, test); + ms.Position = 0; + _soapFormatter.Deserialize(ms); + } finally { + Thread.CurrentThread.CurrentCulture = currentCulture; + } + } + + [Serializable] + public class CultureTest + { + [OnDeserialized] + public void OnDeserialization (StreamingContext context) + { + var ci = Thread.CurrentThread.CurrentCulture; + Assertion.AssertEquals("#1", "German (Germany)", ci.EnglishName); + } + + [OnSerialized] + public void OnSerialized (StreamingContext context) + { + var ci = Thread.CurrentThread.CurrentCulture; + Assertion.AssertEquals("#2", "German (Germany)", ci.EnglishName); + } + } + } + [Serializable] public class SignatureTest {