// Deserialize T from IBonded<T> containing an instance or payload of derived class. void BondedDeserialize <T, D>() where T : class where D : class, T, new() { var from = Random.Init <D>(); IBonded <T> bondedInstance = new Bonded <D>(from); IBonded <T> bondedPayloadCB = Util.MakeBondedCB(from); IBonded <T> bondedPayloadCB2 = Util.MakeBondedCB2(from); IBonded <T> bondedPayloadSP = Util.MakeBondedSP(from); IBonded <BondClass <IBonded <T> > > nestedBonded = new Bonded <BondClass <IBonded <T> > >(new BondClass <IBonded <T> > { field = bondedInstance }); for (var i = 2; --i != 0;) { var to1 = bondedInstance.Deserialize(); var to2 = bondedPayloadCB.Deserialize(); var toCb2 = bondedPayloadCB2.Deserialize(); var to3 = bondedPayloadSP.Deserialize(); Assert.IsTrue(to1.IsEqual <T>(from)); Assert.IsTrue(to2.IsEqual <T>(from)); Assert.IsTrue(toCb2.IsEqual <T>(from)); Assert.IsTrue(to3.IsEqual <T>(from)); Assert.IsTrue(nestedBonded.Deserialize().field.Deserialize().IsEqual(from)); } }
public void From_WithBonded_CanDeserialize() { IBonded <SomePayload> bondedPayload = new Bonded <SomePayload>(SomePayload.Any); var msg = Message.From(bondedPayload); var deserializedPayload = msg.Payload.Deserialize(); Assert.IsTrue(SomePayload.Any.IsEqual <SomePayload>(deserializedPayload)); }
public void Construct_WithBonded_CanDeserialize() { var bondedPayload = new Bonded <SomePayload>(SomePayload.Any); var msg = new Message <SomePayload>(bondedPayload); var deserializedPayload = msg.Payload.Deserialize(); Assert.IsTrue(SomePayload.Any.IsEqual <SomePayload>(deserializedPayload)); }
public void FromPayload_WithDerivedPayload_IsPayload() { IBonded typelessBonded = new Bonded <SomeDerivedPayload>(AnyDerivedPayload); var msg = Message.FromPayload(typelessBonded); Assert.IsFalse(msg.IsError); Assert.IsNull(msg.Error); var deserializedPayload = msg.RawPayload.Deserialize <SomeDerivedPayload>(); Assert.IsTrue(AnyDerivedPayload.IsEqual <SomeDerivedPayload>(deserializedPayload)); }
public void ConstructT_WithBonded_IsPayload() { var bondedPayload = new Bonded <SomePayload>(AnyPayload); var msg = new Message <SomePayload>(bondedPayload); Assert.IsFalse(msg.IsError); Assert.IsNull(msg.Error); var deserializedPayload = msg.Payload.Deserialize(); Assert.IsTrue(AnyPayload.IsEqual <SomePayload>(deserializedPayload)); }
public void Message_ConvertToMessageT_Works() { IBonded typelessBonded = new Bonded <SomeDerivedPayload>(AnyDerivedPayload); var msg = Message.FromPayload(typelessBonded); var messageBase = msg.Convert <SomePayload>(); Assert.AreEqual(500, messageBase.Payload.Deserialize().int_field); var messageDerived = msg.Convert <SomeDerivedPayload>(); Assert.IsTrue(AnyDerivedPayload.IsEqual <SomeDerivedPayload>(messageDerived.Payload.Deserialize())); }
private static IMessage <T> FromByteArray(byte[] arr) { if (arr == null) { return(null); } var input = new InputBuffer(arr); var reader = new CompactBinaryReader <InputBuffer>(input); var bonded = new Bonded <T, CompactBinaryReader <InputBuffer> >(reader); return(Message.From <T>(bonded)); }
void BondedSerialize <T, D>() where T : class where D : class, T, new() { var from = Random.Init <D>(); IBonded <T> bondedInstance = new Bonded <D>(from); IBonded <T> bondedPayloadCB = Util.MakeBondedCB(from); IBonded <T> bondedPayloadSP = Util.MakeBondedSP(from); BondedSerialize(from, bondedInstance); BondedSerialize(from, bondedPayloadCB); BondedSerialize(from, bondedPayloadSP); BondedSerialize(from, bondedPayloadCB as IBonded); }
// Deserialize derived class from IBonded<T> containing an instance or payload of derived class. void BondedDowncastDeserialize <T, D>() where T : class where D : class, T, new() { var from = Random.Init <D>(); IBonded <T> bondedInstance = new Bonded <D>(from); IBonded <T> bondedPayloadCB = Util.MakeBondedCB(from); IBonded <T> bondedPayloadSP = Util.MakeBondedSP(from); for (var i = 2; --i != 0;) { var to1 = bondedInstance.Deserialize <D>(); var to2 = bondedPayloadCB.Deserialize <D>(); var to3 = bondedPayloadSP.Deserialize <D>(); Assert.IsTrue(to1.IsEqual <D>(from)); Assert.IsTrue(to2.IsEqual <D>(from)); Assert.IsTrue(to3.IsEqual <D>(from)); } }
public void Message_ConvertToMessageT_Works() { IBonded typelessBonded = new Bonded<SomeDerivedPayload>(AnyDerivedPayload); var msg = Message.FromPayload(typelessBonded); var messageBase = msg.Convert<SomePayload>(); Assert.AreEqual(500, messageBase.Payload.Deserialize().int_field); var messageDerived = msg.Convert<SomeDerivedPayload>(); Assert.IsTrue(AnyDerivedPayload.IsEqual<SomeDerivedPayload>(messageDerived.Payload.Deserialize())); }
public void FromPayload_WithDerivedPayload_IsPayload() { IBonded typelessBonded = new Bonded<SomeDerivedPayload>(AnyDerivedPayload); var msg = Message.FromPayload(typelessBonded); Assert.IsFalse(msg.IsError); Assert.IsNull(msg.Error); var deserializedPayload = msg.RawPayload.Deserialize<SomeDerivedPayload>(); Assert.IsTrue(AnyDerivedPayload.IsEqual<SomeDerivedPayload>(deserializedPayload)); }
public void ConstructT_WithBonded_IsPayload() { var bondedPayload = new Bonded<SomePayload>(AnyPayload); var msg = new Message<SomePayload>(bondedPayload); Assert.IsFalse(msg.IsError); Assert.IsNull(msg.Error); var deserializedPayload = msg.Payload.Deserialize(); Assert.IsTrue(AnyPayload.IsEqual<SomePayload>(deserializedPayload)); }