public void Read_EntityWithOutput_ReturnsCalculationScenarioWithOutput()
        {
            // Setup
            var random       = new Random(31);
            var tangentLines = new RoundedDouble[0];
            var slices       = new MacroStabilityInwardsSlice[0];

            var calculationOutputEntity = new MacroStabilityInwardsCalculationOutputEntity
            {
                SlipPlaneTangentLinesXml = new TangentLineCollectionXmlSerializer().ToXml(tangentLines),
                SlidingCurveSliceXML     = new MacroStabilityInwardsSliceCollectionXmlSerializer().ToXml(slices),
                SlipPlaneLeftGridNrOfHorizontalPoints  = random.Next(1, 100),
                SlipPlaneLeftGridNrOfVerticalPoints    = random.Next(1, 100),
                SlipPlaneRightGridNrOfHorizontalPoints = random.Next(1, 100),
                SlipPlaneRightGridNrOfVerticalPoints   = random.Next(1, 100)
            };

            MacroStabilityInwardsCalculationEntity entity = CreateValidCalculationEntity();

            entity.MacroStabilityInwardsCalculationOutputEntities.Add(calculationOutputEntity);

            var collector = new ReadConversionCollector();

            // Call
            MacroStabilityInwardsCalculationScenario calculation = entity.Read(collector);

            // Assert
            MacroStabilityInwardsOutput output = calculation.Output;

            Assert.IsNotNull(output);
            MacroStabilityInwardsCalculationOutputEntityTestHelper.AssertOutputPropertyValues(output, calculationOutputEntity);
        }
コード例 #2
0
        private static void AssertSlipPlaneProperties(MacroStabilityInwardsSlipPlaneUpliftVan slipPlane,
                                                      MacroStabilityInwardsCalculationOutputEntity entity)
        {
            string expectedTangentLinesXml = new TangentLineCollectionXmlSerializer().ToXml(slipPlane.TangentLines);

            Assert.AreEqual(expectedTangentLinesXml, entity.SlipPlaneTangentLinesXml);

            MacroStabilityInwardsGrid leftGrid = slipPlane.LeftGrid;

            AssertAreEqual(leftGrid.XLeft, entity.SlipPlaneLeftGridXLeft);
            AssertAreEqual(leftGrid.XRight, entity.SlipPlaneLeftGridXRight);
            Assert.AreEqual(leftGrid.NumberOfHorizontalPoints, entity.SlipPlaneLeftGridNrOfHorizontalPoints);
            AssertAreEqual(leftGrid.ZTop, entity.SlipPlaneLeftGridZTop);
            AssertAreEqual(leftGrid.ZBottom, entity.SlipPlaneLeftGridZBottom);
            Assert.AreEqual(leftGrid.NumberOfVerticalPoints, entity.SlipPlaneLeftGridNrOfVerticalPoints);

            MacroStabilityInwardsGrid rightGrid = slipPlane.RightGrid;

            AssertAreEqual(rightGrid.XLeft, entity.SlipPlaneRightGridXLeft);
            AssertAreEqual(rightGrid.XRight, entity.SlipPlaneRightGridXRight);
            Assert.AreEqual(rightGrid.NumberOfHorizontalPoints, entity.SlipPlaneRightGridNrOfHorizontalPoints);
            AssertAreEqual(rightGrid.ZTop, entity.SlipPlaneRightGridZTop);
            AssertAreEqual(rightGrid.ZBottom, entity.SlipPlaneRightGridZBottom);
            Assert.AreEqual(rightGrid.NumberOfVerticalPoints, entity.SlipPlaneRightGridNrOfVerticalPoints);
        }
