DataContractSerializerTest.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.ServiceModel;
  5. using MonoTests.Features;
  6. using MonoTests.Features.Contracts;
  7. using System.Runtime.Serialization;
  8. using NUnit.Framework;
  9. using System.Xml;
  10. using System.IO;
  11. namespace MonoTests.Features.Serialization
  12. {
  13. [TestFixture]
  14. public class DataContractSerializerTest : TestFixtureBase<DataContractTesterContractClient, DataContractTester, MonoTests.Features.Contracts.IDataContractTesterContract>
  15. {
  16. [Test]
  17. public void TestPrimitiveComplexType () {
  18. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass n1 = GetNewDataInstance ();
  19. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass n2 = GetNewDataInstance ();
  20. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass result = ClientProxy.Add (n1, n2);
  21. Assert.IsTrue (result.byteMember == 2);
  22. Assert.IsTrue (result.sbyteMember == 2);
  23. Assert.IsTrue (result.shortMember == 2);
  24. Assert.IsTrue (result.ushortMember == 2);
  25. Assert.IsTrue (result.intMember == 2);
  26. Assert.IsTrue (result.uintMember == 2);
  27. Assert.IsTrue (result.longMember == 2);
  28. Assert.IsTrue (result.ulongMember == 2);
  29. Assert.IsTrue (result.doubleMember == 2);
  30. Assert.IsTrue (result.floatMember == 2);
  31. }
  32. [Test]
  33. public void TestPrimitiveComplexTypeByRef () {
  34. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass n1 = GetNewDataInstance ();
  35. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass n2 = GetNewDataInstance ();
  36. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass result = null;
  37. result = ClientProxy.AddByRef (n1, n2);
  38. Assert.IsTrue (result.byteMember == 2);
  39. Assert.IsTrue (result.sbyteMember == 2);
  40. Assert.IsTrue (result.shortMember == 2);
  41. Assert.IsTrue (result.ushortMember == 2);
  42. Assert.IsTrue (result.intMember == 2);
  43. Assert.IsTrue (result.uintMember == 2);
  44. Assert.IsTrue (result.longMember == 2);
  45. Assert.IsTrue (result.ulongMember == 2);
  46. Assert.IsTrue (result.doubleMember == 2);
  47. Assert.IsTrue (result.floatMember == 2);
  48. }
  49. private Proxy.MonoTests.Features.Client.ComplexPrimitiveClass GetNewDataInstance ()
  50. {
  51. Proxy.MonoTests.Features.Client.ComplexPrimitiveClass inst = new Proxy.MonoTests.Features.Client.ComplexPrimitiveClass ();
  52. inst.byteMember = 1;
  53. inst.sbyteMember = 1;
  54. inst.intMember = 1;
  55. inst.uintMember = 1;
  56. inst.shortMember = 1;
  57. inst.ushortMember = 1;
  58. inst.longMember = 1;
  59. inst.ulongMember = 1;
  60. inst.doubleMember = 1;
  61. inst.floatMember = 1;
  62. return inst;
  63. }
  64. [Test]
  65. public void DefaultTypeMapTest ()
  66. {
  67. string t = "<Type1 xmlns=\"http://schemas.datacontract.org/2004/07/NS1.NS3\" "+
  68. "xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">"+
  69. "<AType xmlns:a=\"http://schemas.datacontract.org/2004/07/NS1.NS2\">"+
  70. "<a:Description>A description</a:Description>"+
  71. "<a:ID>10</a:ID>"+
  72. "</AType>"+
  73. "<ErrorMsg i:nil=\"true\"/>"+
  74. "<ResultCode>1</ResultCode>"+
  75. "</Type1>";
  76. var ser = new DataContractSerializer (typeof (NS1.NS3.Type1));
  77. var ret = (NS1.NS3.Type1) ser.ReadObject (XmlReader.Create (new StringReader (t)));
  78. Assert.IsNotNull (ret.AType, "#1");
  79. Assert.AreEqual (ret.AType.Description, "A description", "#2");
  80. }
  81. }
  82. }
  83. namespace NS1.NS2 {
  84. public class Type2 {
  85. public int ID { get; set; }
  86. public string Description { get; set; }
  87. }
  88. }
  89. namespace NS1.NS3 {
  90. public class Type1
  91. {
  92. public int ResultCode { get; set; }
  93. public string ErrorMsg {get; set; }
  94. public NS2.Type2 AType {get; set; }
  95. }
  96. }