Esempio n. 1
0
        public void ItCreatesNullObjectCorrectly()
        {
            Score score = new NullScore();

            Assert.IsType <NullScore>(score);

            score.IncreaseScore(3);

            Assert.Equal(0, score.Number);

            score = new RealScore();

            score.IncreaseScore(3);

            Assert.Equal(3, score.Number);
        }
Esempio n. 2
0
        /// <summary>
        /// Allows delimiter: / or :
        /// </summary>
        /// <param name="score"></param>
        /// <returns></returns>
        public Score Parse(string score)
        {
            var nullScore = new NullScore();

            if (string.IsNullOrEmpty(score))
            {
                return(nullScore);
            }
            score = score.Replace(" ", "");

            // All possible delimiters
            Stack <string> delimiters = new Stack <string>();

            delimiters.Push("/");
            delimiters.Push(":");
            delimiters.Push("-");

            var delimiter = delimiters.Pop();

            while (score.IndexOf(delimiter) < 0)
            {
                if (delimiters.Count == 0)
                {
                    return(nullScore);
                }

                delimiter = delimiters.Pop();
            }

            var scores = score.Split(delimiter.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            if (scores.Length < 2)
            {
                // invalid score
                return(nullScore);
            }

            var homeScore = -1;
            var awayScore = -1;

            int.TryParse(scores[0].Trim(), out homeScore);
            int.TryParse(scores[1].Trim(), out awayScore);

            return(new Score(homeScore, awayScore));
        }