Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Toub <stoub@microsoft.com>2017-05-05 23:28:27 +0300
committerGitHub <noreply@github.com>2017-05-05 23:28:27 +0300
commit0e6d4afa9dbdde65f91114a41f2b1c89ecba137b (patch)
tree49b683d2ed11f77f405139b73c70544ddedda567 /src/System.Runtime.Serialization.Xml
parent9f688fa2477c09edf8d355476c02962ead416ed6 (diff)
parentf18cdb312e1cbe26616a112cb7b8e23c1789e9a9 (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.cs20
-rw-r--r--src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs32
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