public ActionResult DoSumming(SummingModel model)
        {
            if (ModelState.IsValid)
            {
                bool hasErrors = false;
                RomanNumber leftOperand;
                RomanNumber rightOperand;

                if (!RomanNumber.TryParse(model.LeftOperand, out leftOperand))
                {
                    ModelState.AddModelError("LeftOperand", string.Format("'{0}' is not a valid Roman number", model.LeftOperand));
                    hasErrors = true;
                }

                if (!RomanNumber.TryParse(model.RightOperand, out rightOperand))
                {
                    ModelState.AddModelError("RightOperand", string.Format("'{0}' is not a valid Roman number", model.RightOperand));
                    hasErrors = true;
                }

                if (!hasErrors)
                {
                    Abacus abacus = new RomanAbacus(100); // Roman abacus wil be able to handle hundreds of thousands
                    ViewBag.SummingResult = abacus.PerformSumming(model.LeftOperand, model.RightOperand);
                }
            }

            InitSummingView();
            return View("Index", model);
        }
 public void PerformSumming_UsingInvalidRomanNumberAsRightOperand_ThrowsException()
 {
     const string leftOperand = "MMC";
     const string rightOperand = "12";
     RomanAbacus romanAbacus = new RomanAbacus(100);
     romanAbacus.PerformSumming(leftOperand, rightOperand);
 }
 public void PerformSumming_UsingValidRomanNumbers_ReturnsCorrectResult()
 {
     const string leftOperand = "MMC";
     const string rightOperand = "LX";
     RomanAbacus romanAbacus = new RomanAbacus(100);
     string actualResult = romanAbacus.PerformSumming(leftOperand, rightOperand);
     Assert.AreEqual("MMCLX", actualResult);
 }
 public void Constructor_UsingValidThousandThreshold_DoesNotThrowException([Values(1, 10)] int validThousandThreshold)
 {
     RomanAbacus romanAbacus = new RomanAbacus(validThousandThreshold);
 }
 public void Constructor_UsingInvalidThousandThreshold_ThrowsException([Values(-1, 0)] int invalidThousandThreshold)
 {
     RomanAbacus romanAbacus = new RomanAbacus(invalidThousandThreshold);
 }