public void UpdateInternalData_Always_UpdatesDataAndFiresEventsAndNotifiesObservers()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mocks.ReplayAll();

            FailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();

            sectionResult.Attach(observer);

            var row        = new TestFailureMechanismSectionResultRow(sectionResult);
            var rowUpdated = false;

            row.RowUpdated += (sender, args) => rowUpdated = true;

            var rowUpdateDone = false;

            row.RowUpdateDone += (sender, args) => rowUpdateDone = true;

            // Precondition
            Assert.IsFalse(row.Updated);

            // Call
            row.UpdateInternal();

            // Assert
            Assert.IsTrue(row.Updated);
            Assert.IsTrue(rowUpdated);
            Assert.IsTrue(rowUpdateDone);
            mocks.VerifyAll();
        }
Exemplo n.º 2
0
 private static FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider <GrassCoverErosionInwardsCalculationScenario> CreateErrorProvider(
     FailureMechanismSectionResult sectionResult, IEnumerable <GrassCoverErosionInwardsCalculationScenario> calculationScenarios)
 {
     return(new FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider <GrassCoverErosionInwardsCalculationScenario>(
                sectionResult, calculationScenarios,
                (scenario, lineSegments) => scenario.IsDikeProfileIntersectionWithReferenceLineInSection(lineSegments)));
 }
 private static FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider <StructuresCalculationScenario <TStructuresInput> > CreateErrorProvider(
     FailureMechanismSectionResult sectionResult, IEnumerable <StructuresCalculationScenario <TStructuresInput> > calculationScenarios)
 {
     return(new FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider <StructuresCalculationScenario <TStructuresInput> >(
                sectionResult, calculationScenarios,
                (scenario, lineSegments) => scenario.IsStructureIntersectionWithReferenceLineInSection(lineSegments)));
 }
 private static void SetCommonFailureMechanismSectionResultProperties(this IFailureMechanismSectionResultEntity entity,
                                                                      FailureMechanismSectionResult result)
 {
     entity.IsRelevant = Convert.ToByte(result.IsRelevant);
     entity.ManualInitialFailureMechanismResultSectionProbability = result.ManualInitialFailureMechanismResultSectionProbability.ToNaNAsNull();
     entity.FurtherAnalysisType       = Convert.ToByte(result.FurtherAnalysisType);
     entity.RefinedSectionProbability = result.RefinedSectionProbability.ToNaNAsNull();
 }
 private static void SetCommonFailureMechanismSectionResultProperties(this FailureMechanismSectionResult result,
                                                                      IFailureMechanismSectionResultEntity entity)
 {
     result.IsRelevant = Convert.ToBoolean(entity.IsRelevant);
     result.ManualInitialFailureMechanismResultSectionProbability = entity.ManualInitialFailureMechanismResultSectionProbability.ToNullAsNaN();
     result.FurtherAnalysisType       = (FailureMechanismSectionResultFurtherAnalysisType)entity.FurtherAnalysisType;
     result.RefinedSectionProbability = entity.RefinedSectionProbability.ToNullAsNaN();
 }
        public void Constructor_ExpectedValues()
        {
            // Setup
            FailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();

            // Call
            var row = new TestFailureMechanismSectionResultRow(sectionResult);

            // Assert
            Assert.IsInstanceOf <IHasColumnStateDefinitions>(row);
            Assert.AreEqual(sectionResult.Section.Name, row.Name);
            CollectionAssert.IsEmpty(row.ColumnStateDefinitions);
        }
        /// <summary>
        /// Gets the <see cref="PipingScenarioConfigurationPerFailureMechanismSection"/> for a given <see cref="FailureMechanismSectionResult"/>.
        /// </summary>
        /// <param name="failureMechanism">The <see cref="PipingFailureMechanism"/> that contains
        /// the <see cref="PipingScenarioConfigurationPerFailureMechanismSection"/>.</param>
        /// <param name="sectionResult">The <see cref="FailureMechanismSectionResult"/> to retrieve the
        /// <see cref="PipingScenarioConfigurationPerFailureMechanismSection"/> for.</param>
        /// <returns>The <see cref="PipingScenarioConfigurationPerFailureMechanismSection"/> belonging to the <paramref name="sectionResult"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when any argument is <c>null</c>.</exception>
        public static PipingScenarioConfigurationPerFailureMechanismSection GetScenarioConfigurationForSection(
            this PipingFailureMechanism failureMechanism,
            FailureMechanismSectionResult sectionResult)
        {
            if (failureMechanism == null)
            {
                throw new ArgumentNullException(nameof(failureMechanism));
            }

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

            return(failureMechanism.ScenarioConfigurationsPerFailureMechanismSection
                   .Single(sc => sc.Section.StartPoint.Equals(sectionResult.Section.StartPoint) &&
                           sc.Section.EndPoint.Equals(sectionResult.Section.EndPoint)));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Creates a new instance of <see cref="FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider{T}"/>.
        /// </summary>
        /// <param name="sectionResult">The <see cref="FailureMechanismSectionResult"/> to validate for.</param>
        /// <param name="calculationScenarios">The calculation scenarios to validate.</param>
        /// <param name="intersectionFunc">The function to determine whether a scenario is belonging
        /// to the given <paramref name="sectionResult"/>.</param>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        public FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider(FailureMechanismSectionResult sectionResult,
                                                                                      IEnumerable <ICalculationScenario> calculationScenarios,
                                                                                      Func <T, IEnumerable <Segment2D>, bool> intersectionFunc)
        {
            if (sectionResult == null)
            {
                throw new ArgumentNullException(nameof(sectionResult));
            }

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

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

            this.sectionResult        = sectionResult;
            this.calculationScenarios = calculationScenarios;
            this.intersectionFunc     = intersectionFunc;
        }
