Example #1
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var random  = new Random(21);
            var section = new CombinedAssemblyFailureMechanismSection(random.NextDouble(), random.NextDouble(),
                                                                      random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());
            IEnumerable <FailureMechanismSectionAssemblyGroup> failureMechanismSectionAssemblyGroups = Enumerable.Empty <FailureMechanismSectionAssemblyGroup>();

            // Call
            var assembly = new CombinedFailureMechanismSectionAssembly(section, failureMechanismSectionAssemblyGroups);

            // Assert
            Assert.AreSame(section, assembly.Section);
            Assert.AreSame(failureMechanismSectionAssemblyGroups, assembly.FailureMechanismSectionAssemblyGroupResults);
        }
Example #2
0
        public void Constructor_FailureMechanismSectionAssemblyGroupResultsNull_ThrowsArgumentNullException()
        {
            // Setup
            var random  = new Random(21);
            var section = new CombinedAssemblyFailureMechanismSection(
                random.NextDouble(), random.NextDouble(), random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());

            // Call
            void Call() => new CombinedFailureMechanismSectionAssembly(section, null);

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

            Assert.AreEqual("failureMechanismSectionAssemblyGroupResults", exception.ParamName);
        }
Example #3
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random        = new Random(21);
            double sectionStart  = random.NextDouble();
            double sectionEnd    = random.NextDouble();
            var    assemblyGroup = random.NextEnumValue <FailureMechanismSectionAssemblyGroup>();

            // Call
            var assembly = new CombinedAssemblyFailureMechanismSection(sectionStart, sectionEnd, assemblyGroup);

            // Assert
            Assert.AreEqual(sectionStart, assembly.SectionStart);
            Assert.AreEqual(sectionEnd, assembly.SectionEnd);
            Assert.AreEqual(assemblyGroup, assembly.FailureMechanismSectionAssemblyGroup);
        }
        private static IEnumerable <CombinedAssemblyFailureMechanismSection> CreateCombinedSections <TFailureMechanismSectionResult>(
            IEnumerable <TFailureMechanismSectionResult> sectionResults, AssessmentSection assessmentSection,
            Func <TFailureMechanismSectionResult, AssessmentSection, FailureMechanismSectionAssemblyResultWrapper> getAssemblyFunc)
            where TFailureMechanismSectionResult : FailureMechanismSectionResult
        {
            double totalSectionsLength = 0;

            return(sectionResults.Select(sectionResult =>
            {
                FailureMechanismSectionAssemblyResult failureMechanismSectionAssemblyResult = AssemblyToolHelper.AssembleFailureMechanismSection(
                    sectionResult, sr => getAssemblyFunc(sr, assessmentSection));

                CombinedAssemblyFailureMechanismSection section = CreateSection(
                    sectionResult, failureMechanismSectionAssemblyResult.FailureMechanismSectionAssemblyGroup, totalSectionsLength);
                totalSectionsLength = section.SectionEnd;
                return section;
            })
                   .ToArray());
        }
Example #5
0
        public void Create_WithAllFailureMechanisms_ReturnsCombinedFailureMechanismSectionAssemblyResults()
        {
            // Setup
            var random            = new Random(21);
            var assessmentSection = new AssessmentSection(random.NextEnumValue <AssessmentSectionComposition>());

            assessmentSection.SpecificFailureMechanisms.Add(new SpecificFailureMechanism());
            Dictionary <IFailureMechanism, int> failureMechanisms = assessmentSection.GetFailureMechanisms()
                                                                    .Concat(assessmentSection.SpecificFailureMechanisms)
                                                                    .Where(fm => fm.InAssembly)
                                                                    .Select((fm, i) => new
            {
                FailureMechanism = fm,
                Index            = i
            })
                                                                    .ToDictionary(x => x.FailureMechanism, x => x.Index);

            var section1 = new CombinedAssemblyFailureMechanismSection(0, 5, random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());
            var section2 = new CombinedAssemblyFailureMechanismSection(5, 11, random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());
            var output   = new CombinedFailureMechanismSectionAssemblyResultWrapper(
                new[]
            {
                new CombinedFailureMechanismSectionAssembly(section1, GetFailureMechanismsOutput(failureMechanisms.Keys, random)),
                new CombinedFailureMechanismSectionAssembly(section2, GetFailureMechanismsOutput(failureMechanisms.Keys, random))
            }, AssemblyMethod.BOI3A1, AssemblyMethod.BOI3B1, AssemblyMethod.BOI3C1);

            // Call
            CombinedFailureMechanismSectionAssemblyResult[] results = CombinedFailureMechanismSectionAssemblyResultFactory.Create(output, failureMechanisms, assessmentSection).ToArray();

            // Assert
            Assert.AreEqual(output.AssemblyResults.Count(), results.Length);
            for (var i = 0; i < output.AssemblyResults.Count(); i++)
            {
                CombinedFailureMechanismSectionAssembly assemblyResult = output.AssemblyResults.ElementAt(i);
                Assert.AreEqual(assemblyResult.Section.SectionStart, results[i].SectionStart);
                Assert.AreEqual(assemblyResult.Section.SectionEnd, results[i].SectionEnd);
                Assert.AreEqual(assemblyResult.Section.FailureMechanismSectionAssemblyGroup, results[i].TotalResult);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.Piping]), results[i].Piping);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.GrassCoverErosionInwards]), results[i].GrassCoverErosionInwards);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.MacroStabilityInwards]), results[i].MacroStabilityInwards);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.Microstability]), results[i].Microstability);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.StabilityStoneCover]), results[i].StabilityStoneCover);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.WaveImpactAsphaltCover]), results[i].WaveImpactAsphaltCover);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.WaterPressureAsphaltCover]), results[i].WaterPressureAsphaltCover);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.GrassCoverErosionOutwards]), results[i].GrassCoverErosionOutwards);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.GrassCoverSlipOffOutwards]), results[i].GrassCoverSlipOffOutwards);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.GrassCoverSlipOffInwards]), results[i].GrassCoverSlipOffInwards);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.HeightStructures]), results[i].HeightStructures);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.ClosingStructures]), results[i].ClosingStructures);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.PipingStructure]), results[i].PipingStructure);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.StabilityPointStructures]), results[i].StabilityPointStructures);
                Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[assessmentSection.DuneErosion]), results[i].DuneErosion);
                Assert.AreEqual(assessmentSection.SpecificFailureMechanisms.Count, results[i].SpecificFailureMechanisms.Length);
                foreach (SpecificFailureMechanism specificFailureMechanism in assessmentSection.SpecificFailureMechanisms)
                {
                    Assert.AreEqual(assemblyResult.FailureMechanismSectionAssemblyGroupResults.ElementAt(failureMechanisms[specificFailureMechanism]), results[i].SpecificFailureMechanisms.Single());
                }

                Assert.AreEqual(output.CommonSectionAssemblyMethod, results[i].CommonSectionAssemblyMethod);
                Assert.AreEqual(output.FailureMechanismResultsAssemblyMethod, results[i].FailureMechanismResultsAssemblyMethod);
                Assert.AreEqual(output.CombinedSectionResultAssemblyMethod, results[i].CombinedSectionResultAssemblyMethod);
            }
        }