public EvaluateSupposedNumberTests() { _supposedNumber = BuildSupposedNumber(); _digitEvaluationResult = new Cow <object>(0, _supposedNumber.Digits.First()); _evaluateSupposedDigit = BuildMockEvaluateSupposedDigit(); _instance = BuildInstance(); }
public IEnumerable <IEvaluationResult> Execute(ISupposedNumber <TValue> parameter) { _distinctDigitsValidation.Execute(parameter); foreach (ISupposedDigit <TValue> supposedDigit in parameter.Digits) { yield return(_evaluateSupposedDigit.Execute(supposedDigit)); } }
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); }
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); } }
private IEnumerable <IEvaluationResult> Evaluate(ISupposedNumber <int> supposedNumber) { return(EvaluateSupposedNumber.Execute(supposedNumber).ToList()); }
public void Build_DoesNot_ReturnNull() { ISupposedNumber <int> actual = _instance.Build(); actual.ShouldNotBeNull(); }
public void WithInteger_DividedDigits_HaveRightIndexes() { ISupposedNumber <int> actual = _instance.WithInteger(_integer).Build(); DigitsAssert(actual, (actualDigit, expectedDigit) => actualDigit.Index.ShouldBe(expectedDigit.Index)); }