--- trunk/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlInt16Test.cs 2007-09-25 11:12:32 UTC (rev 86308) +++ trunk/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlInt16Test.cs 2007-09-25 11:17:43 UTC (rev 86309) @@ -39,6 +39,10 @@ #if TARGET_JVM using DivideByZeroException = System.ArithmeticException; #endif +#if NET_2_0 +using System.Xml.Serialization; +using System.IO; +#endif namespace MonoTests.System.Data.SqlTypes { @@ -704,6 +708,57 @@ XmlQualifiedName qualifiedName = SqlInt16.GetXsdType (null); NUnit.Framework.Assert.AreEqual ("short", qualifiedName.Name, "#A01"); } + + internal void ReadWriteXmlTestInternal (string xml, + short testval, + string unit_test_id) + { + SqlInt16 test; + SqlInt16 test1; + XmlSerializer ser; + StringWriter sw; + XmlTextWriter xw; + StringReader sr; + XmlTextReader xr; + + test = new SqlInt16 (testval); + ser = new XmlSerializer(typeof(SqlInt16)); + sw = new StringWriter (); + xw = new XmlTextWriter (sw); + + ser.Serialize (xw, test); + + // Assert.AreEqual (xml, sw.ToString (), unit_test_id); + Console.WriteLine ("{0} - Got: {1}", unit_test_id, sw.ToString ()); + + sr = new StringReader (xml); + xr = new XmlTextReader (sr); + test1 = (SqlInt16)ser.Deserialize (xr); + + Assert.AreEqual (testval, test1.Value, unit_test_id); + Console.WriteLine ("{0} - Got: {1}", unit_test_id, test1.Value); + } + + [Test] + public void ReadWriteXmlTest () + { + string xml1 = "4556"; + string xml2 = "-6445"; + string xml3 = "0x455687AB3E4D56F"; + short test1 = 4556; + short test2 = -6445; + short test3 = 0x4F56; + + ReadWriteXmlTestInternal (xml1, test1, "BA01"); + ReadWriteXmlTestInternal (xml2, test2, "BA02"); + + try { + ReadWriteXmlTestInternal (xml3, test3, "BA03"); + Assert.Fail ("BA03"); + } catch(Exception e) { + Assert.AreEqual (typeof (FormatException), e.GetType (), "#BA03"); + } + } #endif } }