예제 #1
0
        public void UpdateSectionsWithImportedData_WithValidData_UpdatesDataAndReturnsAffectedObjects()
        {
            // Setup
            var failureMechanism = new PipingFailureMechanism();
            var failureMechanismSectionUpdateStrategy = new PipingFailureMechanismSectionUpdateStrategy(
                failureMechanism, new AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy());
            string sourcePath = TestHelper.GetScratchPadPath();

            FailureMechanismSection[] sections =
            {
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection()
            };

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

            // Assert
            Assert.AreEqual(sourcePath, failureMechanism.FailureMechanismSectionSourcePath);
            Assert.AreEqual(sections.Single(), failureMechanism.Sections.Single());
            CollectionAssert.AreEqual(new IObservable[]
            {
                failureMechanism,
                failureMechanism.SectionResults,
                failureMechanism.ScenarioConfigurationsPerFailureMechanismSection
            }, affectedObjects);
        }
예제 #2
0
        public void Constructor_ExpectedValues()
        {
            // Call
            var updateStrategy = new PipingFailureMechanismSectionUpdateStrategy(
                new PipingFailureMechanism(), new AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy());

            // Assert
            Assert.IsInstanceOf <FailureMechanismSectionUpdateStrategy <AdoptableWithProfileProbabilityFailureMechanismSectionResult> >(updateStrategy);
        }
예제 #3
0
        public void DoPostUpdateActions_Always_ClearsAllProbabilisticOutputAndReturnsAffectedObjects()
        {
            // Setup
            var calculation1 = new ProbabilisticPipingCalculationScenario
            {
                Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints()
            };
            var calculation2 = new ProbabilisticPipingCalculationScenario
            {
                Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints()
            };
            var calculation3 = new SemiProbabilisticPipingCalculationScenario
            {
                Output = PipingTestDataGenerator.GetSemiProbabilisticPipingOutput(double.NaN, double.NaN, double.NaN)
            };

            var failureMechanism = new PipingFailureMechanism();

            failureMechanism.CalculationsGroup.Children.AddRange(new ICalculation[]
            {
                calculation1,
                calculation2,
                calculation3,
                new ProbabilisticPipingCalculationScenario()
            });

            var replaceStrategy = new PipingFailureMechanismSectionUpdateStrategy(failureMechanism, new AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy());

            // Call
            IEnumerable <IObservable> affectedObjects = replaceStrategy.DoPostUpdateActions();

            // Assert
            Assert.IsFalse(calculation1.HasOutput);
            Assert.IsFalse(calculation2.HasOutput);
            Assert.IsTrue(calculation3.HasOutput);
            CollectionAssert.AreEqual(new[]
            {
                calculation1,
                calculation2
            }, affectedObjects);
        }
예제 #4
0
        public void GivenFailureMechanismWithSections_WhenUpdateSectionsWithImportedData_ThenDataUpdatedAndReturnsAffectedObjects()
        {
            // Given
            var failureMechanism = new PipingFailureMechanism();
            var failureMechanismSectionUpdateStrategy = new PipingFailureMechanismSectionUpdateStrategy(
                failureMechanism, new AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy());

            FailureMechanismSection[] sections =
            {
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection(),
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[]
                {
                    new Point2D(1, 0),
                    new Point2D(3, 0)
                })
            };
            string sourcePath = TestHelper.GetScratchPadPath();

            failureMechanism.SetSections(sections, sourcePath);
            failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.First().ScenarioConfigurationType = PipingScenarioConfigurationPerFailureMechanismSectionType.Probabilistic;

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

            // Then
            CollectionAssert.AreEqual(new[]
            {
                PipingScenarioConfigurationPerFailureMechanismSectionType.Probabilistic,
                PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic
            }, failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.Select(sc => sc.ScenarioConfigurationType));
            CollectionAssert.AreEqual(new IObservable[]
            {
                failureMechanism,
                failureMechanism.SectionResults,
                failureMechanism.ScenarioConfigurationsPerFailureMechanismSection
            }, affectedObjects);
        }