Exemple #1
0
        public void Calculate_WithCustomParserThrowingHydraRingFileParserException_HydraRingCalculationExceptionThrown()
        {
            // Setup
            var parseException = new HydraRingFileParserException("message", new Exception());
            var parser         = new TestParser(parseException);
            var calculator     = new TestHydraRingCalculator(HydraRingCalculationSettingsTestFactory.CreateSettings(),
                                                             parser);

            // Call
            void Call() => calculator.PublicCalculate(new TestHydraRingCalculationInput());

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

            Assert.AreEqual(parseException.Message, exception.Message);
            Assert.AreSame(parseException.InnerException, exception.InnerException);
        }
        public void Calculate_ValidDesignWaterLevelCalculationThrowsException_ThrowsHydraRingFileParserException()
        {
            // Setup
            const string locationName = "locationName";

            var expectedException = new HydraRingFileParserException();

            var mockRepository = new MockRepository();
            var calculator     = mockRepository.Stub <IDesignWaterLevelCalculator>();

            calculator.Expect(c => c.Calculate(Arg <AssessmentLevelCalculationInput> .Is.TypeOf))
            .Throw(expectedException);
            calculator.Stub(c => c.LastErrorFileContent).Return(string.Empty);
            calculator.Stub(c => c.OutputDirectory).Return(string.Empty);

            var calculatorFactory = mockRepository.StrictMock <IHydraRingCalculatorFactory>();

            calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(null))
            .IgnoreArguments()
            .Return(calculator);

            var calculationMessageProvider = mockRepository.Stub <ICalculationMessageProvider>();

            calculationMessageProvider.Stub(mp => mp.GetCalculatedNotConvergedMessage(locationName)).Return(string.Empty);
            mockRepository.ReplayAll();

            var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(locationName));

            using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
            {
                // Call
                TestDelegate call = () => new DesignWaterLevelCalculationService().Calculate(hydraulicBoundaryLocationCalculation,
                                                                                             CreateCalculationSettings(),
                                                                                             1.0 / 30,
                                                                                             calculationMessageProvider);

                // Assert
                var thrownException = Assert.Throws <HydraRingFileParserException>(call);
                Assert.AreSame(expectedException, thrownException);
            }

            mockRepository.VerifyAll();
        }