2 // MonoTests.System.Xml.Serialization.XmlSerializationReaderTests
5 // Gert Driesen (drieseng@users.sourceforge.net)
11 using System.Collections;
12 using System.Xml.Serialization;
14 using NUnit.Framework;
16 using MonoTests.System.Xml.TestClasses;
18 namespace MonoTests.System.XmlSerialization
21 public class XmlSerializationReaderTests : XmlSerializarionReaderTester
24 public void TestToEnum ()
26 Hashtable values = new Hashtable ();
27 values.Add ("One", 1L);
28 values.Add ("Two", 2L);
29 values.Add ("Four", 4L);
31 Assert.AreEqual (1, ToEnum ("One", values, "Some.Type.Name"), "#A1");
32 Assert.AreEqual (2, ToEnum (" Two ", values, "Some.Type.Name"), "#A2");
33 Assert.AreEqual (4, ToEnum ("Four", values, "Some.Type.Name"), "#A3");
34 Assert.AreEqual (5, ToEnum ("One Four", values, "Some.Type.Name"), "#A4");
35 Assert.AreEqual (7, ToEnum ("One Two Four", values, "Some.Type.Name"), "#A5");
36 Assert.AreEqual (0, ToEnum ("", values, "Some.Type.Name"), "#A6");
37 Assert.AreEqual (0, ToEnum (" ", values, "Some.Type.Name"), "#A7");
38 Assert.AreEqual (2, ToEnum ("Two Two", values, "Some.Type.Name"), "#A8");
41 Assert.AreEqual (24, ToEnum ("", values, "Some.Type.Name"), "#B1");
42 Assert.AreEqual (24, ToEnum (" ", values, "Some.Type.Name"), "#B2");
46 public void TestToEnum_InvalidValue ()
49 ToEnum ("SomeValue", new Hashtable (), "Some.Type.Name");
51 } catch (InvalidOperationException ex) {
52 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
53 Assert.IsNotNull (ex.Message, "#A3");
54 Assert.IsTrue (ex.Message.IndexOf ("'SomeValue'") != -1, "#A4");
55 Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#A5");
56 Assert.IsNull (ex.InnerException, "#A6");
59 Hashtable values = new Hashtable ();
60 values.Add ("One", 1L);
61 values.Add ("Two", 2L);
62 values.Add ("Four", 4L);
65 ToEnum ("one", values, "Some.Type.Name");
67 } catch (InvalidOperationException ex) {
68 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
69 Assert.IsNotNull (ex.Message, "#B3");
70 Assert.IsTrue (ex.Message.IndexOf ("'one'") != -1, "#B4");
71 Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#B5");
72 Assert.IsNull (ex.InnerException, "#B6");
76 values.Add ("One", FlagEnum.e1);
79 ToEnum ("One", values, "Some.Type.Name");
81 } catch (InvalidCastException ex) {
85 values.Add ("One", 1);
88 ToEnum ("One", values, "Some.Type.Name");
90 } catch (InvalidCastException ex) {
94 values.Add ("One", null);
97 ToEnum ("One", values, "Some.Type.Name");
99 } catch (InvalidOperationException ex) {
100 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
101 Assert.IsNotNull (ex.Message, "#E3");
102 Assert.IsTrue (ex.Message.IndexOf ("'One'") != -1, "#E4");
103 Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#E5");
104 Assert.IsNull (ex.InnerException, "#E6");
109 [ExpectedException (typeof (NullReferenceException))]
110 public void TestToEnum_Null_Value ()
112 ToEnum ((string) null, new Hashtable (), "DoesNotMatter");
116 [ExpectedException (typeof (NullReferenceException))]
117 public void TestToEnum_Null_Values ()
119 ToEnum ("", (Hashtable) null, "DoesNotMatter");
123 public class XmlSerializarionReaderTester : XmlSerializationReader
125 // appease the compiler
126 protected override void InitCallbacks ()
130 protected override void InitIDs ()