public void CreateFailureMechanismSectionAssemblyGroupBoundaries_CalculatorRan_ReturnsOutput()
        {
            // Setup
            var    random = new Random(11);
            double signalFloodingProbability           = random.NextDouble();
            double maximumAllowableFloodingProbability = random.NextDouble();

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;

                // Call
                FailureMechanismSectionAssemblyGroupBoundaries[] output =
                    FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(signalFloodingProbability, maximumAllowableFloodingProbability)
                    .ToArray();

                // Assert
                FailureMechanismSectionAssemblyGroupBoundaries[] calculatorOutput = calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput.ToArray();

                int expectedNrOfOutputs = calculatorOutput.Length;
                Assert.AreEqual(expectedNrOfOutputs, output.Length);
                for (var i = 0; i < expectedNrOfOutputs; i++)
                {
                    FailureMechanismSectionAssemblyGroupBoundaries expectedOutput = calculatorOutput[i];
                    FailureMechanismSectionAssemblyGroupBoundaries actualOutput   = calculatorOutput[i];

                    Assert.AreEqual(expectedOutput.FailureMechanismSectionAssemblyGroup, actualOutput.FailureMechanismSectionAssemblyGroup);
                    Assert.AreEqual(expectedOutput.LowerBoundary, actualOutput.LowerBoundary);
                    Assert.AreEqual(expectedOutput.UpperBoundary, actualOutput.UpperBoundary);
                }
            }
        }
        public void GivenViewWithInValidData_WhenCalculationWithValidData_ThenSetsDataTable()
        {
            // Given
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;
                calculator.ThrowExceptionOnCalculate = true;

                using (var view = new FailureMechanismSectionAssemblyGroupsView(assessmentSection))
                {
                    AssemblyGroupsTable <FailureMechanismSectionAssemblyGroup> failureMechanismSectionGroupsTable = GetAssemblyGroupsTable(view);

                    // Precondition
                    Assert.IsEmpty(failureMechanismSectionGroupsTable.Rows);

                    // When
                    calculator.ThrowExceptionOnCalculate = false;
                    assessmentSection.FailureMechanismContribution.NotifyObservers();

                    // Then
                    Assert.IsNotEmpty(failureMechanismSectionGroupsTable.Rows);
                }
            }
        }
