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() }); } }