public void GetAvailablePromotions_GetsAllPromotionsWithNoPrerequisites() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), BuildPrereqData(promotionThree, new List <IPromotion>() { BuildPromotion("") }), }); var promotionTree = new PromotionTree(treeData); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionOne, promotionTwo }, promotionTree.GetAvailablePromotions() ); }
public void GetAvailablePromotions_GetsPromotionsWithSomeChosenPrerequisite() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); var promotionFour = BuildPromotion("Promotion Four"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), BuildPrereqData(promotionThree, new List <IPromotion>() { promotionOne }), BuildPrereqData(promotionFour, new List <IPromotion>() { promotionOne, promotionTwo }), }); var promotionTree = new PromotionTree(treeData); promotionTree.ChoosePromotion(promotionOne); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionTwo, promotionThree, promotionFour }, promotionTree.GetAvailablePromotions() ); }
public void CanChoosePromotion_TrueIfPromotionIsAvailable() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), BuildPrereqData(promotionThree, new List <IPromotion>() { BuildPromotion("") }), }); var promotionTree = new PromotionTree(treeData); Assert.IsTrue( promotionTree.CanChoosePromotion(promotionOne), "CanChoosePromotion(promotionOne) returned an unexpected value" ); Assert.IsTrue( promotionTree.CanChoosePromotion(promotionTwo), "CanChoosePromotion(promotionTwo) returned an unexpected value" ); }
public void AllPromotions_ContainsAllChosenAndAppendedPromotions() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); BuildPromotion("Promotion Three"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), }); var promotionTree = new PromotionTree(treeData); promotionTree.ChoosePromotion(promotionOne); promotionTree.ChoosePromotion(promotionTwo); promotionTree.AppendPromotion(promotionThree); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionOne, promotionTwo, promotionThree }, promotionTree.GetAllPromotions() ); }
public void GetAvailablePromotions_ExcludesChosenPromotions() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), BuildPrereqData(promotionThree, new List <IPromotion>()), }); var promotionTree = new PromotionTree(treeData); promotionTree.ChoosePromotion(promotionOne); promotionTree.ChoosePromotion(promotionTwo); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionThree }, promotionTree.GetAvailablePromotions() ); }
public void AppendPromotion_PromotionsChangedEventFired() { var promotionOne = BuildPromotion("Promotion One"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>()); var promotionTree = new PromotionTree(treeData); promotionTree.PromotionsChanged += (sender, e) => Assert.Pass(); promotionTree.AppendPromotion(promotionOne); Assert.Fail("PromotionsChanged not fired"); }
public void GetAvailablePromotions_DrivenByPrerequisiteData() { var prerequisiteData = new List <IPromotionPrerequisiteData>() { BuildPrereqData(BuildPromotion("Promotion One"), new List <IPromotion>()), BuildPrereqData(BuildPromotion("Promotion Two"), new List <IPromotion>()), BuildPrereqData(BuildPromotion("Promotion Three"), new List <IPromotion>()), BuildPrereqData(BuildPromotion("Promotion Four"), new List <IPromotion>()), }; var promotionTree = new PromotionTree(BuildPromotionTreeData(prerequisiteData)); CollectionAssert.AreEquivalent( prerequisiteData.Select(data => data.Promotion), promotionTree.GetAvailablePromotions() ); }
public void GetAvailablePromotions_ExcludesPromotionsWithNoChosenPrerequisite() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var promotionThree = BuildPromotion("Promotion Three"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()), BuildPrereqData(promotionThree, new List <IPromotion>() { promotionOne }), }); var promotionTree = new PromotionTree(treeData); CollectionAssert.DoesNotContain(promotionTree.GetAvailablePromotions(), promotionThree); }
public void AppendPromotion_ReflectedInAppendedPromotions() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>()); var promotionTree = new PromotionTree(treeData); promotionTree.AppendPromotion(promotionOne); promotionTree.AppendPromotion(promotionTwo); promotionTree.AppendPromotion(promotionTwo); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionOne, promotionTwo, promotionTwo }, promotionTree.GetAppendedPromotions() ); }
public void ChoosePromotion_PromotionsChangedEventFired() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()) }); var promotionTree = new PromotionTree(treeData); promotionTree.PromotionsChanged += delegate(object sender, EventArgs e) { Assert.Pass(); }; promotionTree.ChoosePromotion(promotionOne); Assert.Fail("NewPromotionChosen was never fired"); }
public void ChoosePromotion_ReflectedInGetChosenPromotions() { var promotionOne = BuildPromotion("Promotion One"); var promotionTwo = BuildPromotion("Promotion Two"); var treeData = BuildPromotionTreeData(new List <IPromotionPrerequisiteData>() { BuildPrereqData(promotionOne, new List <IPromotion>()), BuildPrereqData(promotionTwo, new List <IPromotion>()) }); var promotionTree = new PromotionTree(treeData); promotionTree.ChoosePromotion(promotionOne); CollectionAssert.AreEquivalent( new List <IPromotion>() { promotionOne }, promotionTree.GetChosenPromotions() ); }