diff options
author | Stephen Toub <stoub@microsoft.com> | 2017-05-05 23:28:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-05 23:28:27 +0300 |
commit | 0e6d4afa9dbdde65f91114a41f2b1c89ecba137b (patch) | |
tree | 49b683d2ed11f77f405139b73c70544ddedda567 /src/System.Runtime.Serialization.Xml | |
parent | 9f688fa2477c09edf8d355476c02962ead416ed6 (diff) | |
parent | f18cdb312e1cbe26616a112cb7b8e23c1789e9a9 (diff) |
Merge pull request #19370 from huanwu/AddKnownMethodNameTest
Add a test for KnownTypeAttribute.MethodName Property
Diffstat (limited to 'src/System.Runtime.Serialization.Xml')
-rw-r--r-- | src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs | 20 | ||||
-rw-r--r-- | src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs | 32 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index 7d4cd59271..4c1fc3572f 100644 --- a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -3142,6 +3142,26 @@ public static partial class DataContractSerializerTests } } + [Fact] + public static void DCS_KnownTypeMethodName() + { + var emp1 = new EmployeeC("Steve"); + var emp2 = new EmployeeC("Lilian"); + var value = new Manager("Tony") + { + age = 30, + emps = new EmployeeC[] { emp1, emp2 } + }; + + Manager actual = SerializeAndDeserialize(value, @"<Manager xmlns=""http://schemas.datacontract.org/2004/07/"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><Name>Tony</Name><age>30</age><emps><EmployeeC><Name>Steve</Name></EmployeeC><EmployeeC><Name>Lilian</Name></EmployeeC></emps></Manager>"); + Assert.NotNull(actual); + Assert.Equal(value.age, actual.age); + Assert.NotNull(actual.emps); + Assert.Equal(value.emps.Count(), actual.emps.Count()); + Assert.Equal(value.emps[0].Name, actual.emps[0].Name); + Assert.Equal(value.emps[1].Name, actual.emps[1].Name); + } + private static T SerializeAndDeserialize<T>(T value, string baseline, DataContractSerializerSettings settings = null, Func<DataContractSerializer> serializerFactory = null, bool skipStringCompare = false) { DataContractSerializer dcs; diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 8627282367..19e8628129 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -5141,4 +5141,36 @@ public class People [DataMember] public string Name; +} + +[KnownType("KnownTypes")] +[DataContract] +public class EmployeeC +{ + public EmployeeC(string name) + { + Name = name; + } + + [DataMember] + public string Name; + + static Type[] KnownTypes() + { + return new Type[] { typeof(Manager), typeof(EmployeeC) }; + } +} + +[DataContract] +public class Manager : EmployeeC +{ + public Manager(string name) : base(name) + { + } + + [DataMember] + public int age; + + [DataMember] + public EmployeeC[] emps; }
\ No newline at end of file |