コード例 #3
0
        private static void SetSlidingCurveParametersToEntity(MacroStabilityInwardsCalculationOutputEntity entity,
                                                              MacroStabilityInwardsSlidingCurve slidingCurve)
        {
            entity.SlidingCurveSliceXML = new MacroStabilityInwardsSliceCollectionXmlSerializer().ToXml(slidingCurve.Slices);
            entity.SlidingCurveNonIteratedHorizontalForce = slidingCurve.NonIteratedHorizontalForce.ToNaNAsNull();
            entity.SlidingCurveIteratedHorizontalForce    = slidingCurve.IteratedHorizontalForce.ToNaNAsNull();

            MacroStabilityInwardsSlidingCircle leftCircle = slidingCurve.LeftCircle;

            entity.SlidingCurveLeftSlidingCircleCenterX          = leftCircle.Center.X.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleCenterY          = leftCircle.Center.Y.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleRadius           = leftCircle.Radius.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleIsActive         = Convert.ToByte(leftCircle.IsActive);
            entity.SlidingCurveLeftSlidingCircleNonIteratedForce = leftCircle.NonIteratedForce.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleIteratedForce    = leftCircle.IteratedForce.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleDrivingMoment    = leftCircle.DrivingMoment.ToNaNAsNull();
            entity.SlidingCurveLeftSlidingCircleResistingMoment  = leftCircle.ResistingMoment.ToNaNAsNull();

            MacroStabilityInwardsSlidingCircle rightCircle = slidingCurve.RightCircle;

            entity.SlidingCurveRightSlidingCircleCenterX          = rightCircle.Center.X.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleCenterY          = rightCircle.Center.Y.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleRadius           = rightCircle.Radius.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleIsActive         = Convert.ToByte(rightCircle.IsActive);
            entity.SlidingCurveRightSlidingCircleNonIteratedForce = rightCircle.NonIteratedForce.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleIteratedForce    = rightCircle.IteratedForce.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleDrivingMoment    = rightCircle.DrivingMoment.ToNaNAsNull();
            entity.SlidingCurveRightSlidingCircleResistingMoment  = rightCircle.ResistingMoment.ToNaNAsNull();
        }
コード例 #4
0
        private static MacroStabilityInwardsSlidingCurve ReadSlidingCurve(MacroStabilityInwardsCalculationOutputEntity entity)
        {
            var leftCircle = new MacroStabilityInwardsSlidingCircle(new Point2D(entity.SlidingCurveLeftSlidingCircleCenterX.ToNullAsNaN(),
                                                                                entity.SlidingCurveLeftSlidingCircleCenterY.ToNullAsNaN()),
                                                                    entity.SlidingCurveLeftSlidingCircleRadius.ToNullAsNaN(),
                                                                    Convert.ToBoolean(entity.SlidingCurveLeftSlidingCircleIsActive),
                                                                    entity.SlidingCurveLeftSlidingCircleNonIteratedForce.ToNullAsNaN(),
                                                                    entity.SlidingCurveLeftSlidingCircleIteratedForce.ToNullAsNaN(),
                                                                    entity.SlidingCurveLeftSlidingCircleDrivingMoment.ToNullAsNaN(),
                                                                    entity.SlidingCurveLeftSlidingCircleResistingMoment.ToNullAsNaN());

            var rightCircle = new MacroStabilityInwardsSlidingCircle(new Point2D(entity.SlidingCurveRightSlidingCircleCenterX.ToNullAsNaN(),
                                                                                 entity.SlidingCurveRightSlidingCircleCenterY.ToNullAsNaN()),
                                                                     entity.SlidingCurveRightSlidingCircleRadius.ToNullAsNaN(),
                                                                     Convert.ToBoolean(entity.SlidingCurveRightSlidingCircleIsActive),
                                                                     entity.SlidingCurveRightSlidingCircleNonIteratedForce.ToNullAsNaN(),
                                                                     entity.SlidingCurveRightSlidingCircleIteratedForce.ToNullAsNaN(),
                                                                     entity.SlidingCurveRightSlidingCircleDrivingMoment.ToNullAsNaN(),
                                                                     entity.SlidingCurveRightSlidingCircleResistingMoment.ToNullAsNaN());

            MacroStabilityInwardsSlice[] slices = new MacroStabilityInwardsSliceCollectionXmlSerializer().FromXml(entity.SlidingCurveSliceXML);
            return(new MacroStabilityInwardsSlidingCurve(leftCircle,
                                                         rightCircle,
                                                         slices,
                                                         entity.SlidingCurveNonIteratedHorizontalForce.ToNullAsNaN(),
                                                         entity.SlidingCurveIteratedHorizontalForce.ToNullAsNaN()));
        }
