/// <summary>
        /// collect the information that is to be written to the <see cref="Requirement"/> sheet
        /// </summary>
        /// <param name="session">
        /// The active <see cref="ISession"/>
        /// </param>
        /// <param name="iteration">
        /// The <see cref="Iteration"/> that contains the <see cref="Requirement"/>s that need to be generated
        /// </param>
        /// <param name="participant">
        /// The <see cref="Participant"/> that is generating the <see cref="Worksheet"/>
        /// </param>
        private void PopulateSheetArrays(ISession session, Iteration iteration, Participant participant)
        {
            var requirements = iteration.RequirementsSpecification.SelectMany(x => x.Requirement).Where(x => !x.IsDeprecated);;
            var requirementArrayAssembler = new RequirementArrayAssembler(requirements);

            this.requirementContent = requirementArrayAssembler.ContentArray;

            var headerArrayAssembler = new HeaderArrayAssembler(session, iteration, participant);

            this.headerFormat  = headerArrayAssembler.FormatArray;
            this.headerContent = headerArrayAssembler.HeaderArray;
        }
        public void Verify_that_RequirementArray_is_populated_as_expected()
        {
            var launchDate = new SimpleParameterValue {
                ParameterType = this.dateParameterType, Scale = null, Value = new ValueArray <string>(new List <string> {
                    "2050-12-12"
                })
            };
            var launchMass = new SimpleParameterValue {
                ParameterType = this.simpleQuantityKind, Scale = this.ratioScale, Value = new ValueArray <string>(new List <string> {
                    "100000000"
                })
            };
            var MR_1_compliance = new SimpleParameterValue {
                ParameterType = this.booleanParameterType, Scale = null, Value = new ValueArray <string>(new List <string> {
                    "True"
                })
            };
            var MR_2_compliance = new SimpleParameterValue {
                ParameterType = this.booleanParameterType, Scale = null, Value = new ValueArray <string>(new List <string> {
                    "False"
                })
            };
            var SR_1_compliance = new SimpleParameterValue {
                ParameterType = this.booleanParameterType, Scale = null, Value = new ValueArray <string>(new List <string> {
                    "True"
                })
            };

            var requirementsSpecification_MRD = new RequirementsSpecification
            {
                ShortName = "MRD",
                Name      = "Mission Requirements Document",
                Owner     = this.domainOfExpertise
            };

            var MR_1 = new Requirement
            {
                ShortName = "MR-001",
                Name      = "Launch Date",
                Owner     = this.domainOfExpertise
            };

            MR_1.Definition.Add(new Definition
            {
                LanguageCode = "en-GB",
                Content      = "The Launch Date shall be in the future"
            });

            MR_1.ParameterValue.Add(launchDate);
            MR_1.ParameterValue.Add(MR_1_compliance);

            var MR_2 = new Requirement
            {
                ShortName = "MR-002",
                Name      = "Launch Mass",
                Owner     = this.domainOfExpertise
            };

            MR_2.Definition.Add(new Definition
            {
                LanguageCode = "en-GB",
                Content      = "The Launch Mass shall be a lot"
            });

            MR_2.ParameterValue.Add(launchMass);
            MR_2.ParameterValue.Add(MR_2_compliance);

            requirementsSpecification_MRD.Requirement.Add(MR_1);
            requirementsSpecification_MRD.Requirement.Add(MR_2);

            var requirementsSpecification_SRD = new RequirementsSpecification
            {
                ShortName = "SRD",
                Name      = "System Requirements Document",
                Owner     = this.domainOfExpertise
            };

            var SR_1 = new Requirement
            {
                ShortName = "SR-001",
                Name      = "Awesomeness",
                Owner     = this.domainOfExpertise
            };

            SR_1.Definition.Add(new Definition
            {
                LanguageCode = "en-GB",
                Content      = "The System shall be awesome"
            });

            SR_1.ParameterValue.Add(SR_1_compliance);

            requirementsSpecification_SRD.Requirement.Add(SR_1);

            this.iteration.RequirementsSpecification.Add(requirementsSpecification_MRD);
            this.iteration.RequirementsSpecification.Add(requirementsSpecification_SRD);

            var requirements = iteration.RequirementsSpecification.SelectMany(x => x.Requirement);;
            var requirementArrayAssembler = new RequirementArrayAssembler(requirements);

            Assert.That(requirementArrayAssembler.ContentArray[0, 0], Is.EqualTo("Specification"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 1], Is.EqualTo("Group"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 2], Is.EqualTo("Short Name"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 3], Is.EqualTo("Name"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 4], Is.EqualTo("Definition"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 5], Is.EqualTo("Owner"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 6], Is.EqualTo("Category"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 7], Is.EqualTo("C"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 8], Is.EqualTo("LD"));
            Assert.That(requirementArrayAssembler.ContentArray[0, 9], Is.EqualTo("m [kg]"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 0], Is.EqualTo("Mission Requirements Document [MRD]"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 0], Is.EqualTo("Mission Requirements Document [MRD]"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 0], Is.EqualTo("System Requirements Document [SRD]"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 1], Is.EqualTo("-"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 1], Is.EqualTo("-"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 1], Is.EqualTo("-"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 2], Is.EqualTo("MR-001"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 2], Is.EqualTo("MR-002"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 2], Is.EqualTo("SR-001"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 3], Is.EqualTo("Launch Date"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 3], Is.EqualTo("Launch Mass"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 3], Is.EqualTo("Awesomeness"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 4], Is.EqualTo("The Launch Date shall be in the future"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 4], Is.EqualTo("The Launch Mass shall be a lot"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 4], Is.EqualTo("The System shall be awesome"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 5], Is.EqualTo("SYS"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 5], Is.EqualTo("SYS"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 5], Is.EqualTo("SYS"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 6], Is.EqualTo(""));
            Assert.That(requirementArrayAssembler.ContentArray[2, 6], Is.EqualTo(""));
            Assert.That(requirementArrayAssembler.ContentArray[3, 6], Is.EqualTo(""));

            Assert.That(requirementArrayAssembler.ContentArray[1, 7], Is.EqualTo("True"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 7], Is.EqualTo("False"));
            Assert.That(requirementArrayAssembler.ContentArray[3, 7], Is.EqualTo("True"));

            Assert.That(requirementArrayAssembler.ContentArray[1, 8], Is.EqualTo("2050-12-12"));
            Assert.That(requirementArrayAssembler.ContentArray[2, 8], Is.Null);
            Assert.That(requirementArrayAssembler.ContentArray[3, 8], Is.Null);

            Assert.That(requirementArrayAssembler.ContentArray[1, 9], Is.Null);
            Assert.That(requirementArrayAssembler.ContentArray[3, 9], Is.Null);
            Assert.That(requirementArrayAssembler.ContentArray[3, 9], Is.Null);
        }