Exemple #1
0
        public void TestSerializeItemIf()
        {
            TestGen(cl => {
                var src = new SampleCollection <int> {
                    5, 2, 4, 1
                };

                var dst1 = cl.Deep(src);
                Assert.AreNotEqual(src, dst1);
                Assert.AreEqual(src.Count, dst1.Count);
                CollectionAssert.AreEqual(src.ToList(), dst1.ToList());

                src.Filter = 1;
                var dst2   = cl.Deep(src);
                CollectionAssert.AreEqual(new List <int> {
                    5, 4
                }, dst2.ToList());

                src.Filter = 2;
                var dst3   = cl.Deep(src);
                CollectionAssert.AreEqual(new List <int> {
                    2, 4
                }, dst3.ToList());

                src.Filter = 3;
                var dst4   = cl.Deep(src);
                Assert.AreEqual(0, dst4.Count);
            });
            TestGen(cl => {
                var src = new SampleCollection <Sample1>();
                foreach (var i in new List <int> {
                    5, 2, 4, 1
                })
                {
                    src.Add(new Sample1 {
                        X = i
                    });
                }

                var dst1 = cl.Deep(src);
                Assert.AreNotEqual(src, dst1);
                Assert.AreEqual(src.Count, dst1.Count);
                foreach (var t in src.Zip(dst1, Tuple.Create))
                {
                    Assert.AreEqual(t.Item1.X, t.Item2.X);
                }

                src.Filter = 1;
                var dst2   = cl.Deep(src);
                Assert.AreEqual(2, dst2.Count);
                Assert.AreEqual(5, dst2.First().X);
                Assert.AreEqual(4, dst2.ElementAt(1).X);

                src.Filter = 3;
                var dst4   = cl.Deep(src);
                Assert.AreEqual(0, dst4.Count);
            });
            TestGen(cl => {
                var src = new SampleWithCollectionMerge();
                foreach (var i in new List <int> {
                    5, 2, 4, 1
                })
                {
                    src.A.Add(i);
                }

                var dst1 = cl.Deep(src);
                Assert.AreNotEqual(src, dst1);
                Assert.AreEqual(src.A.Count, dst1.A.Count);
                CollectionAssert.AreEqual(src.A.ToList(), dst1.A.ToList());

                src.A.Filter = 1;
                var dst2     = cl.Deep(src);
                CollectionAssert.AreEqual(new List <int> {
                    5, 4
                }, dst2.A.ToList());

                src.A.Filter = 2;
                var dst3     = cl.Deep(src);
                CollectionAssert.AreEqual(new List <int> {
                    2, 4
                }, dst3.A.ToList());

                src.A.Filter = 3;
                var dst4     = cl.Deep(src);
                Assert.AreEqual(0, dst4.A.Count);
            });
        }