public void TestLoadFilteredTreeAndCompare() { guiFuctions.loadGrantProject(treePath); if (grantTrees.filteredTree == null) { Assert.Fail("Es ist kein gefilterter Baum vorhanden!"); } Object loadedTree = strategyMgr.getSpecifiedTree().Copy(grantTrees.filteredTree); String processName = strategyMgr.getSpecifiedTree().GetData(strategyMgr.getSpecifiedTree().Child(grantTrees.filteredTree)).properties.processName; String fileName = strategyMgr.getSpecifiedTree().GetData(strategyMgr.getSpecifiedTree().Child(grantTrees.filteredTree)).properties.appPath; IntPtr appHwnd = strategyMgr.getSpecifiedOperationSystem().getHandleOfApplication(processName); //Die Anwendung sollte schon offen sein, durch das Laden des Baums grantTrees.filteredTree = strategyMgr.getSpecifiedFilter().filtering(appHwnd); Debug.WriteLine("\ngrant\n" + strategyMgr.getSpecifiedTree().ToStringRecursive(grantTrees.filteredTree) + "\n\n"); Debug.WriteLine("\nloaded\n" + strategyMgr.getSpecifiedTree().ToStringRecursive(loadedTree) + "\n\n"); HelpFunctions hf = new HelpFunctions(strategyMgr, grantTrees); foreach (Object node in strategyMgr.getSpecifiedTree().AllChildrenNodes(grantTrees.filteredTree)) { List <Object> nodes = searchNodes.getNodeList(strategyMgr.getSpecifiedTree().GetData(node).properties.IdGenerated, loadedTree); if (nodes.Count != 1) { Assert.Fail("Es wurde nicht die richtige Anzahl an zugehörigen Knoten im geladenen Baum gefunden! Betrachteter Knoten:\n{0}\n\t Anzahl der gefundenen zugehörigen Knoten im geladenen Baum = {1}", node, nodes.Count); } bool isEqual = hf.compareToNodes(node, nodes[0]); if (!isEqual) { Assert.Fail("Der geladene Baum enthält den Knoten folgenden Knoten nicht:\n{0}", strategyMgr.getSpecifiedTree().GetData(node)); } } foreach (Object node in strategyMgr.getSpecifiedTree().AllChildrenNodes(loadedTree)) { List <Object> nodes = searchNodes.getNodeList(strategyMgr.getSpecifiedTree().GetData(node).properties.IdGenerated, grantTrees.filteredTree); if (nodes.Count != 1) { Assert.Fail("Es wurde nicht die richtige Anzahl an zugehörigen Knoten im gefilterten Baum gefunden! Betrachteter Knoten:\n{0}\n\t Anzahl der gefundenen zugehörigen Knoten im gefilterten Baum = {1}", node, nodes.Count); } bool isEqual = hf.compareToNodes(node, nodes[0]); if (!isEqual) { Assert.Fail("Der gefilterte Baum enthält den Knoten folgenden Knoten nicht:\n{0}", strategyMgr.getSpecifiedTree().GetData(node)); } } }
/// <summary> /// vergleicht einen 'vorhandenen' gespeicherten Baum mit einen gerade erstellten gespeicherten Baum /// </summary> public bool CompareToSavedFilteredTrees(String path1, String path2) { if (!File.Exists(@path1)) { Assert.Fail("Die Datei ({0}) existiert nicht!", path1); return(false); } if (!File.Exists(@path2)) { Assert.Fail("Die Datei ({0}) existiert nicht!", path2); return(false); } Object loadedTree1; Object loadedTree2; using (System.IO.FileStream fs = System.IO.File.Open(path1, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { loadedTree1 = strategyMgr.getSpecifiedTree().XmlDeserialize(fs); } using (System.IO.FileStream fs = System.IO.File.Open(path2, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { loadedTree2 = strategyMgr.getSpecifiedTree().XmlDeserialize(fs); } // if (loadedTree1.Equals(loadedTree2)) { return true; } else { return false; } --> geht nicht da boundingRectangle unterschiedlich sein kann String node1Id; HelpFunctions hf = new HelpFunctions(strategyMgr, grantTrees); foreach (Object node in strategyMgr.getSpecifiedTree().AllNodes(loadedTree1)) { node1Id = strategyMgr.getSpecifiedTree().GetData(node).properties.IdGenerated; List <Object> associatedNodeList = searchNodes.getNodeList(node1Id, loadedTree2); if (associatedNodeList.Count != 1) { Assert.Fail("Die Id '{0}' kommt mehr als ein mal oder keinmal in dem Baum ({1}) vor!", node1Id, path2); return(false); } OSMElements.OSMElement osm1 = strategyMgr.getSpecifiedTree().GetData(node); //bei Textfeldern kann sich der Text ändern if (osm1.properties.controlTypeFiltered.Equals("Text")) { osm1.properties.nameFiltered = ""; } osm1.properties.boundingRectangleFiltered = new Rect(); osm1.properties.appPath = null; strategyMgr.getSpecifiedTree().SetData(node, osm1); OSMElements.OSMElement osm2 = strategyMgr.getSpecifiedTree().GetData(associatedNodeList[0]); //bei Textfeldern kann sich der Text ändern if (osm2.properties.controlTypeFiltered.Equals("Text")) { osm2.properties.nameFiltered = ""; } osm2.properties.boundingRectangleFiltered = new Rect(); osm2.properties.appPath = null; strategyMgr.getSpecifiedTree().SetData(associatedNodeList[0], osm2); Assert.AreEqual(true, hf.compareToNodes(node, associatedNodeList[0]), "Die beiden knoten stimmen nicht überein!"); /* if (!strategyMgr.getSpecifiedTree().Equals(node, associatedNodeList[0])) * { * compareToNodes(node, associatedNodeList[0]); * Assert.Fail("Die folgenden beiden Knoten stimmen nicht überein:\n{0}\n{1}", node, associatedNodeList[0]); * return false; * }*/ } return(true); }