/// <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")); }
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); }
/// <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); } }