コード例 #5
0
        private static void AssertSlidingCurveProperties(MacroStabilityInwardsSlidingCurve slidingCurve,
                                                         MacroStabilityInwardsCalculationOutputEntity entity)
        {
            string expectedSlicesXml = new MacroStabilityInwardsSliceCollectionXmlSerializer().ToXml(slidingCurve.Slices);

            Assert.AreEqual(expectedSlicesXml, entity.SlidingCurveSliceXML);

            AssertAreEqual(slidingCurve.IteratedHorizontalForce, entity.SlidingCurveIteratedHorizontalForce);
            AssertAreEqual(slidingCurve.NonIteratedHorizontalForce, entity.SlidingCurveNonIteratedHorizontalForce);

            MacroStabilityInwardsSlidingCircle leftCircle = slidingCurve.LeftCircle;

            AssertAreEqual(leftCircle.Center.X, entity.SlidingCurveLeftSlidingCircleCenterX);
            AssertAreEqual(leftCircle.Center.Y, entity.SlidingCurveLeftSlidingCircleCenterY);
            AssertAreEqual(leftCircle.Radius, entity.SlidingCurveLeftSlidingCircleRadius);
            Assert.AreEqual(Convert.ToByte(leftCircle.IsActive), entity.SlidingCurveLeftSlidingCircleIsActive);
            AssertAreEqual(leftCircle.IteratedForce, entity.SlidingCurveLeftSlidingCircleIteratedForce);
            AssertAreEqual(leftCircle.NonIteratedForce, entity.SlidingCurveLeftSlidingCircleNonIteratedForce);
            AssertAreEqual(leftCircle.DrivingMoment, entity.SlidingCurveLeftSlidingCircleDrivingMoment);
            AssertAreEqual(leftCircle.ResistingMoment, entity.SlidingCurveLeftSlidingCircleResistingMoment);

            MacroStabilityInwardsSlidingCircle rightCircle = slidingCurve.RightCircle;

            AssertAreEqual(rightCircle.Center.X, entity.SlidingCurveRightSlidingCircleCenterX);
            AssertAreEqual(rightCircle.Center.Y, entity.SlidingCurveRightSlidingCircleCenterY);
            AssertAreEqual(rightCircle.Radius, entity.SlidingCurveRightSlidingCircleRadius);
            Assert.AreEqual(Convert.ToByte(rightCircle.IsActive), entity.SlidingCurveRightSlidingCircleIsActive);
            AssertAreEqual(rightCircle.IteratedForce, entity.SlidingCurveRightSlidingCircleIteratedForce);
            AssertAreEqual(rightCircle.NonIteratedForce, entity.SlidingCurveRightSlidingCircleNonIteratedForce);
            AssertAreEqual(rightCircle.DrivingMoment, entity.SlidingCurveRightSlidingCircleDrivingMoment);
            AssertAreEqual(rightCircle.ResistingMoment, entity.SlidingCurveRightSlidingCircleResistingMoment);
        }
        public void Read_EntityWithValues_ReturnExpectedOutput()
        {
            // Setup
            var random = new Random(21);
            IEnumerable <MacroStabilityInwardsSlice> slices = new[]
            {
                MacroStabilityInwardsSliceTestFactory.CreateSlice()
            };
            IEnumerable <RoundedDouble> tangentLines = new[]
            {
                new RoundedDouble(2, random.NextDouble())
            };

            var entity = new MacroStabilityInwardsCalculationOutputEntity
            {
                FactorOfStability       = random.NextDouble(),
                ForbiddenZonesXEntryMin = random.NextDouble(),
                ForbiddenZonesXEntryMax = random.NextDouble(),
                SlidingCurveSliceXML    = new MacroStabilityInwardsSliceCollectionXmlSerializer().ToXml(slices),
                SlidingCurveNonIteratedHorizontalForce         = random.NextDouble(),
                SlidingCurveIteratedHorizontalForce            = random.NextDouble(),
                SlidingCurveLeftSlidingCircleCenterX           = random.NextDouble(),
                SlidingCurveLeftSlidingCircleCenterY           = random.NextDouble(),
                SlidingCurveLeftSlidingCircleRadius            = random.NextDouble(),
                SlidingCurveLeftSlidingCircleIsActive          = Convert.ToByte(random.NextBoolean()),
                SlidingCurveLeftSlidingCircleNonIteratedForce  = random.NextDouble(),
                SlidingCurveLeftSlidingCircleIteratedForce     = random.NextDouble(),
                SlidingCurveLeftSlidingCircleDrivingMoment     = random.NextDouble(),
                SlidingCurveLeftSlidingCircleResistingMoment   = random.NextDouble(),
                SlidingCurveRightSlidingCircleCenterX          = random.NextDouble(),
                SlidingCurveRightSlidingCircleCenterY          = random.NextDouble(),
                SlidingCurveRightSlidingCircleRadius           = random.NextDouble(),
                SlidingCurveRightSlidingCircleIsActive         = Convert.ToByte(random.NextBoolean()),
                SlidingCurveRightSlidingCircleNonIteratedForce = random.NextDouble(),
                SlidingCurveRightSlidingCircleIteratedForce    = random.NextDouble(),
                SlidingCurveRightSlidingCircleDrivingMoment    = random.NextDouble(),
                SlidingCurveRightSlidingCircleResistingMoment  = random.NextDouble(),
                SlipPlaneTangentLinesXml = new TangentLineCollectionXmlSerializer().ToXml(tangentLines),
                SlipPlaneLeftGridXLeft   = random.NextDouble(0.0, 1.0),
                SlipPlaneLeftGridXRight  = random.NextDouble(2.0, 3.0),
                SlipPlaneLeftGridNrOfHorizontalPoints = random.Next(1, 100),
                SlipPlaneLeftGridZTop                  = random.NextDouble(2.0, 3.0),
                SlipPlaneLeftGridZBottom               = random.NextDouble(0.0, 1.0),
                SlipPlaneLeftGridNrOfVerticalPoints    = random.Next(1, 100),
                SlipPlaneRightGridXLeft                = random.NextDouble(0.0, 1.0),
                SlipPlaneRightGridXRight               = random.NextDouble(2.0, 3.0),
                SlipPlaneRightGridNrOfHorizontalPoints = random.Next(1, 100),
                SlipPlaneRightGridZTop                 = random.NextDouble(2.0, 3.0),
                SlipPlaneRightGridZBottom              = random.NextDouble(0.0, 1.0),
                SlipPlaneRightGridNrOfVerticalPoints   = random.Next(1, 100)
            };

            // Call
            MacroStabilityInwardsOutput output = entity.Read();

            // Assert
            MacroStabilityInwardsCalculationOutputEntityTestHelper.AssertOutputPropertyValues(output, entity);
        }
        private static void SetCalculationOutputsToScenario(MacroStabilityInwardsCalculationScenario calculationScenario,
                                                            MacroStabilityInwardsCalculationEntity entity)
        {
            MacroStabilityInwardsCalculationOutputEntity outputEntity = entity.MacroStabilityInwardsCalculationOutputEntities.SingleOrDefault();

            if (outputEntity != null)
            {
                calculationScenario.Output = outputEntity.Read();
            }
        }
        public void Create_WithNaNValues_ReturnsPropertyWithExpectedPropertiesSet()
        {
            // Setup
            MacroStabilityInwardsSlidingCircle leftCircle = CreateSlidingCircleWithNaNValues();
            MacroStabilityInwardsSlidingCircle rightCircle = CreateSlidingCircleWithNaNValues();
            var slidingCurve = new MacroStabilityInwardsSlidingCurve(leftCircle,
                                                                     rightCircle,
                                                                     new MacroStabilityInwardsSlice[0],
                                                                     double.NaN,
                                                                     double.NaN);

            var slipPlane = new MacroStabilityInwardsSlipPlaneUpliftVan(CreateGridWithNaNValues(),
                                                                        CreateGridWithNaNValues(),
                                                                        new RoundedDouble[0]);

            var output = new MacroStabilityInwardsOutput(slidingCurve, slipPlane, new MacroStabilityInwardsOutput.ConstructionProperties());

            // Call
            MacroStabilityInwardsCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.IsNotNull(entity);
            Assert.IsNull(entity.FactorOfStability);
            Assert.IsNull(entity.ForbiddenZonesXEntryMin);
            Assert.IsNull(entity.ForbiddenZonesXEntryMax);

            Assert.IsNull(entity.SlipPlaneLeftGridXLeft);
            Assert.IsNull(entity.SlipPlaneLeftGridXRight);
            Assert.IsNull(entity.SlipPlaneLeftGridZTop);
            Assert.IsNull(entity.SlipPlaneLeftGridZBottom);

            Assert.IsNull(entity.SlipPlaneRightGridXLeft);
            Assert.IsNull(entity.SlipPlaneRightGridXRight);
            Assert.IsNull(entity.SlipPlaneRightGridZTop);
            Assert.IsNull(entity.SlipPlaneRightGridZBottom);

            Assert.IsNull(entity.SlidingCurveIteratedHorizontalForce);
            Assert.IsNull(entity.SlidingCurveNonIteratedHorizontalForce);

            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleCenterX);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleCenterY);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleRadius);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleIteratedForce);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleNonIteratedForce);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleDrivingMoment);
            Assert.IsNull(entity.SlidingCurveLeftSlidingCircleResistingMoment);

            Assert.IsNull(entity.SlidingCurveRightSlidingCircleCenterX);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleCenterY);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleRadius);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleIteratedForce);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleNonIteratedForce);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleDrivingMoment);
            Assert.IsNull(entity.SlidingCurveRightSlidingCircleResistingMoment);
        }
        public void Read_EntityWithNullValues_ReturnExpectedOutputWithNaNValues()
        {
            // Setup
            MacroStabilityInwardsCalculationOutputEntity entity = CreateValidCalculationOutputEntity();

            // Call
            MacroStabilityInwardsOutput output = entity.Read();

            // Assert
            MacroStabilityInwardsCalculationOutputEntityTestHelper.AssertOutputPropertyValues(output, entity);
        }
        public void Read_SlidingCurveSliceXMLEmpty_ThrowsArgumentException()
        {
            // Setup
            MacroStabilityInwardsCalculationOutputEntity entity = CreateValidCalculationOutputEntity();

            entity.SlidingCurveSliceXML = string.Empty;

            // Call
            TestDelegate call = () => entity.Read();

            // Assert
            var exception = Assert.Throws <ArgumentException>(call);

            Assert.AreEqual("xml", exception.ParamName);
        }
