public void TestCanBeUnlockedRoundHouseKick_WithPartlyUnlockedParents() { var graphBuilderWarrior = new GraphBuilder(); var roundHouseKick = new SkillNode("Roundhouse Kick"); graphBuilderWarrior .AddBranchNode(new SkillNode("Warrior", true, true)) .AddBranchNode(new SkillNode("Strike")) .AddNode(new SkillNode("Double Strike")) .AddNodeFromClosestBranchNode(new SkillNode("Slash")) .AddNode(roundHouseKick) .AddNodeFromClosestBranchNode(new SkillNode("Hit")) .AddNode(new SkillNode("Knockout")) .AddNode(roundHouseKick); var root = graphBuilderWarrior.GetRoot(); root.Unlock(); var graphWalker = new GraphWalker(new LockMarkuper()); var strikeNode = graphBuilderWarrior.GetRoot().DependantNodes[0]; strikeNode.Unlock(); graphWalker.WalkThrough(root); var slashNode = strikeNode.DependantNodes[1]; slashNode.Unlock(); graphWalker.WalkThrough(root); Assert.AreEqual(false, slashNode.CanBeUnlocked()); }
public void TestUnlockFirstElement() { var graphBuilderWarrior = new GraphBuilder(); var roundHouseKick = new SkillNode("Roundhouse Kick"); graphBuilderWarrior .AddBranchNode(new SkillNode("Warrior", true, true)) .AddBranchNode(new SkillNode("Strike")) .AddNode(new SkillNode("Double Strike")) .AddNodeFromClosestBranchNode(new SkillNode("Slash")) .AddNode(roundHouseKick) .AddNodeFromClosestBranchNode(new SkillNode("Hit")) .AddNode(new SkillNode("Knockout")) .AddNode(roundHouseKick); var root = graphBuilderWarrior.GetRoot(); root.Unlock(); var graphWalker = new GraphWalker(new LockMarkuper()); graphWalker.WalkThrough(root); Assert.AreEqual(true, graphBuilderWarrior.GetRoot().DependantNodes[0].CanBeUnlocked()); Assert.AreEqual(true, graphBuilderWarrior.GetRoot().DependantNodes[1].CanBeUnlocked()); }