Esempio n. 1
0
        public void Constructor_WithFurtherAnalysisType_ExpectedColumnStates(FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType,
                                                                             bool expectedDisabled)
        {
            // Setup
            var mocks         = new MockRepository();
            var errorProvider = mocks.Stub <IFailureMechanismSectionResultRowErrorProvider>();

            errorProvider.Stub(ep => ep.GetManualProbabilityValidationError(double.NaN))
            .IgnoreArguments()
            .Return(string.Empty);
            mocks.ReplayAll();

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var result = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(section)
            {
                FurtherAnalysisType = furtherAnalysisType
            };

            Func <FailureMechanismSectionAssemblyResultWrapper> performAssemblyFunc = FailureMechanismSectionAssemblyResultWrapperTestFactory.Create;

            // Call
            var row = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResultRow(result, errorProvider, performAssemblyFunc, ConstructionProperties);

            // Assert
            IDictionary <int, DataGridViewColumnStateDefinition> columnStateDefinitions = row.ColumnStateDefinitions;

            DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState(
                columnStateDefinitions[ConstructionProperties.RefinedProfileProbabilityIndex], expectedDisabled);
            DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState(
                columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], expectedDisabled);

            mocks.VerifyAll();
        }
Esempio n. 2
0
        public void ConvertFailureMechanismSectionResultFurtherAnalysisType_ValidFailureMechanismSectionResultFurtherAnalysisType_ReturnsExpectedRefinementStatus(
            FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType, ERefinementStatus expectedRefinementStatus)
        {
            // Call
            ERefinementStatus refinementStatus = FailureMechanismSectionAssemblyCalculatorInputCreator.ConvertFailureMechanismSectionResultFurtherAnalysisType(furtherAnalysisType);

            // Assert
            Assert.AreEqual(expectedRefinementStatus, refinementStatus);
        }
Esempio n. 3
0
        public void FurtherAnalysisType_SetNewValue_NotifyObserversAndPropertyChanged()
        {
            const FailureMechanismSectionResultFurtherAnalysisType newValue = FailureMechanismSectionResultFurtherAnalysisType.Necessary;

            Property_SetNewValue_NotifyObserversAndPropertyChanged(
                row => row.FurtherAnalysisType = newValue,
                result => result.FurtherAnalysisType,
                newValue);
        }
Esempio n. 4
0
 /// <summary>
 /// Creates a new instance of <see cref="FailureMechanismSectionWithProfileProbabilityAssemblyInput"/>.
 /// </summary>
 /// <param name="maximumAllowableFloodingProbability">The maximum allowable flooding probability.</param>
 /// <param name="signalFloodingProbability">The signal flooding probability.</param>
 /// <param name="isRelevant">The indicator whether the section is relevant.</param>
 /// <param name="hasProbabilitySpecified">Indicator whether the section has a probability specified.</param>
 /// <param name="initialProfileProbability">The initial probability for the profile.</param>
 /// <param name="initialSectionProbability">The initial probability for the section.</param>
 /// <param name="furtherAnalysisType">The <see cref="FailureMechanismSectionResultFurtherAnalysisType"/>.</param>
 /// <param name="refinedProfileProbability">The refined probability for the profile.</param>
 /// <param name="refinedSectionProbability">The refined probability for the section.</param>
 public FailureMechanismSectionWithProfileProbabilityAssemblyInput(double maximumAllowableFloodingProbability, double signalFloodingProbability,
                                                                   bool isRelevant, bool hasProbabilitySpecified,
                                                                   double initialProfileProbability, double initialSectionProbability,
                                                                   FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType,
                                                                   double refinedProfileProbability, double refinedSectionProbability)
     : base(maximumAllowableFloodingProbability, signalFloodingProbability, isRelevant, hasProbabilitySpecified, initialSectionProbability, furtherAnalysisType, refinedSectionProbability)
 {
     InitialProfileProbability = initialProfileProbability;
     RefinedProfileProbability = refinedProfileProbability;
 }
        private static FailureMechanismSectionAssemblyInput CreateInput(
            IAssessmentSection assessmentSection, bool isRelevant, double initialSectionProbability,
            FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType,
            double refinedSectionProbability, bool hasProbabilitySpecified)
        {
            FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;

            return(new FailureMechanismSectionAssemblyInput(
                       failureMechanismContribution.MaximumAllowableFloodingProbability, failureMechanismContribution.SignalFloodingProbability,
                       isRelevant, hasProbabilitySpecified, initialSectionProbability, furtherAnalysisType, refinedSectionProbability));
        }