Пример #3
0
 /// <summary>
 /// Creates a new instance of <see cref="TestAssemblyToolCalculatorFactory"/>.
 /// </summary>
 public TestAssemblyToolCalculatorFactory()
 {
     LastCreatedAssessmentSectionAssemblyGroupBoundariesCalculator       = new AssessmentSectionAssemblyGroupBoundariesCalculatorStub();
     LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator = new FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub();
     LastCreatedFailureMechanismSectionAssemblyCalculator = new FailureMechanismSectionAssemblyCalculatorStub();
     LastCreatedFailureMechanismAssemblyCalculator        = new FailureMechanismAssemblyCalculatorStub();
     LastCreatedAssessmentSectionAssemblyCalculator       = new AssessmentSectionAssemblyCalculatorStub();
 }
        public void Constructor_WithValidParameters_InputCorrectlySet()
        {
            // Setup
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            // Call
            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;
                using (new FailureMechanismSectionAssemblyGroupsView(assessmentSection))
                {
                    // Assert
                    Assert.AreEqual(assessmentSection.FailureMechanismContribution.MaximumAllowableFloodingProbability, calculator.MaximumAllowableFloodingProbability);
                    Assert.AreEqual(assessmentSection.FailureMechanismContribution.SignalFloodingProbability, calculator.SignalFloodingProbability);
                }
            }
        }
        public void CreateFailureMechanismSectionAssemblyGroupBoundaries_CalculatorThrowsException_ThrowsAssemblyException()
        {
            // Setup
            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;
                calculator.ThrowExceptionOnCalculate = true;

                // Call
                void Call() => FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(0, 0);

                // Assert
                var       exception      = Assert.Throws <AssemblyException>(Call);
                Exception innerException = exception.InnerException;
                Assert.IsInstanceOf <AssessmentSectionAssemblyGroupBoundariesCalculatorException>(innerException);
                Assert.AreEqual(innerException.Message, exception.Message);
            }
        }
        public void CreateAssemblyGroupsView_CalculatorThrowsException_ReturnsEmptyCollectionOfAssemblyGroupBoundaries()
        {
            // Setup
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;
                calculator.ThrowExceptionOnCalculate = true;

                // Call
                IEnumerable <FailureMechanismSectionAssemblyGroupBoundaries> assemblyGroupBoundaries =
                    FailureMechanismSectionAssemblyGroupsHelper.GetFailureMechanismSectionAssemblyGroupBoundaries(assessmentSection);

                // Assert
                Assert.IsEmpty(assemblyGroupBoundaries);
            }
        }
        public void GetFailureMechanismSectionAssemblyGroupBoundaries_CalculationSuccessful_ReturnsCorrectAssemblyGroupBoundaries()
        {
            // Setup
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;

                // Call
                FailureMechanismSectionAssemblyGroupBoundaries[] assemblyGroupBoundaries =
                    FailureMechanismSectionAssemblyGroupsHelper.GetFailureMechanismSectionAssemblyGroupBoundaries(assessmentSection).ToArray();

                // Assert
                Assert.AreEqual(calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput.Count() + 3, assemblyGroupBoundaries.Length);

                for (var i = 0; i < calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput.Count(); i++)
                {
                    FailureMechanismSectionAssemblyGroupBoundaries expectedBoundary = calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput.ElementAt(i);
                    FailureMechanismSectionAssemblyGroupBoundaries actualBoundary   = assemblyGroupBoundaries[i];

                    Assert.AreEqual(expectedBoundary.FailureMechanismSectionAssemblyGroup, actualBoundary.FailureMechanismSectionAssemblyGroup);
                    Assert.AreEqual(expectedBoundary.LowerBoundary, actualBoundary.LowerBoundary);
                    Assert.AreEqual(expectedBoundary.UpperBoundary, actualBoundary.UpperBoundary);
                }

                FailureMechanismSectionAssemblyGroupBoundaries dominantGroupBoundaries = assemblyGroupBoundaries[assemblyGroupBoundaries.Length - 3];
                Assert.AreEqual(FailureMechanismSectionAssemblyGroup.Dominant, dominantGroupBoundaries.FailureMechanismSectionAssemblyGroup);
                Assert.AreEqual(double.NaN, dominantGroupBoundaries.UpperBoundary);
                Assert.AreEqual(double.NaN, dominantGroupBoundaries.LowerBoundary);

                FailureMechanismSectionAssemblyGroupBoundaries notDominantGroupBoundaries = assemblyGroupBoundaries[assemblyGroupBoundaries.Length - 2];
                Assert.AreEqual(FailureMechanismSectionAssemblyGroup.NotDominant, notDominantGroupBoundaries.FailureMechanismSectionAssemblyGroup);
                Assert.AreEqual(double.NaN, notDominantGroupBoundaries.UpperBoundary);
                Assert.AreEqual(double.NaN, notDominantGroupBoundaries.LowerBoundary);

                FailureMechanismSectionAssemblyGroupBoundaries notRelevantGroupBoundaries = assemblyGroupBoundaries[assemblyGroupBoundaries.Length - 1];
                Assert.AreEqual(FailureMechanismSectionAssemblyGroup.NotRelevant, notRelevantGroupBoundaries.FailureMechanismSectionAssemblyGroup);
                Assert.AreEqual(double.NaN, notRelevantGroupBoundaries.UpperBoundary);
                Assert.AreEqual(double.NaN, notRelevantGroupBoundaries.LowerBoundary);
            }
        }
        public void CreateFailureMechanismSectionAssemblyGroupBoundaries_WithInput_SetsInputOnCalculator()
        {
            // Setup
            var    random = new Random(11);
            double signalFloodingProbability           = random.NextDouble();
            double maximumAllowableFloodingProbability = random.NextDouble();

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;

                // Call
                FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(signalFloodingProbability, maximumAllowableFloodingProbability);

                // Assert
                Assert.AreEqual(signalFloodingProbability, calculator.SignalFloodingProbability);
                Assert.AreEqual(maximumAllowableFloodingProbability, calculator.MaximumAllowableFloodingProbability);
            }
        }
        public void GivenViewWithValidData_WhenFailureMechanismContributionUpdated_ThenDataTableUpdated()
        {
            // Given
            var random            = new Random();
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator;
                var output = new List <FailureMechanismSectionAssemblyGroupBoundaries>
                {
                    CreateFailureMechanismSectionAssemblyGroupBoundaries(random)
                };

                calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput = output;

                using (var view = new FailureMechanismSectionAssemblyGroupsView(assessmentSection))
                {
                    AssemblyGroupsTable <FailureMechanismSectionAssemblyGroup> failureMechanismSectionGroupsTable = GetAssemblyGroupsTable(view);

                    // Precondition
                    int expectedNrOfDefaultGroupBoundaries = FailureMechanismSectionAssemblyGroupsHelper.GetFailureMechanismSectionAssemblyGroupBoundaries(assessmentSection).Count();
                    Assert.AreEqual(expectedNrOfDefaultGroupBoundaries, failureMechanismSectionGroupsTable.Rows.Count);

                    int newNrOfGroupBoundaries = random.Next(1, 10);
                    for (var i = 1; i <= newNrOfGroupBoundaries; i++)
                    {
                        output.Add(CreateFailureMechanismSectionAssemblyGroupBoundaries(random));
                    }

                    // When
                    assessmentSection.FailureMechanismContribution.NotifyObservers();

                    // Then
                    Assert.AreEqual(expectedNrOfDefaultGroupBoundaries + newNrOfGroupBoundaries, failureMechanismSectionGroupsTable.Rows.Count);
                }
            }
        }