public void TestEasyCases() { SkillNode coldhearted = SkillTree.Skillnodes.Values.Where(n => n.Name == "Coldhearted Calculation").First(); SkillNode voidBarrier = SkillTree.Skillnodes.Values.Where(n => n.Name == "Void Barrier").First(); Tree._nodeHighlighter.ToggleHighlightNode(coldhearted, NodeHighlighter.HighlightState.Checked); Tree._nodeHighlighter.ToggleHighlightNode(voidBarrier, NodeHighlighter.HighlightState.Checked); Tree.Chartype = 6; // Shadow Tree.SkillAllTaggedNodes(); /// Obviously possible to break when tree changes, like most other tests. /// The correct value would be whatever is shown in the app + 1. Assert.IsTrue(Tree.SkilledNodes.Count == 15); Tree.Reset(); Tree._nodeHighlighter.UnhighlightAllNodes(NodeHighlighter.HighlightState.All); // Test if the optimal tree for this also uses all steiner nodes. SkillNode dynamo = SkillTree.Skillnodes.Values.Where(n => n.Name == "Dynamo").First(); SkillNode skittering = SkillTree.Skillnodes.Values.Where(n => n.Name == "Skittering Runes").First(); SkillNode equilibrium = SkillTree.Skillnodes.Values.Where(n => n.Name == "Elemental Equilibrium").First(); /*Tree._nodeHighlighter.ToggleHighlightNode(dynamo, NodeHighlighter.HighlightState.FromNode); Tree._nodeHighlighter.ToggleHighlightNode(skittering, NodeHighlighter.HighlightState.FromNode); Tree._nodeHighlighter.ToggleHighlightNode(innerForce, NodeHighlighter.HighlightState.FromNode); Tree._nodeHighlighter.ToggleHighlightNode(equilibrium, NodeHighlighter.HighlightState.FromNode);*/ HashSet<ushort> targetNodes = new HashSet<ushort>{ dynamo.Id, skittering.Id, equilibrium.Id }; Tree.Chartype = 0; // Scion SteinerSolver steiner = new SteinerSolver(Tree); // FIXME: Fix test. //steiner.constructSearchSpace(steiner.buildSearchGraph(targetNodes)); //steiner.findBestMst(); }
public OptimizerControllerWindow(SkillTree tree, HashSet<ushort> targetNodes) { InitializeComponent(); this.tree = tree; steinerSolver = new SteinerSolver(tree); this.targetNodes = targetNodes; initializationWorker.DoWork += initializationWorker_DoWork; initializationWorker.RunWorkerCompleted += initializationWorker_RunWorkerCompleted; solutionWorker.DoWork += solutionWorker_DoWork; solutionWorker.ProgressChanged += solutionWorker_ProgressChanged; solutionWorker.RunWorkerCompleted += solutionWorker_RunWorkerCompleted; solutionWorker.WorkerReportsProgress = true; solutionWorker.WorkerSupportsCancellation = true; }