public static GraphCompareResults XamlCompare(Object root1, Object root2) { ObjectGraph graph1 = ObjectGraphWalker.Create(root1); ObjectGraph graph2 = ObjectGraphWalker.Create(root2); return(ObjectGraphComparer.Compare(graph1, graph2, null)); }
/// <summary> /// Helper for testing parity with the TreeComparer /// </summary> /// <param name="root1"></param> /// <param name="root2"></param> /// <param name="v1CompareResults"></param> public static void XamlCompareParity(Object root1, Object root2, CompareResult v1CompareResults) { GraphCompareResults compareResults = ObjectGraphComparer.XamlCompare(root1, root2); bool traceGraphs = false; // If results dont match between the two comparers // if ((compareResults.Passed == true && v1CompareResults == CompareResult.Different) || (compareResults.Passed == false && v1CompareResults == CompareResult.Equivalent)) { //Log.TraceInternal("Results do not match between XamlTreeComparer and ObjectGraphComparer"); traceGraphs = true; } // If it was a failure or the compares dont match // if (v1CompareResults == CompareResult.Different || traceGraphs == true) { string tmpName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); //Log.TraceInternal("Logging object graphs - " + tmpName + "*.xml"); ObjectGraph.Serialize(ObjectGraphWalker.Create(root1), tmpName + "root1.xml"); ObjectGraph.Serialize(ObjectGraphWalker.Create(root2), tmpName + "root2.xml"); ObjectGraph.Serialize(compareResults.ResultGraph, tmpName + "result.xml"); //Log.TraceInternal("Exceptions are as follows:"); foreach (CompareError error in compareResults.Errors) { //Log.TraceInternal(string.Format("Node: {0} Message= {1}", error.Node1.QualifiedName, error.Error.Message)); } } }
public ObjectGraph Clone() { return(ObjectGraphWalker.Create(this.Data)); }