コード例 #11
0
        /// <summary>
        /// Read the <see cref="MacroStabilityInwardsCalculationOutputEntity"/> and use the information to
        /// construct a <see cref="MacroStabilityInwardsOutput"/>.
        /// </summary>
        /// <param name="entity">The <see cref="MacroStabilityInwardsCalculationOutputEntity"/> to create
        /// <see cref="MacroStabilityInwardsOutput"/> for.</param>
        /// <returns>A new <see cref="MacroStabilityInwardsOutput"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="entity"/> is <c>null</c>.</exception>
        public static MacroStabilityInwardsOutput Read(this MacroStabilityInwardsCalculationOutputEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            MacroStabilityInwardsSlipPlaneUpliftVan slipPlane    = ReadSlipPlane(entity);
            MacroStabilityInwardsSlidingCurve       slidingCurve = ReadSlidingCurve(entity);

            return(new MacroStabilityInwardsOutput(slidingCurve, slipPlane, new MacroStabilityInwardsOutput.ConstructionProperties
            {
                FactorOfStability = entity.FactorOfStability.ToNullAsNaN(),
                ForbiddenZonesXEntryMax = entity.ForbiddenZonesXEntryMax.ToNullAsNaN(),
                ForbiddenZonesXEntryMin = entity.ForbiddenZonesXEntryMin.ToNullAsNaN()
            }));
        }
