public void Calculate_CalculatorHasMessages_CalculationMessagesSet()
        {
            // Setup
            var calculatorOutput = new MacroStabilityOutput
            {
                StabilityOutput = new StabilityOutput
                {
                    Messages  = new Message[0],
                    Succeeded = true
                },
                PreprocessingOutputBase = new UpliftVanPreprocessingOutput
                {
                    ForbiddenZone = new ForbiddenZones()
                }
            };

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

            calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
            var validator = mocks.Stub <IValidator>();

            mocks.ReplayAll();

            var kernel = new UpliftVanKernelWrapper(calculator, validator);

            // Call
            kernel.Calculate();

            // Assert
            Assert.AreSame(calculatorOutput.StabilityOutput.Messages, kernel.CalculationMessages);
            mocks.VerifyAll();
        }
Esempio n. 2
0
        private void SetResults(MacroStabilityOutput output)
        {
            FactorOfStability       = output.StabilityOutput.SafetyFactor;
            ForbiddenZonesXEntryMin = output.PreprocessingOutputBase.ForbiddenZone.XEntryMin;
            ForbiddenZonesXEntryMax = output.PreprocessingOutputBase.ForbiddenZone.XEntryMax;

            SlidingCurveResult             = (DualSlidingCircleMinimumSafetyCurve)output.StabilityOutput.MinimumSafetyCurve;
            UpliftVanCalculationGridResult = ((UpliftVanPreprocessingOutput)output.PreprocessingOutputBase).UpliftVanCalculationGrid;
        }
        public void Calculate_SuccessfulCalculation_OutputSet()
        {
            // Setup
            var random           = new Random(21);
            var calculatorOutput = new MacroStabilityOutput
            {
                StabilityOutput = new StabilityOutput
                {
                    Succeeded    = true,
                    SafetyFactor = random.NextDouble()
                },
                PreprocessingOutputBase = new UpliftVanPreprocessingOutput
                {
                    ForbiddenZone = new ForbiddenZones
                    {
                        XEntryMin = random.NextDouble(),
                        XEntryMax = random.NextDouble()
                    }
                }
            };

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

            calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
            var validator = mocks.Stub <IValidator>();

            mocks.ReplayAll();

            var kernel = new UpliftVanKernelWrapper(calculator, validator);

            // Call
            kernel.Calculate();

            // Assert
            Assert.AreEqual(calculatorOutput.StabilityOutput.SafetyFactor, kernel.FactorOfStability);
            Assert.AreEqual(calculatorOutput.PreprocessingOutputBase.ForbiddenZone.XEntryMin, kernel.ForbiddenZonesXEntryMin);
            Assert.AreEqual(calculatorOutput.PreprocessingOutputBase.ForbiddenZone.XEntryMax, kernel.ForbiddenZonesXEntryMax);

            Assert.AreSame((DualSlidingCircleMinimumSafetyCurve)calculatorOutput.StabilityOutput.MinimumSafetyCurve, kernel.SlidingCurveResult);
            Assert.AreSame(((UpliftVanPreprocessingOutput)calculatorOutput.PreprocessingOutputBase).UpliftVanCalculationGrid, kernel.UpliftVanCalculationGridResult);
            mocks.VerifyAll();
        }
Esempio n. 4
0
        public void Calculate()
        {
            try
            {
                MacroStabilityOutput output = calculator.Calculate();

                CalculationMessages = output.StabilityOutput.Messages ?? Enumerable.Empty <Message>();

                if (!output.StabilityOutput.Succeeded)
                {
                    throw new UpliftVanKernelWrapperException(CalculationMessages);
                }

                SetResults(output);
            }
            catch (Exception e) when(!(e is UpliftVanKernelWrapperException))
            {
                throw new UpliftVanKernelWrapperException(e.Message, e);
            }
        }
        public void Calculate_CalculationNotSuccessful_ThrowsUpliftVanKernelWrapperException()
        {
            // Setup
            var calculatorOutput = new MacroStabilityOutput
            {
                StabilityOutput = new StabilityOutput
                {
                    Succeeded = false,
                    Messages  = new[]
                    {
                        MessageHelper.CreateMessage(MessageType.Error, "Message 1"),
                        MessageHelper.CreateMessage(MessageType.Error, "Message 2")
                    }
                }
            };

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

            calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
            var validator = mocks.Stub <IValidator>();

            mocks.ReplayAll();

            var kernel = new UpliftVanKernelWrapper(calculator, validator);

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

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

            Assert.IsNull(exception.InnerException);
            Assert.AreEqual($"Exception of type '{typeof(UpliftVanKernelWrapperException)}' was thrown.", exception.Message);
            CollectionAssert.AreEqual(calculatorOutput.StabilityOutput.Messages, exception.Messages);

            mocks.VerifyAll();
        }