Exemple #1
0
        public void ShouldPlaceObjectForSurrogatePreservingIdentity()
        {
            var b    = new SurrogateMockB();
            var list = new List <object> {
                b, new List <object> {
                    b
                }, new SurrogateMockB()
            };
            var counter    = 0;
            var pseudocopy = PseudoClone(list, serializer =>
            {
                serializer.ForSurrogate <SurrogateMockB>().SetObject(x => new SurrogateMockA(counter++));
            });

            list = pseudocopy as List <object>;
            Assert.IsNotNull(list);
            var sublist = list[1] as List <object>;

            Assert.IsNotNull(sublist);
            Assert.AreSame(list[0], sublist[0]);
            Assert.AreNotSame(list[0], list[2]);
            var a = list[0] as SurrogateMockA;

            Assert.IsNotNull(a);
            Assert.AreEqual(counter - 2, a.Field);
            var secondA = list[2] as SurrogateMockA;

            Assert.IsNotNull(secondA);
            Assert.AreEqual(counter - 1, secondA.Field);
        }
Exemple #2
0
        public void ShouldPlaceSurrogateForObject()
        {
            var b          = new SurrogateMockB();
            var pseudocopy = PseudoClone(b, serializer =>
            {
                serializer.ForObject <SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
            });
            var a = pseudocopy as SurrogateMockA;

            Assert.IsNotNull(a);
            Assert.AreEqual(1, a.Field);
        }
Exemple #3
0
        public void ShouldDoSurrogateObjectSwap()
        {
            var b          = new SurrogateMockB();
            var pseudocopy = PseudoClone(b, serializer =>
            {
                serializer.ForObject <SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
                serializer.ForSurrogate <SurrogateMockA>().SetObject(x => new SurrogateMockC());
            });
            var c = pseudocopy as SurrogateMockC;

            Assert.IsNotNull(c);
        }
Exemple #4
0
        public void ShouldDoSurrogateObjectSwapTwoTimes()
        {
            var b          = new SurrogateMockB();
            var serializer = new Serializer(GetSettings());

            serializer.ForObject <SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
            serializer.ForSurrogate <SurrogateMockA>().SetObject(x => new SurrogateMockC());

            for (var i = 0; i < 2; i++)
            {
                using (var stream = new MemoryStream())
                {
                    serializer.Serialize(b, stream);
                    stream.Seek(0, SeekOrigin.Begin);
                    var pseudocopy = serializer.Deserialize <object>(stream);
                    var c          = pseudocopy as SurrogateMockC;
                    Assert.IsNotNull(c);
                }
            }
        }
 public void ShouldPlaceSurrogateForObjectPreservingIdentity()
 {
     var b = new SurrogateMockB();
     var counter = 0;
     var list = new List<object> { b, new SurrogateMockB(), b };
     var pseudocopy = PseudoClone(list, serializer =>
                                  {
         serializer.ForObject<SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(counter++));
     });
     list = pseudocopy as List<object>;
     Assert.IsNotNull(list);
     Assert.AreSame(list[0], list[2]);
     Assert.AreNotSame(list[0], list[1]);
     var a = list[0] as SurrogateMockA;
     Assert.IsNotNull(a);
     Assert.AreEqual(counter - 2, a.Field);
     var secondA = list[1] as SurrogateMockA;
     Assert.IsNotNull(secondA);
     Assert.AreEqual(counter - 1, secondA.Field);
 }
 public void ShouldPlaceSurrogateForObject()
 {
     var b = new SurrogateMockB();
     var pseudocopy = PseudoClone(b, serializer =>
                                  {
         serializer.ForObject<SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
     });
     var a = pseudocopy as SurrogateMockA;
     Assert.IsNotNull(a);
     Assert.AreEqual(1, a.Field);
 }
 public void ShouldDoSurrogateObjectSwap()
 {
     var b = new SurrogateMockB();
     var pseudocopy = PseudoClone(b, serializer =>
                                  {
         serializer.ForObject<SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
         serializer.ForSurrogate<SurrogateMockA>().SetObject(x => new SurrogateMockC());
     });
     var c = pseudocopy as SurrogateMockC;
     Assert.IsNotNull(c);
 }
        public void ShouldDoSurrogateObjectSwapTwoTimes()
        {
            var b = new SurrogateMockB();
            var serializer = new Serializer(GetSettings());
            serializer.ForObject<SurrogateMockB>().SetSurrogate(x => new SurrogateMockA(1));
            serializer.ForSurrogate<SurrogateMockA>().SetObject(x => new SurrogateMockC());

            for(var i = 0; i < 2; i++)
            {
                using(var stream = new MemoryStream())
                {
                    serializer.Serialize(b, stream);
                    stream.Seek(0, SeekOrigin.Begin);
                    var pseudocopy = serializer.Deserialize<object>(stream);
                    var c = pseudocopy as SurrogateMockC;
                    Assert.IsNotNull(c);
                }
            }
        }