public static void ComparePoco(SerializerPocoSerializable expected, SerializerPocoSerializable actual)
 {
     Assert.Equal(expected.StringProperty, actual.StringProperty);
     Assert.Equal(expected.IntProperty, actual.IntProperty);
     Assert.Equal(expected.StringArrayProperty, actual.StringArrayProperty);
     Assert.Equal(expected.StringListProperty, actual.StringListProperty);
     Assert.Equal(expected.ChildDictionaryProperty.Keys.ToArray(), actual.ChildDictionaryProperty.Keys.ToArray());
     Assert.Equal((expected.ChildDictionaryProperty.Values.ToArray())[0].StringProperty, (actual.ChildDictionaryProperty.Values.ToArray())[0].StringProperty);
 }
        public void CanSerializeObjectField1()
        {
            var b = new Bar2
            {
                Foo = SerializerPocoSerializable.Create()
            };

            var copy = (Bar2)MessagePackSerializer.DeepCopy <object>(b, DefaultResolver.Instance);

            Assert.NotNull(copy);
            Assert.IsType <SerializerPocoSerializable>(copy.Foo);
            Helper.ComparePoco((SerializerPocoSerializable)b.Foo, (SerializerPocoSerializable)copy.Foo);

            copy = (Bar2)MessagePackSerializer.Typeless.DeepCopy(b, TypelessDefaultResolver.Instance);
            Assert.NotNull(copy);
            Assert.IsType <SerializerPocoSerializable>(copy.Foo);
            Helper.ComparePoco((SerializerPocoSerializable)b.Foo, (SerializerPocoSerializable)copy.Foo);
        }