X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.XML%2FTest%2FSystem.Xml.Serialization%2FXmlSerializationWriterTests.cs;h=5b43e5aa93e2956204b57757cda3c566c7b09d0d;hb=3b1767cacfd9d7d44069622c4b5d25aeb85413e8;hp=13679d506584db7fa68d196594dd3bce89e55ae1;hpb=5bbfa8860b090e465a3aa45edeb9c94481ef1a22;p=mono.git diff --git a/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializationWriterTests.cs b/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializationWriterTests.cs index 13679d50658..5b43e5aa93e 100644 --- a/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializationWriterTests.cs +++ b/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializationWriterTests.cs @@ -1,1562 +1,1562 @@ -// -// MonoTests.System.Xml.Serialization.XmlSerializationWriterTests -// -// Author: Erik LeBel -// -// (C) Erik LeBel 2003 -// -// FIXME add tests for callbacks -// FIXME add tests for writes that generate namespaces -// FIXME add test that write XmlNode objects -// - -using System; -using System.Globalization; -using System.IO; -using System.Xml; -using System.Xml.Serialization; - -using NUnit.Framework; - -using MonoTests.System.Xml.TestClasses; - -namespace MonoTests.System.XmlSerialization -{ - // base, common implementation of XmlSerializationWriter test harness. - // the reason for this is that all auto generated namespace prefixes - // of the form q# are modified by any Write* that defines a new namespace. - // The result of this is that even though we redefine the string results - // to exclude previous tests, the q#s will change depending on number of - // namespace declarations were made prior to the perticual test. This - // means that if the [Test] methods are called out of sequence, they - // all start to fail. For this reason, tests that define and verify - // temporary namespaces should be stored in a seperate class which protects - // itself from accidental pre-definitions. - public class XmlSerializarionWriterTester : XmlSerializationWriter - { - // appease the compiler - protected override void InitCallbacks () - { - } - - StringWriter sw; - XmlTextWriter writer; - - [SetUp] - public void Reset() - { - sw = new StringWriter (); - writer = new XmlTextWriter (sw); - writer.QuoteChar = '\''; - writer.Formatting = Formatting.None; - Writer = writer; - } - - public string Content - { - get - { - string val = sw.GetStringBuilder().ToString(); - return val; - } - } - - public void ExecuteWritePotentiallyReferencingElement (string name, string ns, object o, Type ambientType, bool suppressReference, bool isNullable) - { - WritePotentiallyReferencingElement (name, ns, o, ambientType, suppressReference, isNullable); - } - - public void ExecuteWriteTypedPrimitive (string name, string ns, object o, bool xsiType) - { - WriteTypedPrimitive (name, ns, o, xsiType); - } - } - - // this class tests the methods of the XmlSerializationWriter that - // can be executed out of order. - [TestFixture] - public class XmlSerializationWriterSimpleTests : XmlSerializarionWriterTester - { - const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema"; - const string XmlSchemaInstanceNamespace = "http://www.w3.org/2001/XMLSchema-instance"; - const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/"; - const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/"; - const string ANamespace = "some:urn"; - const string AnotherNamespace = "another:urn"; - - // These TestFrom* methods indirectly test the functionality of XmlCustomFormatter - - [Test] - public void TestFromByteArrayBase64() - { - // FIXME - // This should work according to Mono's API, but .NET's FromByteArrayBase64 - // returns a byte array. - // - //string val = this.FromByteArrayBase64(new byte [] {143, 144, 1, 0}); - //Assert.AreEqual (FromByteArrayBase64(null), ""); - - //val = FromByteArrayBase64(null); - //try/catch or AssertEruals? - } - - [Test] - public void TestFromByteArrayHex() - { - byte [] vals = {143, 144, 1, 0}; - Assert.AreEqual ("8F900100", FromByteArrayHex(vals)); - Assert.IsNull (FromByteArrayHex (null)); - } - - [Test] - public void TestFromChar() - { - Assert.AreEqual ("97", FromChar ('a')); - Assert.AreEqual ("0", FromChar ('\0')); - Assert.AreEqual ("10", FromChar ('\n')); - Assert.AreEqual ("65281", FromChar ('\uFF01')); - } - - [Test] - public void TestFromDate() - { - DateTime d = new DateTime(); - Assert.AreEqual ("0001-01-01", FromDate (d)); - } - - [Test] - public void TestFromDateTime() - { - DateTime d = new DateTime(); - Assert.AreEqual ("0001-01-01T00:00:00.0000000", FromDateTime (d).Substring (0, 27)); - } - - [Test] // bug #77500 - public void TestFromEnum() - { - long[] ids = {1, 2, 3, 4}; - string[] values = {"one", "two", "three"}; - - Assert.AreEqual ("one", FromEnum (1, values, ids), "#1"); - Assert.AreEqual (string.Empty, FromEnum (0, values, ids), "#2"); - Assert.AreEqual ("one two", FromEnum (3, values, ids), "#3"); - - try { - string dummy = FromEnum(4, values, ids); - Assert.Fail("#4"); - } catch (IndexOutOfRangeException) { - } - - string[] correctValues = {"one", "two", "three", "four"}; - Assert.AreEqual ("four", FromEnum (4, correctValues, ids), "#5"); - Assert.AreEqual ("one four", FromEnum (5, correctValues, ids), "#6"); - Assert.AreEqual ("two four", FromEnum (6, correctValues, ids), "#7"); - Assert.AreEqual ("one two three four", FromEnum (7, correctValues, ids), "#8"); - - string[] flagValues = {"one", "two", "four", "eight"}; - long[] flagIDs = {1, 2, 4, 8}; - Assert.AreEqual (string.Empty, FromEnum (0, flagValues, flagIDs), "#9"); - Assert.AreEqual ("two", FromEnum (2, flagValues, flagIDs), "#10"); - Assert.AreEqual ("four", FromEnum (4, flagValues, flagIDs), "#1"); - Assert.AreEqual ("one four", FromEnum (5, flagValues, flagIDs), "#12"); - Assert.AreEqual ("two four", FromEnum (6, flagValues, flagIDs), "#13"); - Assert.AreEqual ("one two four", FromEnum (7, flagValues, flagIDs), "#14"); - Assert.AreEqual ("eight", FromEnum (8, flagValues, flagIDs), "#15"); - Assert.AreEqual ("one four eight", FromEnum (13, flagValues, flagIDs), "#16"); - - string[] unorderedValues = {"one", "four", "two", "zero"}; - long[] unorderedIDs = {1, 4, 2, 0}; - - Assert.AreEqual (string.Empty, FromEnum (0, unorderedValues, unorderedIDs), "#17"); - Assert.AreEqual ("two", FromEnum (2, unorderedValues, unorderedIDs), "#18"); - Assert.AreEqual ("four", FromEnum (4, unorderedValues, unorderedIDs), "#19"); - Assert.AreEqual ("one four", FromEnum (5, unorderedValues, unorderedIDs), "#20"); - Assert.AreEqual ("four two", FromEnum (6, unorderedValues, unorderedIDs), "#21"); - Assert.AreEqual ("one four two", FromEnum (7, unorderedValues, unorderedIDs), "#22"); - - string[] zeroValues = {"zero", "ten"}; - long[] zeroIDs = {0, 10}; - - Assert.AreEqual ("zero", FromEnum (0, zeroValues, zeroIDs), "#9"); - Assert.AreEqual ("ten", FromEnum (10, zeroValues, zeroIDs), "#9"); - - string[] reverseZeroValues = {"", "zero"}; - long[] reverseZeroIDs = {4, 0}; - Assert.AreEqual (string.Empty, FromEnum (0, reverseZeroValues, reverseZeroIDs), "#9"); - Assert.AreEqual ("zero", FromEnum (4, reverseZeroValues, reverseZeroIDs), "#9"); - - string[] emptyValues = { "zero" }; - long[] emptyIDs = {0}; - Assert.AreEqual ("zero", FromEnum (0, emptyValues, emptyIDs), "#9"); - } - - [Test] - public void TestFromEnum_InvalidValue () - { - long[] ids = {1, 2, 3, 4}; - string[] values = {"one", "two", "three", "four"}; - -#if NET_2_0 - try { - FromEnum (8, values, ids); - Assert.Fail ("#A1"); - } catch (InvalidOperationException ex) { - Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2"); - Assert.IsNotNull (ex.Message, "#A3"); - Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#A4"); - Assert.IsNull (ex.InnerException, "#A5"); - } -#else - Assert.AreEqual ("8", FromEnum (8, values, ids), "#A6"); -#endif - -#if NET_2_0 - try { - FromEnum (8, values, ids, "Some.Type.Name"); - Assert.Fail ("#B1"); - } catch (InvalidOperationException ex) { - Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2"); - Assert.IsNotNull (ex.Message, "#B3"); - Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#B4"); - Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#B5"); - Assert.IsNull (ex.InnerException, "#B6"); - } -#endif - } - - [Test] - [ExpectedException (typeof (NullReferenceException))] - public void TestFromEnum_Null_Values () - { - long[] ids = { 1, 2, 3, 4 }; - string[] values = { "one", "two", "three", "four" }; - - FromEnum (1, (string[]) null, ids); - } - - [Test] - [ExpectedException (typeof (NullReferenceException))] - public void TestFromEnum_Null_IDs () - { - string[] values = { "one", "two", "three", "four" }; - - FromEnum (1, values, (long[]) null); - } - - [Test] - public void TestFromTime() - { - DateTime d = new DateTime(); - // Don't include time zone. - Assert.AreEqual ("00:00:00.0000000", FromTime (d).Substring (0, 16)); - } - - [Test] - public void TestFromXmlName() - { - Assert.AreEqual ("Hello", FromXmlName ("Hello")); - Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlName ("go dogs go")); - Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlName ("what's up")); - Assert.AreEqual ("_x0031_23go", FromXmlName ("123go")); - Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlName ("Hello what's.up")); - } - - [Test] - public void TestFromXmlNCName() - { - Assert.AreEqual ("Hello", FromXmlNCName ("Hello")); - Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNCName ("go dogs go")); - Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNCName ("what's up")); - Assert.AreEqual ("_x0031_23go", FromXmlNCName ("123go")); - Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNCName ("Hello what's.up")); - } - - [Test] - public void TestFromXmlNmToken() - { - Assert.AreEqual ("Hello", FromXmlNmToken ("Hello")); - Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNmToken ("go dogs go")); - Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNmToken ("what's up")); - Assert.AreEqual ("123go", FromXmlNmToken ("123go")); - Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNmToken ("Hello what's.up")); - } - - [Test] - public void TestFromXmlNmTokens() - { - Assert.AreEqual ("Hello go dogs_go 123go what_x0027_s.up", FromXmlNmTokens ("Hello go dogs_go 123go what's.up")); - } - - [Test] - public void TestWriteAttribute() - { - WriteStartElement("x"); - WriteAttribute("a", "b"); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteAttribute("a", new byte[] {1, 2, 3}); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteAttribute("a", "", Content); - - Reset(); - WriteStartElement("x"); - string typedPlaceholder = null; - WriteAttribute("a", typedPlaceholder); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteAttribute("a", "\""); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteAttribute("a", "b\nc"); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteAttribute("a", ANamespace, "b"); - WriteEndElement(); - Assert.AreEqual ("", Content); - } - - [Test] - public void TestWriteElementEncoded() - { - // FIXME - // XmlNode related - } - - [Test] - public void TestWriteElementLiteral() - { - // FIXME - // XmlNode related - } - - [Test] - public void TestWriteElementString() - { - WriteElementString("x", "a"); - Assert.AreEqual ("a", Content); - - Reset(); - WriteElementString("x", "<a", Content); - } - - [Test] - public void TestWriteElementStringRaw() - { - byte [] placeHolderArray = null; - WriteElementStringRaw("x", placeHolderArray); - Assert.AreEqual ("", Content); - - Reset(); - WriteElementStringRaw("x", new byte[] {0, 2, 4}); - Assert.AreEqual ("AAIE", Content); - - Reset(); - WriteElementStringRaw("x", new byte[] {}); - Assert.AreEqual ("", Content); - - // Note to reader, the output is not valid xml - Reset(); - WriteElementStringRaw("x", "a > 13 && a < 19"); - Assert.AreEqual ("a > 13 && a < 19", Content); - } - - [Test] - public void TestWriteEmptyTag() - { - WriteEmptyTag("x"); - Assert.AreEqual ("", Content); - } - - [Test] - public void TestWriteNamespaceDeclarations() - { - XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); - - WriteStartElement("x"); - WriteNamespaceDeclarations(ns); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - ns.Add("mypref", ANamespace); - WriteStartElement("x"); - WriteNamespaceDeclarations(ns); - WriteEndElement(); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - - Reset(); - ns.Add("ns2", "another:urn"); - WriteStartElement("x"); - WriteNamespaceDeclarations(ns); - WriteEndElement(); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - - Reset(); - ns.Add("ns3", "ya:urn"); - WriteStartElement("x"); - WriteNamespaceDeclarations(ns); - WriteEndElement(); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - } - - [Test] - public void TestWriteNullableStringLiteral() - { - WriteNullableStringLiteral("x", null, null); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - - Reset(); - WriteNullableStringLiteral("x", null, ""); - Assert.AreEqual ("", Content); - - Reset(); - WriteNullableStringLiteral("x", null, "aa<b\'c", Content); - - Reset(); - WriteNullableStringLiteral("x", ANamespace, "b"); - Assert.AreEqual ("b", Content); - } - - [Test] - public void TestWriteNullableStringLiteralRaw() - { - WriteNullableStringLiteralRaw("x", null, new byte[] {1, 2, 244}); - Assert.AreEqual ("AQL0", Content); - } - - [Test] - public void TestWriteNullTagEncoded() - { - WriteNullTagEncoded("x"); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - } - - [Test] - public void TestWriteNullTagLiteral() - { - WriteNullTagLiteral("x"); - Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); - } - - [Test] - [Category ("NotWorking")] - public void TestWritePotentiallyReferencingElement () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, EnumDefaultValue.e1, typeof (EnumDefaultValue), true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "1", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, (int) 1, typeof (EnumDefaultValue), true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "1", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", typeof (string), true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "something", ANamespace), xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", null, true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "something", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, new string[] { "A", "B" }, typeof (string[]), true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "" + - "A" + - "B" + - "", XmlSchemaNamespace, SoapEncodingNamespace), xsw.Content, "#5"); - } - - [Test] - public void TestWriteSerializable() - { - // FIXME - //Assert.AreEqual (, ""); - } - - [Test] - public void TestWriteStartDocument() - { - Assert.AreEqual ("", Content); - - WriteStartDocument(); - Assert.AreEqual ("", Content); - } - - [Test] - public void TestWriteStartElement() - { - WriteStartElement("x"); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteValue("a"); - WriteEndElement(); - Assert.AreEqual ("a", Content); - - Reset(); - WriteStartElement("x"); - WriteStartElement("y", "z"); - WriteEndElement(); - WriteEndElement(); - Assert.AreEqual ("", Content); - - Reset(); - WriteStartElement("x"); - WriteStartElement("y", "z", true); - WriteEndElement(); - WriteEndElement(); - Assert.AreEqual ("", Content); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_Base64Binary () - { - byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 }; - string expected = "/xQKBQAH"; - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", ANamespace, expected), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", expected), xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", expected), xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaNamespace, expected), - xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaInstanceNamespace, expected), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>{1}", ANamespace, expected), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, byteArray, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", - XmlSchemaNamespace, expected), xsw.Content, "#7"); - } - - [Test] - public void TestWriteTypedPrimitive_Base64Binary_XsiType () - { - byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 }; - string expected = "/xQKBQAH"; - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_Boolean () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "true", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, false, false); - Assert.AreEqual ("false", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, true, false); - Assert.AreEqual ("true", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, false, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "false", XmlSchemaNamespace), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "true", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, false, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>false", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, true, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "true", XmlSchemaNamespace), - xsw.Content, "#7"); - } - - [Test] - public void TestWriteTypedPrimitive_Boolean_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, true, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "true", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, false, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "false", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_Char () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 'c', false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "99", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'a', false); - Assert.AreEqual ("97", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, 'b', false); - Assert.AreEqual ("98", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 'd', false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "100", XmlSchemaNamespace), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, 'e', false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "101", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, ' ', false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>32", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, '0', false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "48", WsdlTypesNamespace), - xsw.Content, "#7"); - } - - [Test] - [Category ("NotWorking")] // namespace should be wsdl types ns - public void TestWriteTypedPrimitive_Char_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'c', true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "99", - WsdlTypesNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, 'a', true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "97", - WsdlTypesNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_DateTime () - { - DateTime dateTime = new DateTime (1973, 08, 13); - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", ANamespace, FromDateTime (dateTime)), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", FromDateTime (dateTime)), xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", FromDateTime (dateTime)), xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaNamespace, - FromDateTime (dateTime)), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaInstanceNamespace, - FromDateTime (dateTime)), xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>{1}", ANamespace, FromDateTime (dateTime)), - xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, dateTime, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaNamespace, - FromDateTime (dateTime)), xsw.Content, "#7"); - } - - [Test] - public void TestWriteTypedPrimitive_DateTime_XsiType () - { - DateTime dateTime = new DateTime (1973, 08, 13); - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, - FromDateTime (dateTime)), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, - FromDateTime (dateTime)), xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // enum name is output instead of integral value - public void TestWriteTypedPrimitive_Enum () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, EnumDefaultValue.e1, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "1", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e2, false); - Assert.AreEqual ("2", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e3, false); - Assert.AreEqual ("3", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, EnumDefaultValue.e1, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "1", XmlSchemaNamespace), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, EnumDefaultValue.e2, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "2", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, EnumDefaultValue.e3, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>3", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, EnumDefaultValue.e2, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "2", XmlSchemaNamespace), - xsw.Content, "#7"); - } - - [Test] - [Category ("NotWorking")] // InvalidOperationException is thrown - public void TestWriteTypedPrimitive_Enum_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e1, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "1", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e2, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "2", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_Guid () - { - Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223"); - string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223"; - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", ANamespace, expectedGuid), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", expectedGuid), xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{0}", expectedGuid), xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaNamespace, expectedGuid), - xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", XmlSchemaInstanceNamespace, expectedGuid), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>{1}", ANamespace, expectedGuid), - xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, guid, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{1}", WsdlTypesNamespace, - expectedGuid), xsw.Content, "#7"); - } - - [Test] - [Category ("NotWorking")] // namespace should be wsdl types ns - public void TestWriteTypedPrimitive_Guid_XsiType () - { - Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223"); - string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223"; - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, guid, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "{2}", - WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_Int () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 76665, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "76665", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -5656, false); - Assert.AreEqual ("-5656", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, 0, false); - Assert.AreEqual ("0", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 534, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "534", XmlSchemaNamespace), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, -6756, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "-6756", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, 434, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>434", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, 434, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "434", XmlSchemaNamespace), - xsw.Content, "#7"); - } - - [Test] - public void TestWriteTypedPrimitive_Int_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -6756, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "-6756", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, 434, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "434", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #8 fails - public void TestWriteTypedPrimitive_String () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", false); - Assert.AreEqual ("hello", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", false); - Assert.AreEqual ("hello", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", XmlSchemaNamespace), - xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'><\"te'st\">", ANamespace), - xsw.Content, "#7"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", XmlSchemaNamespace), - xsw.Content, "#8"); - } - - [Test] - public void TestWriteTypedPrimitive_String_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT - public void TestWriteTypedPrimitive_String_XsiType_Namespace () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaInstanceNamespace, XmlSchemaNamespace), - xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns:q4='{0}' d1p1:type='q4:string' xmlns:d1p1='{1}' xmlns='{2}'><\"te'st\">", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "hello", - XmlSchemaInstanceNamespace, XmlSchemaNamespace), - xsw.Content, "#6"); - } - - [Test] - [Category ("NotWorking")] // #7 fails - public void TestWriteTypedPrimitive_UnsignedByte () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, (byte) 5, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "5", ANamespace), xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 125, false); - Assert.AreEqual ("125", xsw.Content, "#2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 0, false); - Assert.AreEqual ("0", xsw.Content, "#3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, (byte) 255, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "255", XmlSchemaNamespace), xsw.Content, "#4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, (byte) 128, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "128", XmlSchemaInstanceNamespace), - xsw.Content, "#5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, (byte) 1, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>1", ANamespace), xsw.Content, "#6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, (byte) 99, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "99", - XmlSchemaNamespace), xsw.Content, "#7"); - } - - [Test] - public void TestWriteTypedPrimitive_UnsignedByte_XsiType () - { - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 5, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "5", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 99, true); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "99", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - xsw.Content, "#2"); - } - - [Test] - [Category ("NotWorking")] // #A7 fails - public void TestWriteTypedPrimitive_XmlQualifiedName () - { - XmlQualifiedName qname = new XmlQualifiedName ("something", AnotherNamespace); - - XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q1:something", - AnotherNamespace, ANamespace), xsw.Content, "#A1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q2:something", - AnotherNamespace), xsw.Content, "#A2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q3:something", AnotherNamespace), - xsw.Content, "#A3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q4:something", AnotherNamespace, - XmlSchemaNamespace), xsw.Content, "#A4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q5:something", AnotherNamespace, - XmlSchemaInstanceNamespace), xsw.Content, "#A5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns:q6='{0}' xmlns='{1}'>q6:something", AnotherNamespace, - ANamespace), xsw.Content, "#A6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "q7:something", - AnotherNamespace, XmlSchemaNamespace), xsw.Content, "#A7"); - - xsw.Reset (); - - qname = new XmlQualifiedName ("else"); - - xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "else", ANamespace), xsw.Content, "#B1"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false); - Assert.AreEqual ("else", xsw.Content, "#B2"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false); - Assert.AreEqual ("else", xsw.Content, "#B3"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "else", XmlSchemaNamespace), xsw.Content, "#B4"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "else", XmlSchemaInstanceNamespace), - xsw.Content, "#B5"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "< xmlns='{0}'>else", ANamespace), xsw.Content, "#B6"); - - xsw.Reset (); - - xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "else", XmlSchemaNamespace), - xsw.Content, "#B7"); - } - - [Test] - [ExpectedException (typeof (NullReferenceException))] - public void TestWriteTypedPrimitive_Null_Value() - { - WriteTypedPrimitive("x", ANamespace, null, false); - } - - [Test] - [Category ("NotWorking")] // InvalidOperatinException is not thrown - [ExpectedException (typeof (InvalidOperationException))] - public void TestWriteTypedPrimitive_NonPrimitive () - { - // The type System.Version was not expected. Use the XmlInclude - // or SoapInclude attribute to specify types that are not known - // statically. - WriteTypedPrimitive ("x", ANamespace, new Version (), false); - } - - [Test] - public void TestWriteValue() - { - WriteValue(""); - Assert.AreEqual ("", Content); - - Reset(); - WriteValue("hello"); - Assert.AreEqual ("hello", Content); - - Reset(); - string v = null; - WriteValue(v); - Assert.AreEqual ("", Content); - - Reset(); - WriteValue(new byte[] {13, 8, 99}); - Assert.AreEqual ("DQhj", Content); - } - - public void TestWriteXmlAttribute() - { - // FIXME - // XmlNode related - } - - [Test] - public void TestWriteXsiType() - { - WriteStartElement("x"); - WriteXsiType("pref", null); - WriteEndElement(); - Assert.AreEqual (string.Format(CultureInfo.InvariantCulture, - "", XmlSchemaInstanceNamespace), - Content, "#1"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType ("int", XmlSchemaNamespace); - WriteEndElement (); - Assert.AreEqual (string.Format(CultureInfo.InvariantCulture, - "", - XmlSchemaNamespace, XmlSchemaInstanceNamespace), - Content, "#2"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType ("int", ANamespace); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - ANamespace, XmlSchemaInstanceNamespace), Content, "#3"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType ("int", XmlSchemaInstanceNamespace); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaInstanceNamespace), Content, "#4"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType ("int", string.Empty); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", XmlSchemaInstanceNamespace), - Content, "#5"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType (string.Empty, null); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", XmlSchemaInstanceNamespace), - Content, "#6"); - - Reset (); - - WriteStartElement ("x"); - WriteXsiType (null, null); - WriteEndElement (); - Assert.AreEqual ("", Content, "#7"); - } - - [Test] - [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT - public void TestWriteXsiType_Namespace () - { - WriteStartElement ("x", ANamespace); - WriteXsiType ("pref", null); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaInstanceNamespace, ANamespace), Content, "#1"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType ("int", XmlSchemaNamespace); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), - Content, "#2"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType ("int", ANamespace); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - ANamespace, XmlSchemaInstanceNamespace, ANamespace), - Content, "#3"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType ("int", XmlSchemaInstanceNamespace); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaInstanceNamespace, ANamespace), Content, "#4"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType ("int", string.Empty); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaInstanceNamespace, ANamespace), Content, "#5"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType (string.Empty, null); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", - XmlSchemaInstanceNamespace, ANamespace), Content, "#6"); - - Reset (); - - WriteStartElement ("x", ANamespace); - WriteXsiType (null, null); - WriteEndElement (); - Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, - "", ANamespace), Content, "#7"); - } - - -#if NET_2_0 - [Test] - public void TestFromEnum_Null_TypeName () - { - string[] values = { "one", "two", "three", "four" }; - long[] ids = { 1, 2, 3, 4 }; - - Assert.AreEqual ("one", FromEnum (1, values, ids, (string) null)); - } - - [Test] - public void TestCreateInvalidEnumValueException () - { - Exception ex = CreateInvalidEnumValueException("AnInvalidValue", "SomeType"); - Assert.IsNotNull (ex, "#1"); - Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2"); - Assert.IsNotNull (ex.Message, "#3"); - Assert.IsTrue (ex.Message.IndexOf ("AnInvalidValue") != -1, "#4"); - Assert.IsTrue (ex.Message.IndexOf ("SomeType") != -1, "#5"); - } -#endif - } -} +// +// MonoTests.System.Xml.Serialization.XmlSerializationWriterTests +// +// Author: Erik LeBel +// +// (C) Erik LeBel 2003 +// +// FIXME add tests for callbacks +// FIXME add tests for writes that generate namespaces +// FIXME add test that write XmlNode objects +// + +using System; +using System.Globalization; +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +using NUnit.Framework; + +using MonoTests.System.Xml.TestClasses; + +namespace MonoTests.System.XmlSerialization +{ + // base, common implementation of XmlSerializationWriter test harness. + // the reason for this is that all auto generated namespace prefixes + // of the form q# are modified by any Write* that defines a new namespace. + // The result of this is that even though we redefine the string results + // to exclude previous tests, the q#s will change depending on number of + // namespace declarations were made prior to the perticual test. This + // means that if the [Test] methods are called out of sequence, they + // all start to fail. For this reason, tests that define and verify + // temporary namespaces should be stored in a seperate class which protects + // itself from accidental pre-definitions. + public class XmlSerializarionWriterTester : XmlSerializationWriter + { + // appease the compiler + protected override void InitCallbacks () + { + } + + StringWriter sw; + XmlTextWriter writer; + + [SetUp] + public void Reset() + { + sw = new StringWriter (); + writer = new XmlTextWriter (sw); + writer.QuoteChar = '\''; + writer.Formatting = Formatting.None; + Writer = writer; + } + + public string Content + { + get + { + string val = sw.GetStringBuilder().ToString(); + return val; + } + } + + public void ExecuteWritePotentiallyReferencingElement (string name, string ns, object o, Type ambientType, bool suppressReference, bool isNullable) + { + WritePotentiallyReferencingElement (name, ns, o, ambientType, suppressReference, isNullable); + } + + public void ExecuteWriteTypedPrimitive (string name, string ns, object o, bool xsiType) + { + WriteTypedPrimitive (name, ns, o, xsiType); + } + } + + // this class tests the methods of the XmlSerializationWriter that + // can be executed out of order. + [TestFixture] + public class XmlSerializationWriterSimpleTests : XmlSerializarionWriterTester + { + const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema"; + const string XmlSchemaInstanceNamespace = "http://www.w3.org/2001/XMLSchema-instance"; + const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/"; + const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/"; + const string ANamespace = "some:urn"; + const string AnotherNamespace = "another:urn"; + + // These TestFrom* methods indirectly test the functionality of XmlCustomFormatter + + [Test] + public void TestFromByteArrayBase64() + { + // FIXME + // This should work according to Mono's API, but .NET's FromByteArrayBase64 + // returns a byte array. + // + //string val = this.FromByteArrayBase64(new byte [] {143, 144, 1, 0}); + //Assert.AreEqual (FromByteArrayBase64(null), ""); + + //val = FromByteArrayBase64(null); + //try/catch or AssertEruals? + } + + [Test] + public void TestFromByteArrayHex() + { + byte [] vals = {143, 144, 1, 0}; + Assert.AreEqual ("8F900100", FromByteArrayHex(vals)); + Assert.IsNull (FromByteArrayHex (null)); + } + + [Test] + public void TestFromChar() + { + Assert.AreEqual ("97", FromChar ('a')); + Assert.AreEqual ("0", FromChar ('\0')); + Assert.AreEqual ("10", FromChar ('\n')); + Assert.AreEqual ("65281", FromChar ('\uFF01')); + } + + [Test] + public void TestFromDate() + { + DateTime d = new DateTime(); + Assert.AreEqual ("0001-01-01", FromDate (d)); + } + + [Test] + public void TestFromDateTime() + { + DateTime d = new DateTime(); + Assert.AreEqual ("0001-01-01T00:00:00.0000000", FromDateTime (d).Substring (0, 27)); + } + + [Test] // bug #77500 + public void TestFromEnum() + { + long[] ids = {1, 2, 3, 4}; + string[] values = {"one", "two", "three"}; + + Assert.AreEqual ("one", FromEnum (1, values, ids), "#1"); + Assert.AreEqual (string.Empty, FromEnum (0, values, ids), "#2"); + Assert.AreEqual ("one two", FromEnum (3, values, ids), "#3"); + + try { + string dummy = FromEnum(4, values, ids); + Assert.Fail("#4"); + } catch (IndexOutOfRangeException) { + } + + string[] correctValues = {"one", "two", "three", "four"}; + Assert.AreEqual ("four", FromEnum (4, correctValues, ids), "#5"); + Assert.AreEqual ("one four", FromEnum (5, correctValues, ids), "#6"); + Assert.AreEqual ("two four", FromEnum (6, correctValues, ids), "#7"); + Assert.AreEqual ("one two three four", FromEnum (7, correctValues, ids), "#8"); + + string[] flagValues = {"one", "two", "four", "eight"}; + long[] flagIDs = {1, 2, 4, 8}; + Assert.AreEqual (string.Empty, FromEnum (0, flagValues, flagIDs), "#9"); + Assert.AreEqual ("two", FromEnum (2, flagValues, flagIDs), "#10"); + Assert.AreEqual ("four", FromEnum (4, flagValues, flagIDs), "#1"); + Assert.AreEqual ("one four", FromEnum (5, flagValues, flagIDs), "#12"); + Assert.AreEqual ("two four", FromEnum (6, flagValues, flagIDs), "#13"); + Assert.AreEqual ("one two four", FromEnum (7, flagValues, flagIDs), "#14"); + Assert.AreEqual ("eight", FromEnum (8, flagValues, flagIDs), "#15"); + Assert.AreEqual ("one four eight", FromEnum (13, flagValues, flagIDs), "#16"); + + string[] unorderedValues = {"one", "four", "two", "zero"}; + long[] unorderedIDs = {1, 4, 2, 0}; + + Assert.AreEqual (string.Empty, FromEnum (0, unorderedValues, unorderedIDs), "#17"); + Assert.AreEqual ("two", FromEnum (2, unorderedValues, unorderedIDs), "#18"); + Assert.AreEqual ("four", FromEnum (4, unorderedValues, unorderedIDs), "#19"); + Assert.AreEqual ("one four", FromEnum (5, unorderedValues, unorderedIDs), "#20"); + Assert.AreEqual ("four two", FromEnum (6, unorderedValues, unorderedIDs), "#21"); + Assert.AreEqual ("one four two", FromEnum (7, unorderedValues, unorderedIDs), "#22"); + + string[] zeroValues = {"zero", "ten"}; + long[] zeroIDs = {0, 10}; + + Assert.AreEqual ("zero", FromEnum (0, zeroValues, zeroIDs), "#9"); + Assert.AreEqual ("ten", FromEnum (10, zeroValues, zeroIDs), "#9"); + + string[] reverseZeroValues = {"", "zero"}; + long[] reverseZeroIDs = {4, 0}; + Assert.AreEqual (string.Empty, FromEnum (0, reverseZeroValues, reverseZeroIDs), "#9"); + Assert.AreEqual ("zero", FromEnum (4, reverseZeroValues, reverseZeroIDs), "#9"); + + string[] emptyValues = { "zero" }; + long[] emptyIDs = {0}; + Assert.AreEqual ("zero", FromEnum (0, emptyValues, emptyIDs), "#9"); + } + + [Test] + public void TestFromEnum_InvalidValue () + { + long[] ids = {1, 2, 3, 4}; + string[] values = {"one", "two", "three", "four"}; + +#if NET_2_0 + try { + FromEnum (8, values, ids); + Assert.Fail ("#A1"); + } catch (InvalidOperationException ex) { + Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2"); + Assert.IsNotNull (ex.Message, "#A3"); + Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#A4"); + Assert.IsNull (ex.InnerException, "#A5"); + } +#else + Assert.AreEqual ("8", FromEnum (8, values, ids), "#A6"); +#endif + +#if NET_2_0 + try { + FromEnum (8, values, ids, "Some.Type.Name"); + Assert.Fail ("#B1"); + } catch (InvalidOperationException ex) { + Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2"); + Assert.IsNotNull (ex.Message, "#B3"); + Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#B4"); + Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#B5"); + Assert.IsNull (ex.InnerException, "#B6"); + } +#endif + } + + [Test] + [ExpectedException (typeof (NullReferenceException))] + public void TestFromEnum_Null_Values () + { + long[] ids = { 1, 2, 3, 4 }; + string[] values = { "one", "two", "three", "four" }; + + FromEnum (1, (string[]) null, ids); + } + + [Test] + [ExpectedException (typeof (NullReferenceException))] + public void TestFromEnum_Null_IDs () + { + string[] values = { "one", "two", "three", "four" }; + + FromEnum (1, values, (long[]) null); + } + + [Test] + public void TestFromTime() + { + DateTime d = new DateTime(); + // Don't include time zone. + Assert.AreEqual ("00:00:00.0000000", FromTime (d).Substring (0, 16)); + } + + [Test] + public void TestFromXmlName() + { + Assert.AreEqual ("Hello", FromXmlName ("Hello")); + Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlName ("go dogs go")); + Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlName ("what's up")); + Assert.AreEqual ("_x0031_23go", FromXmlName ("123go")); + Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlName ("Hello what's.up")); + } + + [Test] + public void TestFromXmlNCName() + { + Assert.AreEqual ("Hello", FromXmlNCName ("Hello")); + Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNCName ("go dogs go")); + Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNCName ("what's up")); + Assert.AreEqual ("_x0031_23go", FromXmlNCName ("123go")); + Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNCName ("Hello what's.up")); + } + + [Test] + public void TestFromXmlNmToken() + { + Assert.AreEqual ("Hello", FromXmlNmToken ("Hello")); + Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNmToken ("go dogs go")); + Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNmToken ("what's up")); + Assert.AreEqual ("123go", FromXmlNmToken ("123go")); + Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNmToken ("Hello what's.up")); + } + + [Test] + public void TestFromXmlNmTokens() + { + Assert.AreEqual ("Hello go dogs_go 123go what_x0027_s.up", FromXmlNmTokens ("Hello go dogs_go 123go what's.up")); + } + + [Test] + public void TestWriteAttribute() + { + WriteStartElement("x"); + WriteAttribute("a", "b"); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteAttribute("a", new byte[] {1, 2, 3}); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteAttribute("a", "", Content); + + Reset(); + WriteStartElement("x"); + string typedPlaceholder = null; + WriteAttribute("a", typedPlaceholder); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteAttribute("a", "\""); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteAttribute("a", "b\nc"); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteAttribute("a", ANamespace, "b"); + WriteEndElement(); + Assert.AreEqual ("", Content); + } + + [Test] + public void TestWriteElementEncoded() + { + // FIXME + // XmlNode related + } + + [Test] + public void TestWriteElementLiteral() + { + // FIXME + // XmlNode related + } + + [Test] + public void TestWriteElementString() + { + WriteElementString("x", "a"); + Assert.AreEqual ("a", Content); + + Reset(); + WriteElementString("x", "<a", Content); + } + + [Test] + public void TestWriteElementStringRaw() + { + byte [] placeHolderArray = null; + WriteElementStringRaw("x", placeHolderArray); + Assert.AreEqual ("", Content); + + Reset(); + WriteElementStringRaw("x", new byte[] {0, 2, 4}); + Assert.AreEqual ("AAIE", Content); + + Reset(); + WriteElementStringRaw("x", new byte[] {}); + Assert.AreEqual ("", Content); + + // Note to reader, the output is not valid xml + Reset(); + WriteElementStringRaw("x", "a > 13 && a < 19"); + Assert.AreEqual ("a > 13 && a < 19", Content); + } + + [Test] + public void TestWriteEmptyTag() + { + WriteEmptyTag("x"); + Assert.AreEqual ("", Content); + } + + [Test] + public void TestWriteNamespaceDeclarations() + { + XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); + + WriteStartElement("x"); + WriteNamespaceDeclarations(ns); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + ns.Add("mypref", ANamespace); + WriteStartElement("x"); + WriteNamespaceDeclarations(ns); + WriteEndElement(); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + + Reset(); + ns.Add("ns2", "another:urn"); + WriteStartElement("x"); + WriteNamespaceDeclarations(ns); + WriteEndElement(); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + + Reset(); + ns.Add("ns3", "ya:urn"); + WriteStartElement("x"); + WriteNamespaceDeclarations(ns); + WriteEndElement(); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + } + + [Test] + public void TestWriteNullableStringLiteral() + { + WriteNullableStringLiteral("x", null, null); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + + Reset(); + WriteNullableStringLiteral("x", null, ""); + Assert.AreEqual ("", Content); + + Reset(); + WriteNullableStringLiteral("x", null, "aa<b\'c", Content); + + Reset(); + WriteNullableStringLiteral("x", ANamespace, "b"); + Assert.AreEqual ("b", Content); + } + + [Test] + public void TestWriteNullableStringLiteralRaw() + { + WriteNullableStringLiteralRaw("x", null, new byte[] {1, 2, 244}); + Assert.AreEqual ("AQL0", Content); + } + + [Test] + public void TestWriteNullTagEncoded() + { + WriteNullTagEncoded("x"); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + } + + [Test] + public void TestWriteNullTagLiteral() + { + WriteNullTagLiteral("x"); + Assert.AreEqual (XmlSerializerTests.Infoset(""), XmlSerializerTests.Infoset(Content)); + } + + [Test] + [Category ("NotWorking")] + public void TestWritePotentiallyReferencingElement () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, EnumDefaultValue.e1, typeof (EnumDefaultValue), true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "1", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, (int) 1, typeof (EnumDefaultValue), true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "1", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", typeof (string), true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "something", ANamespace), xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", null, true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "something", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, new string[] { "A", "B" }, typeof (string[]), true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "" + + "A" + + "B" + + "", XmlSchemaNamespace, SoapEncodingNamespace), xsw.Content, "#5"); + } + + [Test] + public void TestWriteSerializable() + { + // FIXME + //Assert.AreEqual (, ""); + } + + [Test] + public void TestWriteStartDocument() + { + Assert.AreEqual ("", Content); + + WriteStartDocument(); + Assert.AreEqual ("", Content); + } + + [Test] + public void TestWriteStartElement() + { + WriteStartElement("x"); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteValue("a"); + WriteEndElement(); + Assert.AreEqual ("a", Content); + + Reset(); + WriteStartElement("x"); + WriteStartElement("y", "z"); + WriteEndElement(); + WriteEndElement(); + Assert.AreEqual ("", Content); + + Reset(); + WriteStartElement("x"); + WriteStartElement("y", "z", true); + WriteEndElement(); + WriteEndElement(); + Assert.AreEqual ("", Content); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_Base64Binary () + { + byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 }; + string expected = "/xQKBQAH"; + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", ANamespace, expected), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", expected), xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", expected), xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaNamespace, expected), + xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaInstanceNamespace, expected), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>{1}", ANamespace, expected), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, byteArray, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", + XmlSchemaNamespace, expected), xsw.Content, "#7"); + } + + [Test] + public void TestWriteTypedPrimitive_Base64Binary_XsiType () + { + byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 }; + string expected = "/xQKBQAH"; + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_Boolean () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "true", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, false, false); + Assert.AreEqual ("false", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, true, false); + Assert.AreEqual ("true", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, false, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "false", XmlSchemaNamespace), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "true", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, false, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>false", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, true, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "true", XmlSchemaNamespace), + xsw.Content, "#7"); + } + + [Test] + public void TestWriteTypedPrimitive_Boolean_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, true, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "true", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, false, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "false", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_Char () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 'c', false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "99", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'a', false); + Assert.AreEqual ("97", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, 'b', false); + Assert.AreEqual ("98", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 'd', false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "100", XmlSchemaNamespace), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, 'e', false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "101", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, ' ', false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>32", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, '0', false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "48", WsdlTypesNamespace), + xsw.Content, "#7"); + } + + [Test] + [Category ("NotWorking")] // namespace should be wsdl types ns + public void TestWriteTypedPrimitive_Char_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'c', true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "99", + WsdlTypesNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, 'a', true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "97", + WsdlTypesNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_DateTime () + { + DateTime dateTime = new DateTime (1973, 08, 13); + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", ANamespace, FromDateTime (dateTime)), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", FromDateTime (dateTime)), xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", FromDateTime (dateTime)), xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaNamespace, + FromDateTime (dateTime)), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaInstanceNamespace, + FromDateTime (dateTime)), xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>{1}", ANamespace, FromDateTime (dateTime)), + xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, dateTime, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaNamespace, + FromDateTime (dateTime)), xsw.Content, "#7"); + } + + [Test] + public void TestWriteTypedPrimitive_DateTime_XsiType () + { + DateTime dateTime = new DateTime (1973, 08, 13); + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, + FromDateTime (dateTime)), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, + FromDateTime (dateTime)), xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // enum name is output instead of integral value + public void TestWriteTypedPrimitive_Enum () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, EnumDefaultValue.e1, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "1", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e2, false); + Assert.AreEqual ("2", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e3, false); + Assert.AreEqual ("3", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, EnumDefaultValue.e1, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "1", XmlSchemaNamespace), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, EnumDefaultValue.e2, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "2", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, EnumDefaultValue.e3, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>3", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, EnumDefaultValue.e2, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "2", XmlSchemaNamespace), + xsw.Content, "#7"); + } + + [Test] + [Category ("NotWorking")] // InvalidOperationException is thrown + public void TestWriteTypedPrimitive_Enum_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e1, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "1", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e2, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "2", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_Guid () + { + Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223"); + string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223"; + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", ANamespace, expectedGuid), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", expectedGuid), xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{0}", expectedGuid), xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaNamespace, expectedGuid), + xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", XmlSchemaInstanceNamespace, expectedGuid), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>{1}", ANamespace, expectedGuid), + xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, guid, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{1}", WsdlTypesNamespace, + expectedGuid), xsw.Content, "#7"); + } + + [Test] + [Category ("NotWorking")] // namespace should be wsdl types ns + public void TestWriteTypedPrimitive_Guid_XsiType () + { + Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223"); + string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223"; + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, guid, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "{2}", + WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_Int () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 76665, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "76665", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -5656, false); + Assert.AreEqual ("-5656", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, 0, false); + Assert.AreEqual ("0", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 534, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "534", XmlSchemaNamespace), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, -6756, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "-6756", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, 434, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>434", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, 434, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "434", XmlSchemaNamespace), + xsw.Content, "#7"); + } + + [Test] + public void TestWriteTypedPrimitive_Int_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -6756, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "-6756", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, 434, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "434", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #8 fails + public void TestWriteTypedPrimitive_String () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", false); + Assert.AreEqual ("hello", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", false); + Assert.AreEqual ("hello", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", XmlSchemaNamespace), + xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'><\"te'st\">", ANamespace), + xsw.Content, "#7"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", XmlSchemaNamespace), + xsw.Content, "#8"); + } + + [Test] + public void TestWriteTypedPrimitive_String_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT + public void TestWriteTypedPrimitive_String_XsiType_Namespace () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaInstanceNamespace, XmlSchemaNamespace), + xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns:q4='{0}' d1p1:type='q4:string' xmlns:d1p1='{1}' xmlns='{2}'><\"te'st\">", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "hello", + XmlSchemaInstanceNamespace, XmlSchemaNamespace), + xsw.Content, "#6"); + } + + [Test] + [Category ("NotWorking")] // #7 fails + public void TestWriteTypedPrimitive_UnsignedByte () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, (byte) 5, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "5", ANamespace), xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 125, false); + Assert.AreEqual ("125", xsw.Content, "#2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 0, false); + Assert.AreEqual ("0", xsw.Content, "#3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, (byte) 255, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "255", XmlSchemaNamespace), xsw.Content, "#4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, (byte) 128, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "128", XmlSchemaInstanceNamespace), + xsw.Content, "#5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, (byte) 1, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>1", ANamespace), xsw.Content, "#6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, (byte) 99, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "99", + XmlSchemaNamespace), xsw.Content, "#7"); + } + + [Test] + public void TestWriteTypedPrimitive_UnsignedByte_XsiType () + { + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 5, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "5", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 99, true); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "99", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + xsw.Content, "#2"); + } + + [Test] + [Category ("NotWorking")] // #A7 fails + public void TestWriteTypedPrimitive_XmlQualifiedName () + { + XmlQualifiedName qname = new XmlQualifiedName ("something", AnotherNamespace); + + XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester (); + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q1:something", + AnotherNamespace, ANamespace), xsw.Content, "#A1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q2:something", + AnotherNamespace), xsw.Content, "#A2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q3:something", AnotherNamespace), + xsw.Content, "#A3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q4:something", AnotherNamespace, + XmlSchemaNamespace), xsw.Content, "#A4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q5:something", AnotherNamespace, + XmlSchemaInstanceNamespace), xsw.Content, "#A5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns:q6='{0}' xmlns='{1}'>q6:something", AnotherNamespace, + ANamespace), xsw.Content, "#A6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "q7:something", + AnotherNamespace, XmlSchemaNamespace), xsw.Content, "#A7"); + + xsw.Reset (); + + qname = new XmlQualifiedName ("else"); + + xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "else", ANamespace), xsw.Content, "#B1"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false); + Assert.AreEqual ("else", xsw.Content, "#B2"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false); + Assert.AreEqual ("else", xsw.Content, "#B3"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "else", XmlSchemaNamespace), xsw.Content, "#B4"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "else", XmlSchemaInstanceNamespace), + xsw.Content, "#B5"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "< xmlns='{0}'>else", ANamespace), xsw.Content, "#B6"); + + xsw.Reset (); + + xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "else", XmlSchemaNamespace), + xsw.Content, "#B7"); + } + + [Test] + [ExpectedException (typeof (NullReferenceException))] + public void TestWriteTypedPrimitive_Null_Value() + { + WriteTypedPrimitive("x", ANamespace, null, false); + } + + [Test] + [Category ("NotWorking")] // InvalidOperatinException is not thrown + [ExpectedException (typeof (InvalidOperationException))] + public void TestWriteTypedPrimitive_NonPrimitive () + { + // The type System.Version was not expected. Use the XmlInclude + // or SoapInclude attribute to specify types that are not known + // statically. + WriteTypedPrimitive ("x", ANamespace, new Version (), false); + } + + [Test] + public void TestWriteValue() + { + WriteValue(""); + Assert.AreEqual ("", Content); + + Reset(); + WriteValue("hello"); + Assert.AreEqual ("hello", Content); + + Reset(); + string v = null; + WriteValue(v); + Assert.AreEqual ("", Content); + + Reset(); + WriteValue(new byte[] {13, 8, 99}); + Assert.AreEqual ("DQhj", Content); + } + + public void TestWriteXmlAttribute() + { + // FIXME + // XmlNode related + } + + [Test] + public void TestWriteXsiType() + { + WriteStartElement("x"); + WriteXsiType("pref", null); + WriteEndElement(); + Assert.AreEqual (string.Format(CultureInfo.InvariantCulture, + "", XmlSchemaInstanceNamespace), + Content, "#1"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType ("int", XmlSchemaNamespace); + WriteEndElement (); + Assert.AreEqual (string.Format(CultureInfo.InvariantCulture, + "", + XmlSchemaNamespace, XmlSchemaInstanceNamespace), + Content, "#2"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType ("int", ANamespace); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + ANamespace, XmlSchemaInstanceNamespace), Content, "#3"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType ("int", XmlSchemaInstanceNamespace); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaInstanceNamespace), Content, "#4"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType ("int", string.Empty); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", XmlSchemaInstanceNamespace), + Content, "#5"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType (string.Empty, null); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", XmlSchemaInstanceNamespace), + Content, "#6"); + + Reset (); + + WriteStartElement ("x"); + WriteXsiType (null, null); + WriteEndElement (); + Assert.AreEqual ("", Content, "#7"); + } + + [Test] + [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT + public void TestWriteXsiType_Namespace () + { + WriteStartElement ("x", ANamespace); + WriteXsiType ("pref", null); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaInstanceNamespace, ANamespace), Content, "#1"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType ("int", XmlSchemaNamespace); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace), + Content, "#2"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType ("int", ANamespace); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + ANamespace, XmlSchemaInstanceNamespace, ANamespace), + Content, "#3"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType ("int", XmlSchemaInstanceNamespace); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaInstanceNamespace, ANamespace), Content, "#4"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType ("int", string.Empty); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaInstanceNamespace, ANamespace), Content, "#5"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType (string.Empty, null); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", + XmlSchemaInstanceNamespace, ANamespace), Content, "#6"); + + Reset (); + + WriteStartElement ("x", ANamespace); + WriteXsiType (null, null); + WriteEndElement (); + Assert.AreEqual (string.Format (CultureInfo.InvariantCulture, + "", ANamespace), Content, "#7"); + } + + +#if NET_2_0 + [Test] + public void TestFromEnum_Null_TypeName () + { + string[] values = { "one", "two", "three", "four" }; + long[] ids = { 1, 2, 3, 4 }; + + Assert.AreEqual ("one", FromEnum (1, values, ids, (string) null)); + } + + [Test] + public void TestCreateInvalidEnumValueException () + { + Exception ex = CreateInvalidEnumValueException("AnInvalidValue", "SomeType"); + Assert.IsNotNull (ex, "#1"); + Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2"); + Assert.IsNotNull (ex.Message, "#3"); + Assert.IsTrue (ex.Message.IndexOf ("AnInvalidValue") != -1, "#4"); + Assert.IsTrue (ex.Message.IndexOf ("SomeType") != -1, "#5"); + } +#endif + } +}