コード例 #12
0
        /// <summary>
        /// Creates a <see cref="MacroStabilityInwardsCalculationOutputEntity"/> based on the information
        /// of the <see cref="MacroStabilityInwardsOutput"/>.
        /// </summary>
        /// <param name="output">The calculation output for macro stability inwards failure mechanism to
        /// create a database entity for.</param>
        /// <returns>A new <see cref="MacroStabilityInwardsCalculationOutputEntity"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="output"/>
        /// is <c>null</c>.</exception>
        public static MacroStabilityInwardsCalculationOutputEntity Create(this MacroStabilityInwardsOutput output)
        {
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var entity = new MacroStabilityInwardsCalculationOutputEntity
            {
                FactorOfStability       = output.FactorOfStability.ToNaNAsNull(),
                ForbiddenZonesXEntryMin = output.ForbiddenZonesXEntryMin.ToNaNAsNull(),
                ForbiddenZonesXEntryMax = output.ForbiddenZonesXEntryMax.ToNaNAsNull()
            };

            SetSlidingCurveParametersToEntity(entity, output.SlidingCurve);
            SetSlipPlaneParametersToEntity(entity, output.SlipPlane);

            return(entity);
        }
        public void Create_HasMacroStabilityInwardsOutput_ReturnsEntityWithOutputEntity()
        {
            // Setup
            var scenario = new MacroStabilityInwardsCalculationScenario
            {
                Output = MacroStabilityInwardsOutputTestFactory.CreateOutput()
            };

            var registry = new PersistenceRegistry();

            // Call
            MacroStabilityInwardsCalculationEntity entity = scenario.Create(registry, 0);

            // Assert
            Assert.IsNotNull(entity);
            MacroStabilityInwardsCalculationOutputEntity outputEntity = entity.MacroStabilityInwardsCalculationOutputEntities.SingleOrDefault();

            Assert.IsNotNull(outputEntity);
            MacroStabilityInwardsCalculationOutputEntityTestHelper.AssertOutputPropertyValues(scenario.Output, outputEntity);
        }
