public void CreateAssemblyGroupFeatures_ValidParameters_ReturnsExpectedFeatures()
        {
            // Setup
            var random           = new Random(39);
            var failureMechanism = new TestFailureMechanism();

            FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(0, 10));

            var expectedAssemblyResult = new FailureMechanismSectionAssemblyResult(
                random.NextDouble(), random.NextDouble(), random.NextDouble(),
                random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());

            // Call
            IEnumerable <MapFeature> features = AssemblyMapDataFeaturesFactory.CreateAssemblyGroupFeatures <FailureMechanismSectionResult>(
                failureMechanism, sr => expectedAssemblyResult);

            // Assert
            Assert.AreEqual(failureMechanism.Sections.Count(), features.Count());

            for (var i = 0; i < features.Count(); i++)
            {
                FailureMechanismSection section = failureMechanism.Sections.ElementAt(i);
                MapFeature mapFeature           = features.ElementAt(i);
                AssertAssemblyGroupMapFeature(section, mapFeature, expectedAssemblyResult);
            }
        }
        public void CreateAssemblyGroupFeatures_PerformAssemblyFuncThrowsAssemblyExceptionOnFirstSection_FirstSectionSkipped()
        {
            // Setup
            var random           = new Random(39);
            var failureMechanism = new TestFailureMechanism();

            FailureMechanismTestHelper.AddSections(failureMechanism, 2);

            var expectedAssemblyResult = new FailureMechanismSectionAssemblyResult(
                random.NextDouble(), random.NextDouble(), random.NextDouble(),
                random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());

            // Call
            var shouldThrowException          = true;
            IEnumerable <MapFeature> features = AssemblyMapDataFeaturesFactory.CreateAssemblyGroupFeatures <FailureMechanismSectionResult>(
                failureMechanism, sr =>
            {
                if (shouldThrowException)
                {
                    shouldThrowException = false;
                    throw new AssemblyException();
                }

                return(expectedAssemblyResult);
            });

            // Assert
            AssertAssemblyGroupMapFeature(failureMechanism.Sections.ElementAt(1), features.Single(), expectedAssemblyResult);
        }
        public void CreateAssemblyGroupFeatures_FailureMechanismNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => AssemblyMapDataFeaturesFactory.CreateAssemblyGroupFeatures <FailureMechanismSectionResult>(
                null, sr => null);

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

            Assert.AreEqual("failureMechanism", exception.ParamName);
        }
        public void CreateAssemblyGroupFeatures_PerformAssemblyFuncNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => AssemblyMapDataFeaturesFactory.CreateAssemblyGroupFeatures <FailureMechanismSectionResult>(
                new TestFailureMechanism(), null);

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

            Assert.AreEqual("performAssemblyFunc", exception.ParamName);
        }
 private void SetFeatures()
 {
     MapData.Features = AssemblyMapDataFeaturesFactory.CreateAssemblyGroupFeatures(failureMechanism, performAssemblyFunc);
 }