XmlSerializationReaderTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // MonoTests.System.Xml.Serialization.XmlSerializationReaderTests
  3. //
  4. // Author:
  5. // Gert Driesen ([email protected])
  6. //
  7. // (C) 2006 Novell
  8. //
  9. using System;
  10. using System.Collections;
  11. using System.Xml.Serialization;
  12. using NUnit.Framework;
  13. using MonoTests.System.Xml.TestClasses;
  14. namespace MonoTests.System.XmlSerialization
  15. {
  16. [TestFixture]
  17. public class XmlSerializationReaderTests : XmlSerializarionReaderTester
  18. {
  19. [Test]
  20. public void TestToEnum ()
  21. {
  22. Hashtable values = new Hashtable ();
  23. values.Add ("One", 1L);
  24. values.Add ("Two", 2L);
  25. values.Add ("Four", 4L);
  26. Assert.AreEqual (1, ToEnum ("One", values, "Some.Type.Name"), "#A1");
  27. Assert.AreEqual (2, ToEnum (" Two ", values, "Some.Type.Name"), "#A2");
  28. Assert.AreEqual (4, ToEnum ("Four", values, "Some.Type.Name"), "#A3");
  29. Assert.AreEqual (5, ToEnum ("One Four", values, "Some.Type.Name"), "#A4");
  30. Assert.AreEqual (7, ToEnum ("One Two Four", values, "Some.Type.Name"), "#A5");
  31. Assert.AreEqual (0, ToEnum ("", values, "Some.Type.Name"), "#A6");
  32. Assert.AreEqual (0, ToEnum (" ", values, "Some.Type.Name"), "#A7");
  33. Assert.AreEqual (2, ToEnum ("Two Two", values, "Some.Type.Name"), "#A8");
  34. values.Add ("", 24L);
  35. Assert.AreEqual (24, ToEnum ("", values, "Some.Type.Name"), "#B1");
  36. Assert.AreEqual (24, ToEnum (" ", values, "Some.Type.Name"), "#B2");
  37. }
  38. [Test]
  39. public void TestToEnum_InvalidValue ()
  40. {
  41. try {
  42. ToEnum ("SomeValue", new Hashtable (), "Some.Type.Name");
  43. Assert.Fail ("#A1");
  44. } catch (InvalidOperationException ex) {
  45. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  46. Assert.IsNotNull (ex.Message, "#A3");
  47. Assert.IsTrue (ex.Message.IndexOf ("'SomeValue'") != -1, "#A4");
  48. Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#A5");
  49. Assert.IsNull (ex.InnerException, "#A6");
  50. }
  51. Hashtable values = new Hashtable ();
  52. values.Add ("One", 1L);
  53. values.Add ("Two", 2L);
  54. values.Add ("Four", 4L);
  55. try {
  56. ToEnum ("one", values, "Some.Type.Name");
  57. Assert.Fail ("#B1");
  58. } catch (InvalidOperationException ex) {
  59. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
  60. Assert.IsNotNull (ex.Message, "#B3");
  61. Assert.IsTrue (ex.Message.IndexOf ("'one'") != -1, "#B4");
  62. Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#B5");
  63. Assert.IsNull (ex.InnerException, "#B6");
  64. }
  65. values.Clear ();
  66. values.Add ("One", FlagEnum.e1);
  67. try {
  68. ToEnum ("One", values, "Some.Type.Name");
  69. Assert.Fail ("#C1");
  70. } catch (InvalidCastException ex) {
  71. }
  72. values.Clear ();
  73. values.Add ("One", 1);
  74. try {
  75. ToEnum ("One", values, "Some.Type.Name");
  76. Assert.Fail ("#D1");
  77. } catch (InvalidCastException ex) {
  78. }
  79. values.Clear ();
  80. values.Add ("One", null);
  81. try {
  82. ToEnum ("One", values, "Some.Type.Name");
  83. Assert.Fail ("#E1");
  84. } catch (InvalidOperationException ex) {
  85. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
  86. Assert.IsNotNull (ex.Message, "#E3");
  87. Assert.IsTrue (ex.Message.IndexOf ("'One'") != -1, "#E4");
  88. Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#E5");
  89. Assert.IsNull (ex.InnerException, "#E6");
  90. }
  91. }
  92. [Test]
  93. [ExpectedException (typeof (NullReferenceException))]
  94. public void TestToEnum_Null_Value ()
  95. {
  96. ToEnum ((string) null, new Hashtable (), "DoesNotMatter");
  97. }
  98. [Test]
  99. [ExpectedException (typeof (NullReferenceException))]
  100. public void TestToEnum_Null_Values ()
  101. {
  102. ToEnum ("", (Hashtable) null, "DoesNotMatter");
  103. }
  104. }
  105. public class XmlSerializarionReaderTester : XmlSerializationReader
  106. {
  107. // appease the compiler
  108. protected override void InitCallbacks ()
  109. {
  110. }
  111. protected override void InitIDs ()
  112. {
  113. }
  114. }
  115. }