예제 #1
0
        /// <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);
        }
예제 #2
0
        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");
        }
예제 #3
0
        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");
        }
예제 #4
0
        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");
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        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);
            }
        }