예제 #1
0
        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);
        }
예제 #2
0
        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);
        }