コード例 #14
0
        /// <summary>
        /// Determines for each property of <paramref name="entity"/> whether the matching
        /// property of <paramref name="output"/> has an equal value.
        /// </summary>
        /// <param name="output">The <see cref="MacroStabilityInwardsOutput"/> to compare.</param>
        /// <param name="entity">The <see cref="MacroStabilityInwardsCalculationOutputEntity"/>
        /// to compare.</param>
        /// <exception cref="ArgumentNullException">Thrown if any of the argument is <c>null</c>.</exception>
        /// <exception cref="AssertionException">Thrown when any of the values of the
        /// <see cref="MacroStabilityInwardsOutput"/> and its nested elements do not match.
        /// </exception>
        public static void AssertOutputPropertyValues(MacroStabilityInwardsOutput output,
                                                      MacroStabilityInwardsCalculationOutputEntity entity)
        {
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            AssertAreEqual(output.FactorOfStability, entity.FactorOfStability);
            AssertAreEqual(output.ForbiddenZonesXEntryMin, entity.ForbiddenZonesXEntryMin);
            AssertAreEqual(output.ForbiddenZonesXEntryMax, entity.ForbiddenZonesXEntryMax);

            AssertSlidingCurveProperties(output.SlidingCurve, entity);
            AssertSlipPlaneProperties(output.SlipPlane, entity);
        }
        public void Create_WithValidValues_ReturnsEntityWithExpectedPropertiesSet()
        {
            // Setup
            var random = new Random(21);

            MacroStabilityInwardsSlidingCircle leftCircle = CreateSlidingCircle(13);
            MacroStabilityInwardsSlidingCircle rightCircle = CreateSlidingCircle(34);
            IEnumerable<MacroStabilityInwardsSlice> slices = new[]
            {
                MacroStabilityInwardsSliceTestFactory.CreateSlice()
            };
            var slidingCurve = new MacroStabilityInwardsSlidingCurve(leftCircle,
                                                                     rightCircle,
                                                                     slices,
                                                                     random.NextDouble(),
                                                                     random.NextDouble());

            MacroStabilityInwardsGrid leftGrid = MacroStabilityInwardsGridTestFactory.Create();
            MacroStabilityInwardsGrid rightGrid = MacroStabilityInwardsGridTestFactory.Create();
            RoundedDouble[] tangentLines =
            {
                random.NextRoundedDouble()
            };
            var slipPlane = new MacroStabilityInwardsSlipPlaneUpliftVan(leftGrid, rightGrid, tangentLines);

            var output = new MacroStabilityInwardsOutput(slidingCurve, slipPlane, new MacroStabilityInwardsOutput.ConstructionProperties
            {
                FactorOfStability = random.NextDouble(),
                ForbiddenZonesXEntryMax = random.NextDouble(),
                ForbiddenZonesXEntryMin = random.NextDouble()
            });

            // Call
            MacroStabilityInwardsCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.IsNotNull(entity);
            MacroStabilityInwardsCalculationOutputEntityTestHelper.AssertOutputPropertyValues(output, entity);
        }
