public void TestTagWithInferenceBinary() { TagData data = new TagData { Bravo = 15, Charlie = 17, Delta = 4, Zulu = 9 }; RuntimeTypeModel tm = TypeModel.Create(); // for compatibility with DataMember //tm.SkipForcedAdvancedVersioning = true; var first = tm.GetDebugSchema(typeof(TagData)); var second = tm.GetDebugSchema(typeof(TagDataExpected)); TagDataExpected clone = tm.ChangeType <TagData, TagDataExpected>(data); Assert.AreEqual(data.Bravo, clone.Bravo, "Bravo"); Assert.AreEqual(data.Charlie, clone.Charlie, "Charlie"); Assert.AreEqual(data.Delta, clone.Delta, "Delta"); Assert.AreEqual(data.Zulu, clone.Zulu, "Zulu"); }
public void ThreeApproachesAreCompatible() { string surrogate, fields, defaultRef_AFirst, defaultRef_BFirst; string defaultRef_AFirst_proto; string fields_proto; string surrogate_proto; // Items should be not as reference but element A.Value should using (var ms = new MemoryStream()) { RuntimeTypeModel m = CreateDefaultRefModel(true, true); m.Serialize(ms, CreateB_WithDefaultRef()); defaultRef_AFirst = BitConverter.ToString(ms.GetBuffer(), 0, (int)ms.Length); defaultRef_AFirst_proto = m.GetDebugSchema(typeof(B_WithDefaultRef)); } using (var ms = new MemoryStream()) { CreateDefaultRefModel(false, true).Serialize(ms, CreateB_WithDefaultRef()); defaultRef_BFirst = BitConverter.ToString(ms.GetBuffer(), 0, (int)ms.Length); } using (var ms = new MemoryStream()) { RuntimeTypeModel m = CreateSurrogateModel(true); m.Serialize(ms, CreateB()); surrogate = BitConverter.ToString(ms.GetBuffer(), 0, (int)ms.Length); surrogate_proto = m.GetDebugSchema(typeof(B)); } using (var ms = new MemoryStream()) { RuntimeTypeModel m = CreateFieldsModel(true); m.Serialize(ms, CreateB()); fields = BitConverter.ToString(ms.GetBuffer(), 0, (int)ms.Length); fields_proto = m.GetDebugSchema(typeof(B)); } Assert.AreEqual(surrogate, fields, "fields vs surrogate"); Assert.AreEqual(surrogate, defaultRef_AFirst, "default-ref (A-first) vs surrogate"); Assert.AreEqual(surrogate, defaultRef_BFirst, "default-ref (B-first) vs surrogate"); }