Index: Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfiguration.cs =================================================================== diff -u -r40d5cd46ad0541d58f5d58206df3aa0a3892e73a -r86c3749da5879489a30004027e1ac6782cec97e8 --- Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfiguration.cs (.../PipingCalculationConfiguration.cs) (revision 40d5cd46ad0541d58f5d58206df3aa0a3892e73a) +++ Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfiguration.cs (.../PipingCalculationConfiguration.cs) (revision 86c3749da5879489a30004027e1ac6782cec97e8) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.ComponentModel; using Riskeer.Common.IO.Configurations; namespace Riskeer.Piping.IO.Configurations @@ -33,21 +34,32 @@ /// Creates a new instance of . /// /// The name of the . + /// The type of the . /// Thrown when is null. - public PipingCalculationConfiguration(string name) + /// Thrown when + /// has an invalid value. + public PipingCalculationConfiguration(string name, PipingCalculationConfigurationType calculationType) { if (name == null) { throw new ArgumentNullException(nameof(name)); } - + + if (!Enum.IsDefined(typeof(PipingCalculationConfigurationType), calculationType)) + { + throw new InvalidEnumArgumentException(nameof(calculationType), + (int) calculationType, + typeof(PipingCalculationConfigurationType)); + } + Name = name; + CalculationType = calculationType; } /// - /// Gets or sets the calculation type. + /// Gets the calculation type. /// - public PipingCalculationConfigurationType? CalculationType { get; set; } + public PipingCalculationConfigurationType CalculationType { get; } /// /// Gets or sets the assessment level of the piping calculation. Index: Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs =================================================================== diff -u -r732c5a8e5396d0e7e7b9182286329e81bec0c583 -r86c3749da5879489a30004027e1ac6782cec97e8 --- Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 732c5a8e5396d0e7e7b9182286329e81bec0c583) +++ Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 86c3749da5879489a30004027e1ac6782cec97e8) @@ -52,7 +52,7 @@ { PipingInput input = calculation.InputParameters; - var calculationConfiguration = new PipingCalculationConfiguration(calculation.Name) + var calculationConfiguration = new PipingCalculationConfiguration(calculation.Name, PipingCalculationConfigurationType.SemiProbabilistic) { DampingFactorExit = input.DampingFactorExit.ToStochastConfiguration(), PhreaticLevelExit = input.PhreaticLevelExit.ToStochastConfiguration(), Index: Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs =================================================================== diff -u -rd3f749623318998086cec0a222cdb4638f6ef589 -r86c3749da5879489a30004027e1ac6782cec97e8 --- Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs (.../PipingCalculationConfigurationReader.cs) (revision d3f749623318998086cec0a222cdb4638f6ef589) +++ Riskeer/Piping/src/Riskeer.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs (.../PipingCalculationConfigurationReader.cs) (revision 86c3749da5879489a30004027e1ac6782cec97e8) @@ -90,9 +90,9 @@ protected override PipingCalculationConfiguration ParseCalculationElement(XElement calculationElement) { - return new PipingCalculationConfiguration(calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute).Value) + return new PipingCalculationConfiguration(calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute).Value, + GetCalculationType(calculationElement).Value) { - CalculationType = GetCalculationType(calculationElement), AssessmentLevel = calculationElement.GetDoubleValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.WaterLevelElement), HydraulicBoundaryLocationName = calculationElement.GetStringValueFromDescendantElement(ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement), SurfaceLineName = calculationElement.GetStringValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.SurfaceLineElement), Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs =================================================================== diff -u -r40d5cd46ad0541d58f5d58206df3aa0a3892e73a -r86c3749da5879489a30004027e1ac6782cec97e8 --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs (.../PipingCalculationConfigurationTest.cs) (revision 40d5cd46ad0541d58f5d58206df3aa0a3892e73a) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs (.../PipingCalculationConfigurationTest.cs) (revision 86c3749da5879489a30004027e1ac6782cec97e8) @@ -20,6 +20,8 @@ // All rights reserved. using System; +using System.ComponentModel; +using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.Common.IO.Configurations; using Riskeer.Piping.IO.Configurations; @@ -33,26 +35,41 @@ public void Constructor_NameNull_ThrowsArgumentNullException() { // Call - void Call() => new PipingCalculationConfiguration(null); + void Call() => new PipingCalculationConfiguration(null, PipingCalculationConfigurationType.Probabilistic); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("name", exception.ParamName); } [Test] - public void Constructor_WithName_PropertiesAreDefault() + public void Constructor_CalculationTypeInvalid_ThrowsInvalidEnumArgumentException() { + // Setup + const PipingCalculationConfigurationType calculationType = (PipingCalculationConfigurationType) 99; + + // Call + void Call() => new PipingCalculationConfiguration("name", calculationType); + + // Assert + var expectedMessage = $"The value of argument '{nameof(calculationType)}' ({calculationType}) is invalid for Enum type '{nameof(PipingCalculationConfigurationType)}'."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); + } + + [Test] + public void Constructor_WithValidData_PropertiesAreDefault() + { // Setup const string name = "some name"; + var calculationType = new Random(21).NextEnumValue(); // Call - var readPipingCalculation = new PipingCalculationConfiguration(name); + var readPipingCalculation = new PipingCalculationConfiguration(name, calculationType); // Assert Assert.IsInstanceOf(readPipingCalculation); Assert.AreEqual(name, readPipingCalculation.Name); - Assert.IsNull(readPipingCalculation.CalculationType); + Assert.AreEqual(calculationType, readPipingCalculation.CalculationType); Assert.IsNull(readPipingCalculation.AssessmentLevel); Assert.IsNull(readPipingCalculation.HydraulicBoundaryLocationName); Assert.IsNull(readPipingCalculation.SurfaceLineName); Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r86c3749da5879489a30004027e1ac6782cec97e8 --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 86c3749da5879489a30004027e1ac6782cec97e8) @@ -78,7 +78,7 @@ private static PipingCalculationConfiguration CreateFullCalculationConfiguration() { - return new PipingCalculationConfiguration("PK001_0001 W1-6_0_1D1") + return new PipingCalculationConfiguration("PK001_0001 W1-6_0_1D1", PipingCalculationConfigurationType.SemiProbabilistic) { AssessmentLevel = 10, HydraulicBoundaryLocationName = "PUNT_KAT_18", @@ -107,7 +107,7 @@ private static PipingCalculationConfiguration CreateSparseCalculationConfiguration() { - return new PipingCalculationConfiguration("Sparse"); + return new PipingCalculationConfiguration("Sparse", PipingCalculationConfigurationType.SemiProbabilistic); } protected override PipingCalculationConfigurationWriter CreateWriterInstance(string filePath)