/// <summary> /// Process all data from the game: /// Call required parsing methods to process given data; /// Then call method to build the Frames List and set all the properties values accordingly. /// </summary> /// <param name="gameInput"></param> /// <param name="framesList"></param> /// <param name="maxFrameNumber"></param> /// <param name="startingPinsNumber"></param> public void ProcessGameData(string gameInput, List <Frame> framesList, int maxFrameNumber, int startingPinsNumber) { gameInput = gameInput.Trim(); GameInputParser _parser = new GameInputParser(); string framesSubstring = _parser.SplitGameInputString(gameInput).NormalFramesPart; string bonusSubsctring = _parser.SplitGameInputString(gameInput).BonusThrowsPart; List <string> framesStringsList = _parser.SplitFramesString(framesSubstring); ValidateGame(framesStringsList, maxFrameNumber); GameRepository _gamerepo = new GameRepository(); _gamerepo.BuildAllFramesForTheGame(framesStringsList, framesList, maxFrameNumber, startingPinsNumber, bonusSubsctring); }
public void BuildAllFramesForTheGame_InputDataIsNotDefined() { List <string> inputFrames = null; List <Frame> framesList = new List <Frame>(); int maxFrameNumber = 10; int startingPinsNumber = 10; string bonusString = "81"; try { GameRepository repo = new GameRepository(); repo.BuildAllFramesForTheGame(inputFrames, framesList, maxFrameNumber, startingPinsNumber, bonusString); } catch (ArgumentNullException) { return; } Assert.Fail("Call did NOT throw the NullReference Exception"); }
public void BuildAllFramesForTheGame_StartingPinsNumberIsString__ThrowArgumentException() { List <string> inputFrames = new List <string> { "5/", "5/", "5/", "5/", "5/", "5/", "5/", "5/", "5/", "5/" }; List <Frame> framesList = new List <Frame>(); int maxFrameNumber = 10; string bonusString = "5"; try { GameRepository repo = new GameRepository(); repo.BuildAllFramesForTheGame(inputFrames, framesList, maxFrameNumber, Convert.ToInt32("ten"), bonusString); } catch (FormatException) { return; } Assert.Fail("Call did NOT throw the Format Exception"); }
public void BuildAllFramesForTheGame_FramesListIsNull() { List <string> inputFrames = new List <string> { "X", "7/", "9-", "x", "-8", "8/", "-6", "x", "X", "X" }; List <Frame> framesList = null; int maxFrameNumber = 10; int startingPinsNumber = 10; string bonusString = "81"; try { GameRepository repo = new GameRepository(); repo.BuildAllFramesForTheGame(inputFrames, framesList, maxFrameNumber, startingPinsNumber, bonusString); } catch (ArgumentNullException) { return; } Assert.Fail("Call did NOT throw the ArgumentNullException"); }
public void BuildAllFramesForTheGame_BonusIsWhiteSpace() { List <string> inputFrames = new List <string> { "9-", "9-", "9-", "9-", "9-", "9-", "9-", "9-", "9-", "9-" }; List <Frame> framesList = new List <Frame>(); int maxFrameNumber = 10; int startingPinsNumber = 10; string bonusString = " "; try { GameRepository repo = new GameRepository(); repo.BuildAllFramesForTheGame(inputFrames, framesList, maxFrameNumber, startingPinsNumber, bonusString); return; } catch (Exception ex) { Assert.Fail(ex.Message); } }
public void BuildAllFramesForTheGame_AllCorrectValues() { List <string> inputFrames = new List <string> { "X", "7/", "9-", "x", "-8", "8/", "-6", "x", "X", "X" }; List <Frame> framesList = new List <Frame>(); int maxFrameNumber = 10; int startingPinsNumber = 10; string bonusString = "81"; try { GameRepository repo = new GameRepository(); repo.BuildAllFramesForTheGame(inputFrames, framesList, maxFrameNumber, startingPinsNumber, bonusString); return; } catch (Exception ex) { Assert.Fail(ex.Message); } }