public void RoundTripAnUnknownMessage() { IMessage msg = new DogBarkedEvent { NameOfDog = "Woofy", Times = 5 }, copy; var model = RuntimeTypeModel.Create(); // could also use the default model, but using (var ms = new MemoryStream()) // separation makes life easy for my tests { var tmp = new DontAskWrapper { Message = msg }; model.Serialize(ms, tmp); ms.Position = 0; string hex = Program.GetByteString(ms.ToArray()); Debug.WriteLine(hex); #pragma warning disable CS0618 var wrapper = (DontAskWrapper)model.Deserialize(ms, null, typeof(DontAskWrapper)); #pragma warning restore CS0618 copy = wrapper.Message; } // check the data is all there Assert.IsType <DogBarkedEvent>(copy); var typed = (DogBarkedEvent)copy; var orig = (DogBarkedEvent)msg; Assert.Equal(orig.Times, typed.Times); Assert.Equal(orig.NameOfDog, typed.NameOfDog); }
public void RoundTripAnUnknownMessage() { IMessage msg = new DogBarkedEvent { NameOfDog = "Woofy", Times = 5 }, copy; var model = TypeModel.Create(); // could also use the default model, but model.Add(typeof(DogBarkedEvent), false).Add("NameOfDog", "Times"); model.Add(typeof(IMessage), false).AddSubType(1, typeof(DogBarkedEvent)); model.Add(typeof(DontAskWrapper), false).Add("Message"); using (var ms = new MemoryStream()) // separation makes life easy for my tests { var tmp = new DontAskWrapper { Message = msg }; model.Serialize(ms, tmp); ms.Position = 0; string hex = Program.GetByteString(ms.ToArray()); Debug.WriteLine(hex); var wrapper = (DontAskWrapper)model.Deserialize(ms, null, typeof(DontAskWrapper)); copy = wrapper.Message; } // check the data is all there Assert.IsInstanceOfType(typeof(DogBarkedEvent), copy); var typed = (DogBarkedEvent)copy; var orig = (DogBarkedEvent)msg; Assert.AreEqual(orig.Times, typed.Times); Assert.AreEqual(orig.NameOfDog, typed.NameOfDog); }