public EvaluateSupposedNumberTests()
 {
     _supposedNumber        = BuildSupposedNumber();
     _digitEvaluationResult = new Cow <object>(0, _supposedNumber.Digits.First());
     _evaluateSupposedDigit = BuildMockEvaluateSupposedDigit();
     _instance = BuildInstance();
 }
Beispiel #2
0
        public IEnumerable <IEvaluationResult> Execute(ISupposedNumber <TValue> parameter)
        {
            _distinctDigitsValidation.Execute(parameter);

            foreach (ISupposedDigit <TValue> supposedDigit in parameter.Digits)
            {
                yield return(_evaluateSupposedDigit.Execute(supposedDigit));
            }
        }
Beispiel #3
0
        private void DigitsAssert(ISupposedNumber <int> actual,
                                  Action <ISupposedDigit <int>, ISupposedDigit <int> > condition)
        {
            for (int index = 0; index < _expectedDigits.Count(); index++)
            {
                ISupposedDigit <int> expectedDigit = _expectedDigits.ElementAt(index);
                ISupposedDigit <int> actualDigit   = actual.Digits.ElementAt(index);

                condition(actualDigit, expectedDigit);
            }
        }
        public Unit Execute(ISupposedNumber <TValue> parameter)
        {
            IEnumerable <TValue> digits         = parameter.Digits.Select(instance => instance.Value).ToList();
            IEnumerable <TValue> distinctDigits = digits.Distinct();

            if (digits.Count() != distinctDigits.Count())
            {
                throw new Exception("All the digits from the supposed number should be distinct.");
            }

            return(Unit.Default);
        }
Beispiel #5
0
        private void TrySupposeOnce()
        {
            try
            {
                ISupposedNumber <int>           supposedNumber   = ReadSupposedNumber();
                IEnumerable <IEvaluationResult> evaluationResult = Evaluate(supposedNumber).ToList();

                _bullsCount = GetBullsCount(evaluationResult);
                int cowsCount = GetCowsCount(evaluationResult);

                PrintCowsCount(cowsCount);
                PrintBullsCount(_bullsCount);
            }
            catch (Exception exception)
            {
                System.Console.WriteLine(exception.Message);
            }
        }
Beispiel #6
0
 private IEnumerable <IEvaluationResult> Evaluate(ISupposedNumber <int> supposedNumber)
 {
     return(EvaluateSupposedNumber.Execute(supposedNumber).ToList());
 }
Beispiel #7
0
        public void Build_DoesNot_ReturnNull()
        {
            ISupposedNumber <int> actual = _instance.Build();

            actual.ShouldNotBeNull();
        }
Beispiel #8
0
        public void WithInteger_DividedDigits_HaveRightIndexes()
        {
            ISupposedNumber <int> actual = _instance.WithInteger(_integer).Build();

            DigitsAssert(actual, (actualDigit, expectedDigit) => actualDigit.Index.ShouldBe(expectedDigit.Index));
        }