예제 #1
0
        public void CanDeepCopyStruct()
        {
            var astruct = new AStruct()
            {
                AStringField = "hello",
                AnIntField   = 123,
            };
            var serializer = new OrleansWireSerializer();
            var res        = (AStruct)serializer.DeepCopy(astruct);

            Assert.AreEqual(astruct.AnIntField, res.AnIntField);
            Assert.AreEqual(astruct.AStringField, res.AStringField);
        }
예제 #2
0
        public void CanDeepCopyClass()
        {
            var astruct = new AClass()
            {
                AStringField = "hello",
                AnIntField   = 123,
                AStringProp  = "you",
                AnIntProp    = 456
            };
            var serializer = new OrleansWireSerializer();
            var res        = (AClass)serializer.DeepCopy(astruct);

            Assert.AreEqual(astruct.AnIntField, res.AnIntField);
            Assert.AreEqual(astruct.AStringField, res.AStringField);
            Assert.AreEqual(astruct.AnIntProp, res.AnIntProp);
            Assert.AreEqual(astruct.AStringProp, res.AStringProp);
        }
예제 #3
0
        public void CanDeepCopyCyclicClass()
        {
            var a = new A
            {
                B = new B
                {
                    AnIntProp = 123
                },
                AStringProp = "hello"
            };

            //make cyclic
            a.B.A = a;

            var serializer = new OrleansWireSerializer();
            var res        = (A)serializer.DeepCopy(a);

            Assert.AreEqual(a.AStringProp, res.AStringProp);
            Assert.AreEqual(a.B.AnIntProp, res.B.AnIntProp);
            Assert.AreSame(res, res.B.A);
        }