private static void CompareNode(HSDStruct s1, HSDStruct s2, HashSet <HSDStruct> done, string path) { if (done.Contains(s1)) { return; } done.Add(s1); //System.Console.WriteLine("Checking " + s1.Length + " " + s2.Length + " " + s1.References.Count + " " + s2.References.Count); if (s1.Length != s2.Length) { Console.WriteLine($"{path} Size mismatch"); } else { for (int i = 0; i < s1.Length; i++) { if (s1.GetByte(i) != s2.GetByte(i)) { Console.WriteLine($"{path} Content mismatch"); } } } if (s1.References.Count != s2.References.Count) { Console.WriteLine($"{path} Reference mismatch"); } foreach (var re in s2.References) { CompareNode(s1.References[re.Key], s2.References[re.Key], done, path + $"{re.Key.ToString("X8")}->"); } }
private static void CompareNode(HSDStruct s1, HSDStruct s2, HashSet <HSDStruct> done) { if (done.Contains(s1)) { return; } done.Add(s1); //System.Console.WriteLine("Checking " + s1.Length + " " + s2.Length + " " + s1.References.Count + " " + s2.References.Count); for (int i = 0; i < s1.Length; i++) { if (s1.GetByte(i) != s2.GetByte(i)) { Console.WriteLine("content mismatch"); } } if (s1.Length != s2.Length) { Console.WriteLine("Size mismatch"); } if (s1.References.Count != s2.References.Count) { Console.WriteLine("Reference mismatch"); } foreach (var re in s2.References) { var re2 = s2.References[re.Key]; CompareNode(re.Value, re2, done); } }