Exemple #1
0
        static void RunObjectFieldComparerTests()
        {
            Console.Write("Object comparer tests...");

            var test1 = new Test()
            {
                Test1 = "test1",
                Test2 = 2,
                Test3 = "Test3",
                Test4 = new Test()
                {
                    Test1 = "test41",
                    Test2 = 20,
                    Test3 = "",
                    Test4 = null
                }
            };

            var test2 = new Test()
            {
                Test1 = "test1",
                Test2 = 2,
                Test3 = "Test3",
                Test4 = new Test()
                {
                    Test1 = "test41",
                    Test2 = 20,
                    Test3 = "",
                    Test4 = null
                }
            };

            if (!ObjectFieldComparer.Compare(test1, test2, typeof(Test)))
            {
                throw new InvalidOperationException("Ожидаются одинаковые данные");
            }

            test2.Test4 = test1;

            if (ObjectFieldComparer.Compare(test1, test2, typeof(Test)))
            {
                throw new InvalidOperationException("Ожидаются разные данные");
            }

            Console.WriteLine(" Ok");
        }
        static void RunSerializeTests()
        {
            Console.Write("Serialize tests...");

            SerializeDeserializeEqualsTest(CreateListRand1());
            SerializeDeserializeEqualsTest(CreateListRand2());

            Console.WriteLine(" Ok");

            void SerializeDeserializeEqualsTest <T>(T value)
            {
                var buffer = new StringBuilder();

                new Serializer(new SerializerActionWriter(s => buffer.Append(s))).Serialize(value);

                var dValue = new Deserializer(new SerializerStringReader(buffer.ToString())).Deserialize <T>();

                if (!ObjectFieldComparer.Compare(value, dValue, typeof(T)))
                {
                    throw new InvalidOperationException("Ожидаются одинаковые значения");
                }
            }

            ListRand CreateListRand1()
            {
                return(null);
            }

            ListRand CreateListRand2()
            {
                var nodeList = new List <ListNode>();

                for (var i = 0; i <= new Random().Next(2000); i++)
                {
                    nodeList.Add(CreateListNode());
                }

                var random = new Random();

                for (var i = 0; i < nodeList.Count; i++)
                {
                    nodeList[i].Next = i < nodeList.Count - 1 ? nodeList[i + 1] : null;
                    nodeList[i].Prev = i > 0 ? nodeList[i - 1] : null;
                    nodeList[i].Rand = nodeList[random.Next(nodeList.Count - 1)];
                }

                return(new ListRand()
                {
                    Head = nodeList[0],
                    Tail = nodeList[nodeList.Count - 1],
                    Count = new Random().Next(100)
                });
            }

            ListNode CreateListNode()
            {
                return(new ListNode
                {
                    Data = StringGenerator.Generate()
                });
            }
        }
        private static void RunListRandSerializationTests()
        {
            Console.Write("ListRand tests...");

            var    input = CreateListRand();
            string path  = Path.Combine(Directory.GetCurrentDirectory(), "test.txt");

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (FileStream fs = File.Create(path))
            {
                input.Serialize(fs);
            }

            var result = new ListRand();

            using (FileStream fs = File.OpenRead(path))
            {
                result.Deserialize(fs);
            }

            if (!ObjectFieldComparer.Compare(input, result, typeof(ListRand)))
            {
                throw new InvalidOperationException("Ожидаются одинаковые значения");
            }

            Console.WriteLine(" Ok");


            ListRand CreateListRand()
            {
                var nodeList = new List <ListNode>();

                for (var i = 0; i <= new Random().Next(100); i++)
                {
                    nodeList.Add(CreateListNode());
                }

                var random = new Random();

                for (var i = 0; i < nodeList.Count; i++)
                {
                    nodeList[i].Next = i < nodeList.Count - 1 ? nodeList[i + 1] : null;
                    nodeList[i].Prev = i > 0 ? nodeList[i - 1] : null;
                    nodeList[i].Rand = nodeList[random.Next(nodeList.Count - 1)];
                }

                return(new ListRand()
                {
                    Head = nodeList[0],
                    Tail = nodeList[nodeList.Count - 1],
                    Count = new Random().Next(100)
                });
            }

            ListNode CreateListNode()
            {
                return(new ListNode
                {
                    Data = StringGenerator.Generate()
                });
            }
        }