コード例 #16
0
        private static void SetSlipPlaneParametersToEntity(MacroStabilityInwardsCalculationOutputEntity entity,
                                                           MacroStabilityInwardsSlipPlaneUpliftVan slipPlane)
        {
            entity.SlipPlaneTangentLinesXml = new TangentLineCollectionXmlSerializer().ToXml(slipPlane.TangentLines);

            MacroStabilityInwardsGrid leftGrid = slipPlane.LeftGrid;

            entity.SlipPlaneLeftGridXLeft  = leftGrid.XLeft.ToNaNAsNull();
            entity.SlipPlaneLeftGridXRight = leftGrid.XRight.ToNaNAsNull();
            entity.SlipPlaneLeftGridNrOfHorizontalPoints = leftGrid.NumberOfHorizontalPoints;
            entity.SlipPlaneLeftGridZTop               = leftGrid.ZTop.ToNaNAsNull();
            entity.SlipPlaneLeftGridZBottom            = leftGrid.ZBottom.ToNaNAsNull();
            entity.SlipPlaneLeftGridNrOfVerticalPoints = leftGrid.NumberOfVerticalPoints;

            MacroStabilityInwardsGrid rightGrid = slipPlane.RightGrid;

            entity.SlipPlaneRightGridXLeft  = rightGrid.XLeft.ToNaNAsNull();
            entity.SlipPlaneRightGridXRight = rightGrid.XRight.ToNaNAsNull();
            entity.SlipPlaneRightGridNrOfHorizontalPoints = rightGrid.NumberOfHorizontalPoints;
            entity.SlipPlaneRightGridZTop               = rightGrid.ZTop.ToNaNAsNull();
            entity.SlipPlaneRightGridZBottom            = rightGrid.ZBottom.ToNaNAsNull();
            entity.SlipPlaneRightGridNrOfVerticalPoints = rightGrid.NumberOfVerticalPoints;
        }
コード例 #17
0
        private static MacroStabilityInwardsSlipPlaneUpliftVan ReadSlipPlane(MacroStabilityInwardsCalculationOutputEntity entity)
        {
            var leftGrid = new MacroStabilityInwardsGrid(entity.SlipPlaneLeftGridXLeft.ToNullAsNaN(),
                                                         entity.SlipPlaneLeftGridXRight.ToNullAsNaN(),
                                                         entity.SlipPlaneLeftGridZTop.ToNullAsNaN(),
                                                         entity.SlipPlaneLeftGridZBottom.ToNullAsNaN())
            {
                NumberOfHorizontalPoints = entity.SlipPlaneLeftGridNrOfHorizontalPoints,
                NumberOfVerticalPoints   = entity.SlipPlaneLeftGridNrOfVerticalPoints
            };
            var rightGrid = new MacroStabilityInwardsGrid(entity.SlipPlaneRightGridXLeft.ToNullAsNaN(),
                                                          entity.SlipPlaneRightGridXRight.ToNullAsNaN(),
                                                          entity.SlipPlaneRightGridZTop.ToNullAsNaN(),
                                                          entity.SlipPlaneRightGridZBottom.ToNullAsNaN()
                                                          )
            {
                NumberOfHorizontalPoints = entity.SlipPlaneRightGridNrOfHorizontalPoints,
                NumberOfVerticalPoints   = entity.SlipPlaneRightGridNrOfVerticalPoints
            };

            RoundedDouble[] tangentLines = new TangentLineCollectionXmlSerializer().FromXml(entity.SlipPlaneTangentLinesXml);
            return(new MacroStabilityInwardsSlipPlaneUpliftVan(leftGrid, rightGrid, tangentLines));
        }