Esempio n. 6
0
        public void ConvertFailureMechanismSectionResultFurtherAnalysisType_InvalidFailureMechanismSectionResultFurtherAnalysisType_ThrowsInvalidEnumArgumentException()
        {
            // Setup
            const FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType = (FailureMechanismSectionResultFurtherAnalysisType)99;

            // Call
            void Call() => FailureMechanismSectionAssemblyCalculatorInputCreator.ConvertFailureMechanismSectionResultFurtherAnalysisType(furtherAnalysisType);

            // Assert
            var expectedMessage = $"The value of argument 'furtherAnalysisType' ({furtherAnalysisType}) is invalid for Enum type '{nameof(FailureMechanismSectionResultFurtherAnalysisType)}'.";

            TestHelper.AssertThrowsArgumentExceptionAndTestMessage <InvalidEnumArgumentException>(Call, expectedMessage);
        }
        /// <summary>
        /// Creates a new instance of <see cref="FailureMechanismSectionAssemblyInput"/>.
        /// </summary>
        /// <param name="maximumAllowableFloodingProbability">The maximum allowable flooding probability.</param>
        /// <param name="signalFloodingProbability">The signal flooding probability.</param>
        /// <param name="isRelevant">The indicator whether the section is relevant.</param>
        /// <param name="hasProbabilitySpecified">Indicator whether the section has a probability specified.</param>
        /// <param name="initialSectionProbability">The initial probability for the section.</param>
        /// <param name="furtherAnalysisType">The <see cref="FailureMechanismSectionResultFurtherAnalysisType"/>.</param>
        /// <param name="refinedSectionProbability">The refined probability for the section.</param>
        public FailureMechanismSectionAssemblyInput(double maximumAllowableFloodingProbability, double signalFloodingProbability,
                                                    bool isRelevant, bool hasProbabilitySpecified,
                                                    double initialSectionProbability,
                                                    FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType,
                                                    double refinedSectionProbability)
        {
            MaximumAllowableFloodingProbability = maximumAllowableFloodingProbability;
            SignalFloodingProbability           = signalFloodingProbability;

            IsRelevant = isRelevant;
            HasProbabilitySpecified   = hasProbabilitySpecified;
            InitialSectionProbability = initialSectionProbability;
            FurtherAnalysisType       = furtherAnalysisType;
            RefinedSectionProbability = refinedSectionProbability;
        }
        private static FailureMechanismSectionWithProfileProbabilityAssemblyInput CreateInput(
            IAssessmentSection assessmentSection,
            bool isRelevant, AdoptableInitialFailureMechanismResultType initialFailureMechanismResultType,
            double initialProfileProbability, double initialSectionProbability,
            FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType,
            double refinedProfileProbability, double refinedSectionProbability,
            ProbabilityRefinementType probabilityRefinementType, double sectionN)
        {
            if (probabilityRefinementType == ProbabilityRefinementType.Profile)
            {
                refinedSectionProbability = Math.Min(1.0, refinedProfileProbability * sectionN);
            }

            if (probabilityRefinementType == ProbabilityRefinementType.Section)
            {
                refinedProfileProbability = refinedSectionProbability / sectionN;
            }

            bool hasProbabilitySpecified = initialFailureMechanismResultType != AdoptableInitialFailureMechanismResultType.NoFailureProbability;

            return(CreateInput(assessmentSection, isRelevant, hasProbabilitySpecified,
                               initialProfileProbability, initialSectionProbability,
                               furtherAnalysisType, refinedProfileProbability, refinedSectionProbability));
        }
