public void RequiresNumberArrayTotalerOnInitialise()
        {
            // Arrange
            INumberArrayTotaler totaler = null;

            // Act
            var validatingTotaler = new ValidatingNumberArrayTotaler(numberTotaler: totaler);
        }
        public void ImplementsINumberArrayTotaler()
        {
            // Arrange
            var validatingTotaler = new ValidatingNumberArrayTotaler(_numberTotaler);

            // Act

            // Assert
            Assert.IsTrue(validatingTotaler is INumberArrayTotaler);
        }
        public void TotalReturnsZeroWhenArrayIsEmpty()
        {
            // Arrange
            var expected = 0;
            var validatingTotaler = new ValidatingNumberArrayTotaler(_numberTotaler);

            // Act
            var actual = validatingTotaler.Total(new string[] { });

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TotalReturnsSumOfAllNumbersInArray()
        {
            // Arrange
            var expected = 6;
            var numbers = new string[] { "1", "2", "3" };
            var validatingTotaler = new ValidatingNumberArrayTotaler(_numberTotaler);

            // Act
            var actual = validatingTotaler.Total(numbers: numbers);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TotalIgnoresValuesGreaterThanOneThousandAndOne()
        {
            // Arrange
            var expected = 1;
            var numbers = new string[] { "1", "1001", "5000" };
            var validatingTotaler = new ValidatingNumberArrayTotaler(_numberTotaler);

            // Act
            var actual = validatingTotaler.Total(numbers: numbers);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TotalWithArrayContainingMinusOneTwoMinusThreeThrowsException()
        {
            // Arrange
            Exception expected = new Exception("Negatives not allowed: -1,-3");
            Exception actual = null;
            var totaler = new ValidatingNumberArrayTotaler(_numberTotaler);

            // Act
            try
            {
                var result = totaler.Total(new string[] { "-1", "2", "-3" });
            }
            catch (Exception ex)
            {
                actual = ex;
            }

            // Assert
            Assert.AreEqual(expected.Message, actual.Message);
        }