예제 #1
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var random = new Random(21);
            MacroStabilityInwardsSlidingCircle rightCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();
            MacroStabilityInwardsSlidingCircle leftCircle  = MacroStabilityInwardsSlidingCircleTestFactory.Create();

            MacroStabilityInwardsSlice[] slices =
            {
                MacroStabilityInwardsSliceTestFactory.CreateSlice()
            };

            double nonIteratedHorizontalForce = random.NextDouble();
            double iteratedHorizontalForce    = random.NextDouble();

            // Call
            var curve = new MacroStabilityInwardsSlidingCurve(leftCircle, rightCircle, slices, nonIteratedHorizontalForce, iteratedHorizontalForce);

            // Assert
            Assert.IsInstanceOf <ICloneable>(curve);

            Assert.AreSame(leftCircle, curve.LeftCircle);
            Assert.AreSame(rightCircle, curve.RightCircle);
            Assert.AreEqual(nonIteratedHorizontalForce, curve.NonIteratedHorizontalForce);
            Assert.AreEqual(iteratedHorizontalForce, curve.IteratedHorizontalForce);
            Assert.AreSame(slices, curve.Slices);
        }
        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();
        }
예제 #3
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()));
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random           = new Random(11);
            var    center           = new Point2D(random.NextDouble(), random.NextDouble());
            double radius           = random.NextDouble();
            bool   isActive         = random.NextBoolean();
            double nonIteratedForce = random.NextDouble();
            double iteratedForce    = random.NextDouble();
            double drivingMoment    = random.NextDouble();
            double resistingMoment  = random.NextDouble();

            // Call
            var circle = new MacroStabilityInwardsSlidingCircle(center, radius, isActive, nonIteratedForce, iteratedForce, drivingMoment, resistingMoment);

            // Assert
            Assert.IsInstanceOf <ICloneable>(circle);

            Assert.AreEqual(center, circle.Center);
            Assert.AreEqual(radius, circle.Radius);
            Assert.AreEqual(isActive, circle.IsActive);
            Assert.AreEqual(nonIteratedForce, circle.NonIteratedForce);
            Assert.AreEqual(iteratedForce, circle.IteratedForce);
            Assert.AreEqual(drivingMoment, circle.DrivingMoment);
            Assert.AreEqual(resistingMoment, circle.ResistingMoment);
        }
예제 #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);
        }
 private static void AssertCircle(UpliftVanSlidingCircleResult circleResult, MacroStabilityInwardsSlidingCircle circleOutput)
 {
     Assert.AreEqual(circleResult.Center, circleOutput.Center);
     Assert.AreEqual(circleResult.IsActive, circleOutput.IsActive);
     Assert.AreEqual(circleResult.Radius, circleOutput.Radius);
     Assert.AreEqual(circleResult.DrivingMoment, circleOutput.DrivingMoment);
     Assert.AreEqual(circleResult.ResistingMoment, circleOutput.ResistingMoment);
     Assert.AreEqual(circleResult.IteratedForce, circleOutput.IteratedForce);
     Assert.AreEqual(circleResult.NonIteratedForce, circleOutput.NonIteratedForce);
 }
        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);
        }
 /// <summary>
 /// Method that asserts whether <paramref name="original"/> and <paramref name="clone"/>
 /// are clones.
 /// </summary>
 /// <param name="original">The original object.</param>
 /// <param name="clone">The cloned object.</param>
 /// <exception cref="AssertionException">Thrown when <paramref name="original"/> and
 /// <paramref name="clone"/> are not clones.</exception>
 public static void AreClones(MacroStabilityInwardsSlidingCircle original,
                              MacroStabilityInwardsSlidingCircle clone)
 {
     CoreCloneAssert.AreObjectClones(original.Center, clone.Center, GeometryCloneAssert.AreClones);
     Assert.AreEqual(original.Radius, clone.Radius);
     Assert.AreEqual(original.IsActive, clone.IsActive);
     Assert.AreEqual(original.NonIteratedForce, clone.NonIteratedForce);
     Assert.AreEqual(original.IteratedForce, clone.IteratedForce);
     Assert.AreEqual(original.DrivingMoment, clone.DrivingMoment);
     Assert.AreEqual(original.ResistingMoment, clone.ResistingMoment);
 }
        /// <summary>
        /// Asserts whether <paramref name="actual"/> corresponds to <paramref name="startingPoint"/>
        /// and <paramref name="slidingCircle"/>.
        /// </summary>
        /// <param name="startingPoint">The point to use for the start of the line</param>
        /// <param name="slidingCircle">The circle to use for the end of the line.</param>
        /// <param name="actual">The actual <see cref="ChartLineData"/>.</param>
        /// <exception cref="AssertionException">Thrown when <paramref name="actual"/>
        /// does not correspond to the specified start and end points.</exception>
        private static void AssertCircleRadiusChartData(Point2D startingPoint,
                                                        MacroStabilityInwardsSlidingCircle slidingCircle,
                                                        ChartLineData actual)
        {
            Point2D[] points =
            {
                slidingCircle.Center,
                startingPoint
            };

            CollectionAssert.AreEqual(points, actual.Points);
        }
