Exemple #1
0
        /// <summary>
        /// Writes the <paramref name="group"/> in XML format to file.
        /// </summary>
        /// <param name="group">The calculation group to write.</param>
        /// <param name="writer">The writer to use for writing.</param>
        /// <exception cref="ArgumentException">Thrown when <paramref name="group"/>
        /// contains a child that is neither <see cref="CalculationGroupConfiguration"/> nor
        /// <see cref="T"/>.</exception>
        /// <exception cref="InvalidOperationException">Thrown when the <paramref name="writer"/>
        /// is closed.</exception>
        /// <exception cref="NotSupportedException">Thrown when the conversion of an element in
        /// <paramref name="group"/> cannot be performed.</exception>
        private void WriteCalculationGroup(CalculationGroupConfiguration group, XmlWriter writer)
        {
            writer.WriteStartElement(ConfigurationSchemaIdentifiers.FolderElement);
            writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, group.Name);

            WriteConfiguration(group.Items, writer);

            writer.WriteEndElement();
        }
        private static IEnumerable <TestCaseData> GetCalculationConfigurations()
        {
            var calculation1 = new TestConfigurationItem
            {
                Name = "calculation1"
            };
            var calculation2 = new TestConfigurationItem
            {
                Name = "calculation2"
            };

            var calculationGroup1 = new CalculationGroupConfiguration("group1", Enumerable.Empty <IConfigurationItem>());
            var calculationGroup2 = new CalculationGroupConfiguration("group2", new IConfigurationItem[]
            {
                calculation2,
                calculationGroup1
            });

            yield return(new TestCaseData(
                             new[]
            {
                calculationGroup1
            },
                             "singleGroup.xml")
                         .SetName("Single group"));

            yield return(new TestCaseData(
                             new[]
            {
                calculation1
            },
                             "singleCalculation.xml")
                         .SetName("Single calculation"));

            yield return(new TestCaseData(
                             new IConfigurationItem[]
            {
                calculationGroup1,
                calculation1
            },
                             "calculationGroupAndCalculation.xml")
                         .SetName("Calculation group and calculation"));

            yield return(new TestCaseData(
                             new IConfigurationItem[]
            {
                calculation1,
                calculationGroup2
            },
                             "calculationAndGroupWithNesting.xml")
                         .SetName("Calculation and group with nesting"));
        }
Exemple #3
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var nestedItems = new List <IConfigurationItem>
            {
                new TestReadConfigurationItem(),
                new CalculationGroupConfiguration("Nested calculation group", Enumerable.Empty <IConfigurationItem>())
            };

            // Call
            var readCalculationGroup = new CalculationGroupConfiguration("Calculation group", nestedItems);

            // Assert
            Assert.IsInstanceOf <IConfigurationItem>(readCalculationGroup);
            Assert.AreEqual("Calculation group", readCalculationGroup.Name);
            Assert.AreSame(nestedItems, readCalculationGroup.Items);
        }
Exemple #4
0
        /// <summary>
        /// Parses the read calculation group and it's children.
        /// </summary>
        /// <param name="readCalculationGroup">The calculation group to parse.</param>
        /// <returns>A parsed calculation group.</returns>
        /// <exception cref="InvalidOperationException">Thrown when the one of the children
        /// to parse is not valid.</exception>
        private CalculationGroup ParseReadCalculationGroup(CalculationGroupConfiguration readCalculationGroup)
        {
            var calculationGroup = new CalculationGroup
            {
                Name = readCalculationGroup.Name
            };

            foreach (IConfigurationItem item in readCalculationGroup.Items)
            {
                ICalculationBase parsedItem = ParseReadConfigurationItem(item);
                if (parsedItem != null)
                {
                    calculationGroup.Children.Add(parsedItem);
                }
            }

            return(calculationGroup);
        }
        public void Write_NestedConfiguration_ValidFile()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath("test.xml");

            GrassCoverErosionInwardsCalculationConfiguration calculation = CreateCompleteCalculation();
            var calculation2      = new GrassCoverErosionInwardsCalculationConfiguration("Berekening 2");
            var calculationGroup2 = new CalculationGroupConfiguration("Nested", new IConfigurationItem[]
            {
                calculation2
            });

            var calculationGroup = new CalculationGroupConfiguration("Testmap", new IConfigurationItem[]
            {
                calculation,
                calculationGroup2
            });

            try
            {
                var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath);

                // Call
                writer.Write(new[]
                {
                    calculationGroup
                });

                // Assert
                Assert.IsTrue(File.Exists(filePath));

                string actualXml           = File.ReadAllText(filePath);
                string expectedXmlFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.GrassCoverErosionInwards.IO,
                                                                        Path.Combine("GrassCoverErosionInwardsCalculationConfigurationWriter",
                                                                                     "folderWithSubfolderAndCalculation.xml"));
                string expectedXml = File.ReadAllText(expectedXmlFilePath);

                Assert.AreEqual(expectedXml, actualXml);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        public void Write_CalculationGroupsAndCalculation_ValidFile()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath(nameof(Write_CalculationGroupsAndCalculation_ValidFile));

            var calculationGroup = new CalculationGroupConfiguration("PK001_0001", new IConfigurationItem[]
            {
                CreateFullSemiProbabilisticCalculationConfiguration(),
                CreateFullProbabilisticCalculationConfiguration(),
                new CalculationGroupConfiguration("PK001_0002", new[]
                {
                    CreateSparseCalculationConfiguration("Sparse semi-probabilistisch",
                                                         PipingCalculationConfigurationType.SemiProbabilistic),
                    CreateSparseCalculationConfiguration("Sparse probabilistisch",
                                                         PipingCalculationConfigurationType.Probabilistic)
                })
            });

            var writer = new PipingCalculationConfigurationWriter(filePath);

            try
            {
                // Call
                writer.Write(new[]
                {
                    calculationGroup
                });

                // Assert
                Assert.IsTrue(File.Exists(filePath));

                string pathToExpectedFile = Path.Combine(testDataPath, "folderWithSubfolderAndCalculation.xml");
                string expectedXml        = File.ReadAllText(pathToExpectedFile);
                string actualXml          = File.ReadAllText(filePath);
                Assert.AreEqual(expectedXml, actualXml);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        public void Write_CalculationGroupsAndCalculation_ValidFile()
        {
            // Setup
            string filePath = TestHelper.GetScratchPadPath(nameof(Write_CalculationGroupsAndCalculation_ValidFile));

            var calculationGroup = new CalculationGroupConfiguration("PK001_0001", new IConfigurationItem[]
            {
                CreateFullCalculationConfiguration(),
                new CalculationGroupConfiguration("PK001_0002", new[]
                {
                    CreateSparseCalculationConfiguration()
                })
            });

            var writer = new MacroStabilityInwardsCalculationConfigurationWriter(filePath);

            try
            {
                // Call
                writer.Write(new[]
                {
                    calculationGroup
                });

                // Assert
                Assert.IsTrue(File.Exists(filePath));

                string expectedXmlFilePath = Path.Combine(testDataPath, "folderWithSubfolderAndCalculation.xml");
                string expectedXml         = File.ReadAllText(expectedXmlFilePath);
                string actualXml           = File.ReadAllText(filePath);
                Assert.AreEqual(expectedXml, actualXml);
            }
            finally
            {
                File.Delete(filePath);
            }
        }