public void DoesLoadGameStateThrowExceptionWhenDuplicateActionIdIsAdded() { var gameStateLoader = new GameStateLoader(); var elements = new List <Element>() { new Element() { Actions = new[] { new AwesomeRpg.Contracts.Models.RawXml.Action() { Id = "abc" } } }, new Element() { Actions = new[] { new AwesomeRpg.Contracts.Models.RawXml.Action() { Id = "abc" } } } }; //Act Assert.Throws <Exception>(() => gameStateLoader.LoadGameState(elements)); //Assert - expected exception }
private void LoadGameStateButton_Click(object sender, RoutedEventArgs e) { try { var loader = new XmlLoader(); var gameStateLoader = new GameStateLoader(); var rawGameState = loader.LoadXml(XmlTextBox.Text); var gameState = gameStateLoader.LoadGameState(rawGameState); App.GameContext.BuildGameContext(gameState); this.OnGameStateLoaded(); } catch (Exception ex) { MessageBox.Show(string.Format("An exception occurred loading the Game State. Exception: {0}", ex), "Exception", MessageBoxButton.OK, MessageBoxImage.Error); } }
public void DoesLoadGameStateThrowExceptionWhenDuplicateElementIdIsAddedInSameLevel() { var gameStateLoader = new GameStateLoader(); var elements = new List <Element>() { new Element() { Id = "abc" }, new Element() { Id = "abc" } }; //Act Assert.Throws <Exception>(() => gameStateLoader.LoadGameState(elements)); //Assert - expected exception }
public void DoesLoadGameStateWorkWithHappyPath() { //Arrange var gameStateLoader = new GameStateLoader(); var elements = new List <Element>() { new Element() { Id = "CoolGame", Elements = new[] { new Element() { Id = "Player", Elements = new[] { new Element() { Id = "Level", Value = "1" }, new Element() { Id = "XP", Value = "0" }, new Element() { Id = "HP", Value = "50" }, new Element() { Id = "Name", Value = "Bob" }, new Element() { Id = "Mode", Value = "" } }, Actions = new[] { new AwesomeRpg.Contracts.Models.RawXml.Action() { Id = "GainXP", Setters = new[] { new Setter() { Target = "XP", Operation = "+", Value = "10" } } }, new AwesomeRpg.Contracts.Models.RawXml.Action() { Id = "ClearHP", Setters = new[] { new Setter() { Target = "HP", Operation = "=", Value = "0" }, new Setter() { Target = "XP", Operation = "-", Value = "5" } } } }, Triggers = new[] { new Trigger() { Target = "XP", Comparison = ">=", Value = "10", Setters = new[] { new Setter() { Target = "Level", Operation = "=", Value = "2" }, new Setter() { Target = "Name", Operation = "=", Value = "Super Bob" } } }, new Trigger() { Target = "Name", Comparison = "==", Value = "Super Bob", Setters = new[] { new Setter() { Target = "Mode", Operation = "=", Value = "Superman Mode!" } } }, new Trigger() { Target = "Mode", Comparison = "==", Value = "Superman Mode!", Setters = new[] { new Setter() { Target = "Level", Operation = "=", Value = "3" } } } } } } } }; //Act var gameState = gameStateLoader.LoadGameState(elements); //Assert var coolGameElement = gameState[0]; Assert.AreEqual("CoolGame", coolGameElement.Id); Assert.AreEqual(1, coolGameElement.Elements.Count); var playerElement = coolGameElement.Elements[0]; Assert.AreEqual("Player", playerElement.Id); Assert.AreEqual(5, playerElement.Elements.Count); //GameConfig/Elements/CoolGame/Player/Action(GainXP) Assert.IsNotNull(playerElement.Actions); Assert.AreEqual("GainXP", playerElement.Actions[0].Id); Assert.IsNotNull(playerElement.Actions[0].Setters); //GameConfig/Elements/CoolGame/Player/Action/GainXP/Setters var gainXpActionSetters = playerElement.Actions[0].Setters; Assert.AreEqual(1, gainXpActionSetters.Count); Assert.AreEqual("XP", gainXpActionSetters[0].TargetId); Assert.AreEqual("+", gainXpActionSetters[0].Operation); Assert.AreEqual("10", gainXpActionSetters[0].Value); //GameConfig/Elements/CoolGame/Player/Action(ClearHP) Assert.IsNotNull(playerElement.Actions); Assert.AreEqual("ClearHP", playerElement.Actions[1].Id); Assert.IsNotNull(playerElement.Actions[1].Setters); //GameConfig/Elements/CoolGame/Player/Action/ClearHP/Setters var clearHpActionSetters = playerElement.Actions[1].Setters; Assert.AreEqual(2, clearHpActionSetters.Count); Assert.AreEqual("HP", clearHpActionSetters[0].TargetId); Assert.AreEqual("=", clearHpActionSetters[0].Operation); Assert.AreEqual("0", clearHpActionSetters[0].Value); Assert.AreEqual("XP", clearHpActionSetters[1].TargetId); Assert.AreEqual("-", clearHpActionSetters[1].Operation); Assert.AreEqual("5", clearHpActionSetters[1].Value); //GameConfig/Elements/CoolGame/Player/Trigger(XP) Assert.IsNotNull(playerElement.Triggers[0]); Assert.AreEqual("XP", playerElement.Triggers[0].TargetId); Assert.AreEqual(">=", playerElement.Triggers[0].Comparison); Assert.AreEqual("10", playerElement.Triggers[0].Value); Assert.IsNotNull(playerElement.Triggers[0].Setters); //GameConfig/Elements/CoolGame/Player/Trigger/XP/Setters var triggerXpSetters = playerElement.Triggers[0].Setters; Assert.AreEqual(2, triggerXpSetters.Count); Assert.AreEqual("Level", triggerXpSetters[0].TargetId); Assert.AreEqual("=", triggerXpSetters[0].Operation); Assert.AreEqual("2", triggerXpSetters[0].Value); Assert.AreEqual("Name", triggerXpSetters[1].TargetId); Assert.AreEqual("=", triggerXpSetters[1].Operation); Assert.AreEqual("Super Bob", triggerXpSetters[1].Value); //GameConfig/Elements/CoolGame/Player/Trigger(Name) Assert.IsNotNull(playerElement.Triggers[1]); Assert.AreEqual("Name", playerElement.Triggers[1].TargetId); Assert.AreEqual("==", playerElement.Triggers[1].Comparison); Assert.AreEqual("Super Bob", playerElement.Triggers[1].Value); Assert.IsNotNull(playerElement.Triggers[1].Setters); //GameConfig/Elements/CoolGame/Player/Trigger/Name/Setters var triggerNameSetters = playerElement.Triggers[1].Setters; Assert.AreEqual(1, triggerNameSetters.Count); Assert.AreEqual("Mode", triggerNameSetters[0].TargetId); Assert.AreEqual("=", triggerNameSetters[0].Operation); Assert.AreEqual("Superman Mode!", triggerNameSetters[0].Value); //GameConfig/Elements/CoolGame/Player/Trigger(Mode) Assert.IsNotNull(playerElement.Triggers[2]); Assert.AreEqual("Mode", playerElement.Triggers[2].TargetId); Assert.AreEqual("==", playerElement.Triggers[2].Comparison); Assert.AreEqual("Superman Mode!", playerElement.Triggers[2].Value); Assert.IsNotNull(playerElement.Triggers[2].Setters); //GameConfig/Elements/CoolGame/Player/Trigger/Mode/Setters var triggerModeSetters = playerElement.Triggers[2].Setters; Assert.AreEqual(1, triggerModeSetters.Count); Assert.AreEqual("Level", triggerModeSetters[0].TargetId); Assert.AreEqual("=", triggerModeSetters[0].Operation); Assert.AreEqual("3", triggerModeSetters[0].Value); //GameConfig/Elements/CoolGame/Player/Level Assert.IsNotNull(playerElement.Elements[0]); var levelElement = playerElement.Elements[0]; Assert.AreEqual("Level", levelElement.Id); Assert.AreEqual("1", levelElement.Value); //GameConfig/Elements/CoolGame/Player/XP Assert.IsNotNull(playerElement.Elements.Skip(1).First()); var xpElement = playerElement.Elements.Skip(1).First(); Assert.AreEqual("XP", xpElement.Id); Assert.AreEqual("0", xpElement.Value); //GameConfig/Elements/CoolGame/Player/HP Assert.IsNotNull(playerElement.Elements.Skip(2).First()); var hpElement = playerElement.Elements.Skip(2).First(); Assert.AreEqual("HP", hpElement.Id); Assert.AreEqual("50", hpElement.Value); }