public void Validate_ExceptionInWrappedKernel_ThrowsUpliftVanKernelWrapperException()
        {
            // Setup
            var exceptionToThrow = new Exception();

            var mocks      = new MockRepository();
            var calculator = mocks.Stub <ICalculator>();
            var validator  = mocks.Stub <IValidator>();

            validator.Stub(v => v.Validate()).Throw(exceptionToThrow);
            mocks.ReplayAll();

            var kernel = new UpliftVanKernelWrapper(calculator, validator);

            // Call
            void Call() => kernel.Validate();

            // Assert
            var exception = Assert.Throws <UpliftVanKernelWrapperException>(Call);

            Assert.AreSame(exceptionToThrow, exception.InnerException);
            Assert.AreEqual(exception.InnerException.Message, exception.Message);
        }
        public void Validate_ValidationCompleted_ReturnsValidationMessages()
        {
            // Setup
            var validationOutput = new ValidationOutput
            {
                Messages = new Message[0]
            };

            var mocks      = new MockRepository();
            var calculator = mocks.Stub <ICalculator>();
            var validator  = mocks.Stub <IValidator>();

            validator.Stub(v => v.Validate()).Return(validationOutput);
            mocks.ReplayAll();

            var kernel = new UpliftVanKernelWrapper(calculator, validator);

            // Call
            IEnumerable <Message> validationMessages = kernel.Validate();

            // Assert
            Assert.AreSame(validationOutput.Messages, validationMessages);
            mocks.VerifyAll();
        }