Exemplo n.º 9
0
        private IFailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider CreateErrorProvider(FailureMechanismSectionResult sectionResult)
        {
            PipingScenarioConfigurationPerFailureMechanismSection   scenarioConfigurationForSection = FailureMechanism.GetScenarioConfigurationForSection(sectionResult);
            IEnumerable <IPipingCalculationScenario <PipingInput> > calculationScenarios            = FailureMechanism.ScenarioConfigurationTypeIsSemiProbabilistic(scenarioConfigurationForSection)
                                                                                            ? (IEnumerable <IPipingCalculationScenario <PipingInput> >)FailureMechanism.Calculations.OfType <SemiProbabilisticPipingCalculationScenario>()
                                                                                            : FailureMechanism.Calculations.OfType <ProbabilisticPipingCalculationScenario>();

            return(new FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider <IPipingCalculationScenario <PipingInput> >(
                       sectionResult, calculationScenarios,
                       (scenario, lineSegments) => scenario.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)));
        }
Exemplo n.º 10
0
        public void UpdateSectionsWithImportedData_WithValidData_SetsSectionsToFailureMechanismAndCopiesPropertiesOfEqualSectionsAndReturnsAffectedObjects()
        {
            // Setup
            string sourcePath = TestHelper.GetScratchPadPath();

            var failureMechanism = new TestFailureMechanism();
            FailureMechanismSection failureMechanismSection1 = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[]
            {
                new Point2D(0.0, 0.0),
                new Point2D(5.0, 5.0)
            });
            FailureMechanismSection failureMechanismSection2 = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[]
            {
                new Point2D(5.0, 5.0),
                new Point2D(10.0, 10.0)
            });

            failureMechanism.SetSections(new[]
            {
                failureMechanismSection1,
                failureMechanismSection2
            }, sourcePath);

            IObservableEnumerable <FailureMechanismSectionResult> failureMechanismSectionResults = failureMechanism.SectionResults;
            FailureMechanismSectionResult oldSectionResult = failureMechanismSectionResults.First();

            var sectionResultUpdateStrategy           = new TestUpdateFailureMechanismSectionResultUpdateStrategy();
            var failureMechanismSectionUpdateStrategy = new FailureMechanismSectionUpdateStrategy <FailureMechanismSectionResult>(failureMechanism, sectionResultUpdateStrategy);

            FailureMechanismSection[] sections =
            {
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[]
                {
                    new Point2D(0.0, 0.0),
                    new Point2D(5.0, 5.0)
                }),
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[]
                {
                    new Point2D(5.0, 5.0),
                    new Point2D(15.0, 15.0)
                })
            };

            // Call
            IEnumerable <IObservable> affectedObjects = failureMechanismSectionUpdateStrategy.UpdateSectionsWithImportedData(sections, sourcePath);

            // Assert
            Assert.AreEqual(sourcePath, failureMechanism.FailureMechanismSectionSourcePath);

            IEnumerable <FailureMechanismSection> failureMechanismSections = failureMechanism.Sections;

            Assert.AreEqual(2, failureMechanismSections.Count());
            CollectionAssert.AreEqual(sections, failureMechanismSections);
            Assert.AreSame(oldSectionResult, sectionResultUpdateStrategy.Origin);
            Assert.AreSame(failureMechanismSectionResults.First(), sectionResultUpdateStrategy.Target);
            CollectionAssert.AreEqual(new IObservable[]
            {
                failureMechanism,
                failureMechanism.SectionResults
            }, affectedObjects);
        }