Ejemplo n.º 1
0
        internal Action <ObjTestA> checkTestAProc(ObjTestA a)
        {
            return((b) =>
            {
                Assert.Equal(a.GetType(), b.GetType());
                Assert.Equal(a.A, b.A);
                Assert.Equal(a.B, b.B);

                if (a is ObjTestB ab)
                {
                    ObjTestB bb = b as ObjTestB;
                    Assert.Equal(ab.E, bb.E);
                    if (ab.D == null)
                    {
                        Assert.Null(bb.D);
                    }
                    else
                    {
                        checkTestAProc(ab.D)(bb.D);
                    }
                    if (ab.C == null)
                    {
                        Assert.Null(bb.C);
                    }
                    else
                    {
                        checkTestAProc(ab.C)(bb.C);
                    }
                }
            });
        }
Ejemplo n.º 2
0
        public async Task Test_Polymorphic_Nest_Buffer(int len)
        {
            BinarySerializerOptions options = new BinarySerializerOptions()
            {
                DefaultBufferSize = 1
            };


            ObjTestB n1 = new ObjTestB()
            {
                D = new ObjTestB()
                {
                    B = new string('A', len)
                }
            };

            await Test(n1, CheckProc(n1), options);

            options = new BinarySerializerOptions()
            {
                DefaultBufferSize = 30
            };
            n1 = new ObjTestB()
            {
                A = 1,
                B = new string('A', len),
                C = new ObjTestB()
                {
                    A = 2,
                    D = new ObjTestB()
                    {
                        B = new string('C', len),
                        E = 1,
                        C = new ObjTestB()
                        {
                        },
                        D = new ObjTestA()
                        {
                            A = 3,
                            B = new string('D', len)
                        }
                    }
                },
                D = new ObjTestB()
                {
                    B = new string('E', len),
                    D = new ObjTestA()
                    {
                        B = new string('F', len),
                        A = 1
                    },
                    E = 1
                },
                E = null
            };
            await Test(n1, CheckProc(n1), options);
        }
Ejemplo n.º 3
0
        public async Task Test_NestObjBuffer(int len)
        {
            BinarySerializerOptions options = new BinarySerializerOptions()
            {
                DefaultBufferSize = 1
            };
            ObjTestB a = new ObjTestB()
            {
                A = 1,
                B = new string('A', len),
                C = new ObjTestB()
                {
                    A = 1,
                    B = new string('B', len)
                },
                E = null
            };


            Action <ObjTestB> check = CheckProc(a);

            await Test(a, check, options);

            a.C.C = new ObjTestB()
            {
                A = 2,
                B = new string('C', len),
                C = new ObjTestB()
                {
                    A = 3,
                    B = new string('D', len),
                    C = new ObjTestB()
                    {
                        A = 4,
                        B = new string('E', len),
                        E = 2,
                        C = new ObjTestB()
                        {
                            A = 5,
                            B = null,
                            E = null,
                            D = new ObjTestA()
                            {
                                A = 1,
                                B = new string('A', len)
                            }
                        }
                    },
                    E = 1
                },
                E = null
            };

            await Test(a, check, options);
        }
Ejemplo n.º 4
0
        public async Task Test_Polymorphic_Nest()
        {
            ObjTestB n1 = new ObjTestB()
            {
                D = new ObjTestB()
                {
                    B = "D1"
                }
            };

            await Test(n1, CheckProc(n1));


            n1 = new ObjTestB()
            {
                A = 1,
                B = "A",
                C = new ObjTestB()
                {
                    A = 2,
                    D = new ObjTestB()
                    {
                        B = "C1",
                        E = 1,
                        C = new ObjTestB()
                        {
                        },
                        D = new ObjTestA()
                        {
                            A = 3,
                            B = "C2"
                        }
                    }
                },
                D = new ObjTestB()
                {
                    B = "D1",
                    D = new ObjTestA()
                    {
                        B = "A1",
                        A = 1
                    },
                    E = 1
                },
                E = null
            };
            await Test(n1, CheckProc(n1));
        }
Ejemplo n.º 5
0
        public async Task Test_NestObj()
        {
            Type type = typeof(ObjTestA);

            ObjTestB a = new ObjTestB()
            {
                A = 1,
                B = null,
                C = null,
                E = null
            };

            await Test <ObjTestB>(null, (obj) => Assert.Null(obj));

            void check(ObjTestB b)
            {
                Assert.Equal(a.A, b.A);
                Assert.Equal(a.B, b.B);
                if (a.C == null)
                {
                    Assert.Equal(a.C, b.C);
                }

                if (a.C != null)
                {
                    Assert.Equal(a.C.A, b.C.A);
                    Assert.Equal(a.C.B, b.C.B);
                }
            }

            await Test(a, check);


            a.B = "AAA";
            a.C = new ObjTestB()
            {
                A = 2,
                B = "222",
            };
            await Test(a, check);
        }
Ejemplo n.º 6
0
        private Action <ObjTestB> CheckProc(ObjTestB a)
        {
            void check(ObjTestB b)
            {
                Assert.Equal(a.A, b.A);
                Assert.Equal(a.B, b.B);
                if (a.C == null)
                {
                    Assert.Equal(a.C, b.C);
                }
                if (a.D == null)
                {
                    Assert.Equal(a.D, b.D);
                }
                else
                {
                    Assert.Equal(a.D.GetType(), b.D.GetType());
                    Assert.Equal(a.D.A, b.D.A);
                    Assert.Equal(a.D.B, b.D.B);

                    if (a.D is ObjTestB)
                    {
                        var subCheck = CheckProc(a.D as ObjTestB);
                        subCheck(b.D as ObjTestB);
                    }
                }

                ObjTestB c1 = a.C;
                ObjTestB c2 = b.C;

                while (c1 != null)
                {
                    var subCheck = CheckProc(c1);
                    subCheck(c2);
                    c1 = c1.C;
                    c2 = c2.C;
                }
            }

            return(check);
        }
Ejemplo n.º 7
0
        public void Test_Diff_Obj_Complex()
        {
            ObjTestB a = new ObjTestB()
            {
                A = 1,
                B = "B",
                C = new ObjTestB()
                {
                    A = 2,
                    B = "B"
                }
            };


            byte[] data = BinarySerializer.Serialize(a);
            var    b    = BinarySerializer.Deserialize <DiffObjTestB>(data);

            Assert.Equal((uint)1, b.A);
            Assert.Equal("B", b.B);
            Assert.Equal("B", b.C.B);
        }
Ejemplo n.º 8
0
        public async Task Test_Polymorphic()
        {
            ObjTestA a = new ObjTestB()
            {
                A = 1,
                B = null,
                E = 2
            };



            void check(ObjTestA b)
            {
                Assert.Equal(a.A, b.A);
                Assert.Equal(a.B, b.B);
            }

            await Test <ObjTestA>(a, check);

            //object c = new ObjTestB()
            //{
            //    A = 1
            //};
            //await Test<object>(c, b=>
            //{
            //    Assert.IsType<ObjTestB>(b);
            //    ObjTestB x = b as ObjTestB;
            //    Assert.Equal((uint)1, x.A);
            //});

            //c = new object();
            //await Test<object>(c, b =>
            //{
            //    Assert.True(b.GetType() == typeof(object));
            //});
        }