Esempio n. 9
0
        public void GivenRowWithFurtherAnalysisNotExecuted_WhenErrorProviderReturnsError_ThenShowsNoError(FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType)
        {
            // Given
            var    random             = new Random(21);
            double profileProbability = random.NextDouble();
            double sectionProbability = profileProbability + 0.1;

            var mocks         = new MockRepository();
            var errorProvider = mocks.StrictMock <IFailureMechanismSectionResultRowErrorProvider>();

            errorProvider.Stub(ep => ep.GetManualProbabilityValidationError(double.NaN))
            .IgnoreArguments()
            .Return("error");
            mocks.ReplayAll();

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var result = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(section)
            {
                InitialFailureMechanismResultType = NonAdoptableInitialFailureMechanismResultType.NoFailureProbability,
                FurtherAnalysisType       = furtherAnalysisType,
                RefinedProfileProbability = profileProbability,
                RefinedSectionProbability = sectionProbability
            };

            Func <FailureMechanismSectionAssemblyResultWrapper> performAssemblyFunc = FailureMechanismSectionAssemblyResultWrapperTestFactory.Create;

            // When
            var row = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResultRow(result, errorProvider, performAssemblyFunc, ConstructionProperties);

            // Then
            IDictionary <int, DataGridViewColumnStateDefinition> columnStateDefinitions = row.ColumnStateDefinitions;

            Assert.IsEmpty(columnStateDefinitions[ConstructionProperties.RefinedProfileProbabilityIndex].ErrorText);
            Assert.IsEmpty(columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText);

            mocks.VerifyAll();
        }
Esempio n. 10
0
        /// <summary>
        /// Converts a <see cref="FailureMechanismSectionResultFurtherAnalysisType"/> into an
        /// <see cref="ERefinementStatus"/>.
        /// </summary>
        /// <param name="furtherAnalysisType">The <see cref="FailureMechanismSectionResultFurtherAnalysisType"/> to convert.</param>
        /// <returns>The converted <see cref="ERefinementStatus"/>.</returns>
        /// <exception cref="InvalidEnumArgumentException">Thrown when <paramref name="furtherAnalysisType"/> is invalid.</exception>
        /// <exception cref="NotSupportedException">Thrown when <paramref name="furtherAnalysisType"/>
        /// is valid but not supported.</exception>
        public static ERefinementStatus ConvertFailureMechanismSectionResultFurtherAnalysisType(FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType)
        {
            if (!Enum.IsDefined(typeof(FailureMechanismSectionResultFurtherAnalysisType), furtherAnalysisType))
            {
                throw new InvalidEnumArgumentException(nameof(furtherAnalysisType),
                                                       (int)furtherAnalysisType,
                                                       typeof(FailureMechanismSectionResultFurtherAnalysisType));
            }

            switch (furtherAnalysisType)
            {
            case FailureMechanismSectionResultFurtherAnalysisType.NotNecessary:
                return(ERefinementStatus.NotNecessary);

            case FailureMechanismSectionResultFurtherAnalysisType.Necessary:
                return(ERefinementStatus.Necessary);

            case FailureMechanismSectionResultFurtherAnalysisType.Executed:
                return(ERefinementStatus.Performed);

            default:
                throw new NotSupportedException();
            }
        }
Esempio n. 11
0
        public void GivenRowWithFurtherAnalysisTypeNotExecuted_WhenErrorProviderReturnsError_ThenShowsNoError(FailureMechanismSectionResultFurtherAnalysisType furtherAnalysisType)
        {
            // Given
            var mocks         = new MockRepository();
            var errorProvider = mocks.StrictMock <IFailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider>();

            errorProvider.Stub(ep => ep.GetCalculatedProbabilityValidationError(null))
            .IgnoreArguments()
            .Return(string.Empty);
            errorProvider.Stub(ep => ep.GetManualProbabilityValidationError(double.NaN))
            .IgnoreArguments()
            .Return("error message");
            mocks.ReplayAll();

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var result = new AdoptableFailureMechanismSectionResult(section)
            {
                FurtherAnalysisType = furtherAnalysisType
            };

            Func <FailureMechanismSectionAssemblyResultWrapper> performAssemblyFunc = FailureMechanismSectionAssemblyResultWrapperTestFactory.Create;

            // When
            var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider,
                                                                    performAssemblyFunc, ConstructionProperties);

            // Then
            IDictionary <int, DataGridViewColumnStateDefinition> columnStateDefinitions = row.ColumnStateDefinitions;

            Assert.IsEmpty(columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText);

            mocks.VerifyAll();
        }