Пример #1
0
        public void CanCloneMessagePackSerializedModel()
        {
            var model = new CloneModel {
                IntProperty    = 1,
                StringProperty = "test",
                ListProperty   = new List <int> {
                    1
                },
                ObjectProperty = new CloneModel {
                    IntProperty = 1
                }
            };

            var serializer   = new MessagePackSerializer();
            var result       = serializer.SerializeToBytes(model);
            var deserialized = serializer.Deserialize <CloneModel>(result);

            Assert.Equal(model.IntProperty, deserialized.IntProperty);
            Assert.Equal(model.StringProperty, deserialized.StringProperty);
            Assert.Equal(model.ListProperty, deserialized.ListProperty);
            var dm = (Dictionary <object, object>)deserialized.ObjectProperty;

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, Convert.ToInt32(dm["IntProperty"]));

            var cloned = deserialized.DeepClone();

            Assert.Equal(model.IntProperty, cloned.IntProperty);
            Assert.Equal(model.StringProperty, cloned.StringProperty);
            Assert.Equal(model.ListProperty, cloned.ListProperty);
            var cdm = (Dictionary <object, object>)cloned.ObjectProperty;

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, Convert.ToInt32(cdm["IntProperty"]));
        }
Пример #2
0
        public void CanCloneJsonSerializedModel()
        {
            var model = new CloneModel {
                IntProperty    = 1,
                StringProperty = "test",
                ListProperty   = new List <int> {
                    1
                },
                ObjectProperty = new CloneModel {
                    IntProperty = 1
                }
            };

            var serializer   = new JsonNetSerializer();
            var result       = serializer.SerializeToBytes(model);
            var deserialized = serializer.Deserialize <CloneModel>(result);

            Assert.Equal(model.IntProperty, deserialized.IntProperty);
            Assert.Equal(model.StringProperty, deserialized.StringProperty);
            Assert.Equal(model.ListProperty, deserialized.ListProperty);
            var dm = ((JToken)deserialized.ObjectProperty).ToObject <CloneModel>();

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, dm.IntProperty);

            var cloned = deserialized.DeepClone();

            Assert.Equal(model.IntProperty, cloned.IntProperty);
            Assert.Equal(model.StringProperty, cloned.StringProperty);
            Assert.Equal(model.ListProperty, cloned.ListProperty);
            var cdm = ((JToken)cloned.ObjectProperty).ToObject <CloneModel>();

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, cdm.IntProperty);
        }
Пример #3
0
        public async Task CanCloneSerializedModel()
        {
            var model = new CloneModel {
                IntProperty    = 1,
                StringProperty = "test",
                ListProperty   = new List <int> {
                    1
                },
                ObjectProperty = new CloneModel {
                    IntProperty = 1
                }
            };

            var serializer = new JsonNetSerializer();
            var json       = await serializer.SerializeToStringAsync(model);

            var deserialized = await serializer.DeserializeAsync <CloneModel>(json);

            Assert.Equal(model.IntProperty, deserialized.IntProperty);
            Assert.Equal(model.StringProperty, deserialized.StringProperty);
            Assert.Equal(model.ListProperty, deserialized.ListProperty);
            var dm = ((JToken)deserialized.ObjectProperty).ToObject <CloneModel>();

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, dm.IntProperty);

            var cloned = deserialized.DeepClone();

            Assert.Equal(model.IntProperty, cloned.IntProperty);
            Assert.Equal(model.StringProperty, cloned.StringProperty);
            Assert.Equal(model.ListProperty, cloned.ListProperty);
            var cdm = ((JToken)cloned.ObjectProperty).ToObject <CloneModel>();

            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, cdm.IntProperty);
        }
Пример #4
0
        public void CanCloneModel()
        {
            var model = new CloneModel {
                IntProperty    = 1,
                StringProperty = "test",
                ListProperty   = new List <int> {
                    1
                },
                ObjectProperty = new CloneModel {
                    IntProperty = 1
                }
            };

            var cloned = model.DeepClone();

            Assert.Equal(model.IntProperty, cloned.IntProperty);
            Assert.Equal(model.StringProperty, cloned.StringProperty);
            Assert.Equal(model.ListProperty, cloned.ListProperty);
            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, ((CloneModel)model.ObjectProperty).IntProperty);
        }
Пример #5
0
        public void CanCloneModel()
        {
            var model = new CloneModel {
                IntProperty    = 1,
                StringProperty = "test",
                ListProperty   = new List <int> {
                    1
                },
                HashSet        = new HashSet <string>(),
                ObjectProperty = new CloneModel {
                    IntProperty = 1
                }
            };

            var cloned = model.DeepClone();

            Assert.Equal(model.IntProperty, cloned.IntProperty);
            Assert.Equal(model.StringProperty, cloned.StringProperty);
            Assert.Equal(model.ListProperty, cloned.ListProperty);
            Assert.Equal(model.EmptyStringList, cloned.EmptyStringList);
            Assert.Equal(model.EmptyHashSet, cloned.EmptyHashSet);
            Assert.Equal(model.HashSet, cloned.HashSet);
            Assert.Equal(((CloneModel)model.ObjectProperty).IntProperty, ((CloneModel)model.ObjectProperty).IntProperty);
        }