//
// Author:
// Gert Driesen (drieseng@users.sourceforge.net)
+// Atsushi Enomoto (atsushi@ximian.com)
//
-// (C) 2006 Novell
+// (C) 2006 Gert Driesen
+// Copyright (C) 2007 Novell, Inc.
//
using System;
using System.Collections;
+using System.IO;
using System.Xml.Serialization;
using NUnit.Framework;
{
ToEnum ("", (Hashtable) null, "DoesNotMatter");
}
+
+ [Test]
+#if ONLY_1_1
+ [Category ("NotDotNet")] // hangs on .NET 1.1
+#endif
+ public void HandleOutAttributeParameters ()
+ {
+ XmlReflectionMember m = new XmlReflectionMember ();
+ m.MemberName = "hooray";
+ m.MemberType = typeof (string);
+ m.XmlAttributes = new XmlAttributes ();
+ m.XmlAttributes.XmlAttribute = new XmlAttributeAttribute ();
+ XmlReflectionImporter imp = new XmlReflectionImporter ();
+ XmlMembersMapping map = imp.ImportMembersMapping (
+ "elem", "urn:x", new XmlReflectionMember [] {m}, true);
+ XmlSerializer ser = XmlSerializer.FromMappings (
+ new XmlMapping [] {map}) [0];
+ string xml = "<elem xmlns='urn:x' hooray='doh' />";
+ object [] arr = ser.Deserialize (new StringReader (xml))
+ as object [];
+ Assert.IsNotNull (arr, "#1");
+ Assert.AreEqual (1, arr.Length, "#2");
+ Assert.AreEqual ("doh", arr [0], "#3");
+
+ xml = "<elem xmlns='urn:x' hooray='doh'></elem>";
+ arr = ser.Deserialize (new StringReader (xml)) as object [];
+ Assert.IsNotNull (arr, "#4");
+ Assert.AreEqual (1, arr.Length, "#5");
+ Assert.AreEqual ("doh", arr [0], "#6");
+ }
+
+ [Test]
+ public void ExplicitlyOrderedMembers1 ()
+ {
+ var xs = new XmlSerializer (typeof (ExplicitlyOrderedMembersType1));
+ var result = (ExplicitlyOrderedMembersType1) xs.Deserialize(new StringReader (@"
+<root>
+ <child>Hello</child>
+ <child>World</child>
+ <child0>test</child0>
+</root>"));
+ Assert.AreEqual ("Hello", result.Child1, "#1");
+ Assert.AreEqual ("World", result.Child2, "#2");
+ Assert.AreEqual ("test", result.Child0, "#3");
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void ExplicitlyOrderedMembers2 ()
+ {
+ new XmlSerializer (typeof (ExplicitlyOrderedMembersType2));
+ }
+
+ [Test]
+ public void ExplicitlyOrderedMembers3 ()
+ {
+ var xs = new XmlSerializer (typeof (ExplicitlyOrderedMembersType3));
+ var result = (ExplicitlyOrderedMembersType3) xs.Deserialize(new StringReader (@"
+<root>
+ <child>Hello</child>
+ <child>World</child>
+ <child0>test</child0>
+</root>"));
+ Assert.AreEqual ("Hello", result.Child1, "#1");
+ Assert.AreEqual ("World", result.Child2, "#2");
+ Assert.IsNull (result.Child0, "#3"); // not "test"
+ }
+
+ [Test]
+ public void ExplicitlyOrderedMembers4 ()
+ {
+ var xs = new XmlSerializer (typeof (ExplicitlyOrderedMembersType4));
+ //Would result in an Inconsistent XML sequence error , see Bug 707434
+ var result = (ExplicitlyOrderedMembersType4) xs.Deserialize(new StringReader (@"
+<root>
+ <child>Hello</child>
+ <child>World</child>
+ <child0>test</child0>
+</root>"));
+ Assert.AreEqual ("Hello", result.Child1, "#1");
+ Assert.AreEqual ("World", result.Child2, "#2");
+ Assert.IsNull (result.Child0, "#3"); // not "test"
+ }
}
public class XmlSerializarionReaderTester : XmlSerializationReader