Example #1
0
        public void Test_ProxyMessage()
        {
            // Ensures that we can serialize and deserialize base messages.

            ProxyMessage message;

            using (var stream = new MemoryStream())
            {
                // Empty message.

                message = new ProxyMessage();

                stream.SetLength(0);
                stream.Write(message.SerializeAsBytes(ignoreTypeCode: true));
                stream.Seek(0, SeekOrigin.Begin);

                message = ProxyMessage.Deserialize <ProxyMessage>(stream, ignoreTypeCode: true);
                Assert.Equal(InternalMessageTypes.Unspecified, message.Type);
                Assert.Empty(message.Properties);
                Assert.Empty(message.Attachments);

                // Message with args and attachments.

                message = new ProxyMessage();

                message.Properties.Add(PropertyNames.TestOne, "1");
                message.Properties.Add(PropertyNames.TestTwo, "2");
                message.Properties.Add(PropertyNames.TestEmpty, string.Empty);
                message.Properties.Add(PropertyNames.TestNull, null);

                message.SetJsonProperty(PropertyNames.TestComplex, new ComplexType()
                {
                    Name = "foo", Value = "bar"
                });
                message.SetJsonProperty(PropertyNames.TestPerson, new Person()
                {
                    Name = "Jack", Age = 10
                });

                message.Attachments.Add(new byte[] { 0, 1, 2, 3, 4 });
                message.Attachments.Add(new byte[0]);
                message.Attachments.Add(null);

                stream.SetLength(0);
                stream.Write(message.SerializeAsBytes(ignoreTypeCode: true));
                stream.Seek(0, SeekOrigin.Begin);

                message = ProxyMessage.Deserialize <ProxyMessage>(stream, ignoreTypeCode: true);
                Assert.Equal(InternalMessageTypes.Unspecified, message.Type);
                Assert.Equal(6, message.Properties.Count);
                Assert.Equal("1", message.Properties[PropertyNames.TestOne]);
                Assert.Equal("2", message.Properties[PropertyNames.TestTwo]);
                Assert.Empty(message.Properties[PropertyNames.TestEmpty]);
                Assert.Null(message.Properties[PropertyNames.TestNull]);

                var complex = message.GetJsonProperty <ComplexType>(PropertyNames.TestComplex);
                Assert.Equal("foo", complex.Name);
                Assert.Equal("bar", complex.Value);

                var person = message.GetJsonProperty <Person>(PropertyNames.TestPerson);
                Assert.Equal("Jack", person.Name);
                Assert.Equal(10, person.Age);

                Assert.Equal(3, message.Attachments.Count);
                Assert.Equal(new byte[] { 0, 1, 2, 3, 4 }, message.Attachments[0]);
                Assert.Empty(message.Attachments[1]);
                Assert.Null(message.Attachments[2]);
            }
        }