예제 #10
0
        /// <summary>
        /// Converts <see cref="UpliftVanSlidingCurveResult"/>
        /// into <see cref="MacroStabilityInwardsSlidingCurve"/>.
        /// </summary>
        /// <param name="result">The result to convert.</param>
        /// <returns>The converted <see cref="MacroStabilityInwardsSlidingCurve"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="result"/>
        /// is <c>null</c>.</exception>
        public static MacroStabilityInwardsSlidingCurve Convert(UpliftVanSlidingCurveResult result)
        {
            if (result == null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            MacroStabilityInwardsSlidingCircle       leftCircle  = ConvertCircle(result.LeftCircle);
            MacroStabilityInwardsSlidingCircle       rightCircle = ConvertCircle(result.RightCircle);
            IEnumerable <MacroStabilityInwardsSlice> slices      = ConvertSlices(result.Slices);

            return(new MacroStabilityInwardsSlidingCurve(leftCircle, rightCircle, slices, result.NonIteratedHorizontalForce, result.IteratedHorizontalForce));
        }
예제 #11
0
        public void Constructor_SlicesNull_ThrowsArgumentNullException()
        {
            // Setup
            MacroStabilityInwardsSlidingCircle circle = MacroStabilityInwardsSlidingCircleTestFactory.Create();

            // Call
            TestDelegate call = () => new MacroStabilityInwardsSlidingCurve(circle, circle, null, 0, 0);

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

            Assert.AreEqual("slices", exception.ParamName);
        }
예제 #12
0
        public void Constructor_RightCircleNull_ThrowsArgumentNullException()
        {
            // Setup
            MacroStabilityInwardsSlidingCircle leftCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();

            // Call
            TestDelegate call = () => new MacroStabilityInwardsSlidingCurve(leftCircle, null, Enumerable.Empty <MacroStabilityInwardsSlice>(), 0, 0);

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

            Assert.AreEqual("rightCircle", exception.ParamName);
        }
예제 #13
0
        public void Clone_Always_ReturnNewInstanceWithCopiedValues()
        {
            // Setup
            var random = new Random(21);
            MacroStabilityInwardsSlidingCircle rightCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();
            MacroStabilityInwardsSlidingCircle leftCircle  = MacroStabilityInwardsSlidingCircleTestFactory.Create();

            MacroStabilityInwardsSlice[] slices =
            {
                MacroStabilityInwardsSliceTestFactory.CreateSlice()
            };
            var original = new MacroStabilityInwardsSlidingCurve(leftCircle, rightCircle, slices, random.NextDouble(), random.NextDouble());

            // Call
            object clone = original.Clone();

            // Assert
            CoreCloneAssert.AreObjectClones(original, clone, MacroStabilityInwardsCloneAssert.AreClones);
        }
        public void Clone_Always_ReturnNewInstanceWithCopiedValues()
        {
            // Setup
            var random   = new Random(11);
            var center   = new Point2D(random.NextDouble(), random.NextDouble());
            var original = new MacroStabilityInwardsSlidingCircle(center,
                                                                  random.NextDouble(),
                                                                  random.NextBoolean(),
                                                                  random.NextDouble(),
                                                                  random.NextDouble(),
                                                                  random.NextDouble(),
                                                                  random.NextDouble());

            // Call
            object clone = original.Clone();

            // Assert
            CoreCloneAssert.AreObjectClones(original, clone, MacroStabilityInwardsCloneAssert.AreClones);
        }
        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);
        }