public void Assign_SpecificInvalid_ReturnsFalse() { // Setup const string calculationName = "name"; var mocks = new MockRepository(); var configuration = mocks.Stub <StructuresCalculationConfiguration>(calculationName); mocks.ReplayAll(); var calculation = new StructuresCalculation <SimpleStructuresInput>(); var assigner = new SimpleStructuresCalculationStochastAssigner( configuration, calculation) { SpecificIsValid = false }; // Call bool valid = assigner.Assign(); // Assert Assert.IsFalse(valid); mocks.VerifyAll(); }
public void Assign_SpreadDefinedForBaseStochast_LogsErrorAndReturnsFalse(Action <StructuresCalculationConfiguration> modify, string stochastName) { // Setup const string calculationName = "name"; var mocks = new MockRepository(); var configuration = mocks.Stub <StructuresCalculationConfiguration>(calculationName); mocks.ReplayAll(); var calculation = new StructuresCalculation <SimpleStructuresInput>(); modify(configuration); var assigner = new SimpleStructuresCalculationStochastAssigner( configuration, calculation); // Call var valid = true; Action validate = () => valid = assigner.Assign(); // Assert string expectedMessage = $"Er kan geen spreiding voor stochast '{stochastName}' opgegeven worden. Berekening '{calculationName}' is overgeslagen."; TestHelper.AssertLogMessageWithLevelIsGenerated(validate, Tuple.Create(expectedMessage, LogLevelConstant.Error)); Assert.IsFalse(valid); mocks.VerifyAll(); }
public void Assign_WithoutStructureStochastDefinedWithParamter_LogsErrorReturnsFalse( Action <StochastConfiguration> modifyStandardDeviationStochast, Action <StochastConfiguration> modifyVariationCoefficientStochast, string stochastName) { // Setup const string calculationName = "name"; var mocks = new MockRepository(); var configuration = mocks.Stub <StructuresCalculationConfiguration>(calculationName); mocks.ReplayAll(); var calculation = new StructuresCalculation <SimpleStructuresInput>(); var standardDeviationStochastConfiguration = new StochastConfiguration(); var variationCoefficientStochastConfiguration = new StochastConfiguration(); modifyStandardDeviationStochast(standardDeviationStochastConfiguration); modifyVariationCoefficientStochast(variationCoefficientStochastConfiguration); var assigner = new SimpleStructuresCalculationStochastAssigner( configuration, calculation) { StandardDeviationStochasts = new[] { new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .StandardDeviationDefinition(stochastName, standardDeviationStochastConfiguration, input => null, (input, distribution) => {}) }, VariationCoefficientStochasts = new[] { new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .VariationCoefficientDefinition(stochastName, variationCoefficientStochastConfiguration, input => null, (input, distribution) => {}) } }; // Call var valid = true; Action validate = () => valid = assigner.Assign(); // Assert string expectedMessage = $"Er is geen kunstwerk opgegeven om de stochast '{stochastName}' aan toe te voegen. Berekening '{calculationName}' is overgeslagen."; TestHelper.AssertLogMessageWithLevelIsGenerated(validate, Tuple.Create(expectedMessage, LogLevelConstant.Error)); Assert.IsFalse(valid); mocks.VerifyAll(); }
public void Assign_WithStructure_ReturnsTrue( Action <StochastConfiguration> modifyStandardDeviationStochast, Action <StochastConfiguration> modifyVariationCoefficientStochast, string stochastName) { // Setup const string calculationName = "name"; var mocks = new MockRepository(); var configuration = mocks.Stub <StructuresCalculationConfiguration>(calculationName); mocks.ReplayAll(); configuration.StructureId = "some ID"; var calculation = new StructuresCalculation <SimpleStructuresInput>(); var standardDeviationStochastConfiguration = new StochastConfiguration(); var variationCoefficientStochastConfiguration = new StochastConfiguration(); modifyStandardDeviationStochast(standardDeviationStochastConfiguration); modifyVariationCoefficientStochast(variationCoefficientStochastConfiguration); var assigner = new SimpleStructuresCalculationStochastAssigner( configuration, calculation) { StandardDeviationStochasts = new[] { new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .StandardDeviationDefinition(stochastName, standardDeviationStochastConfiguration, input => new LogNormalDistribution(), (input, distribution) => {}) }, VariationCoefficientStochasts = new[] { new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .VariationCoefficientDefinition(stochastName, variationCoefficientStochastConfiguration, input => new VariationCoefficientLogNormalDistribution(), (input, distribution) => {}) } }; // Call bool valid = assigner.Assign(); // Assert Assert.IsTrue(valid); mocks.VerifyAll(); }
public void SetAllStochasts_Always_CallsGettersAndSetters( bool setStandardDeviationStochastSuccessful, bool setVariationCoefficientStochastSuccessful) { // Setup const string calculationName = "name"; var mocks = new MockRepository(); var configuration = mocks.Stub <StructuresCalculationConfiguration>(calculationName); mocks.ReplayAll(); configuration.StructureId = "some ID"; var random = new Random(21); double allowedLevelIncreaseStorageMean = setStandardDeviationStochastSuccessful ? random.NextDouble() : -1; double allowedLevelIncreaseStorageStandardDeviation = random.NextDouble(); double criticalOvertoppingDischargeMean = setVariationCoefficientStochastSuccessful ? random.NextDouble() : -1; double criticalOvertoppingDischargeCoefficientOfVariation = random.NextDouble(); var calculation = new StructuresCalculation <SimpleStructuresInput>(); var standardDeviationStochastConfiguration = new StochastConfiguration { Mean = allowedLevelIncreaseStorageMean, StandardDeviation = allowedLevelIncreaseStorageStandardDeviation }; var variationCoefficientStochastConfiguration = new StochastConfiguration { Mean = criticalOvertoppingDischargeMean, VariationCoefficient = criticalOvertoppingDischargeCoefficientOfVariation }; var definitionA = new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .StandardDeviationDefinition("stochastA", standardDeviationStochastConfiguration, input => input.AllowedLevelIncreaseStorage, (input, distribution) => { input.AllowedLevelIncreaseStorage = (LogNormalDistribution)distribution; }); var definitionB = new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .VariationCoefficientDefinition("stochastB", variationCoefficientStochastConfiguration, input => input.CriticalOvertoppingDischarge, (input, distribution) => { input.CriticalOvertoppingDischarge = (VariationCoefficientLogNormalDistribution)distribution; }); var assigner = new SimpleStructuresCalculationStochastAssigner( configuration, calculation) { StandardDeviationStochasts = new[] { definitionA }, VariationCoefficientStochasts = new[] { definitionB } }; // Call bool valid = assigner.Assign(); // Assert Assert.AreEqual(setStandardDeviationStochastSuccessful && setVariationCoefficientStochastSuccessful, valid); if (valid) { Assert.AreEqual(allowedLevelIncreaseStorageMean, calculation.InputParameters.AllowedLevelIncreaseStorage.Mean, calculation.InputParameters.AllowedLevelIncreaseStorage.Mean.GetAccuracy()); Assert.AreEqual(allowedLevelIncreaseStorageStandardDeviation, calculation.InputParameters.AllowedLevelIncreaseStorage.StandardDeviation, calculation.InputParameters.AllowedLevelIncreaseStorage.StandardDeviation.GetAccuracy()); Assert.AreEqual(criticalOvertoppingDischargeMean, calculation.InputParameters.CriticalOvertoppingDischarge.Mean, calculation.InputParameters.CriticalOvertoppingDischarge.Mean.GetAccuracy()); Assert.AreEqual(criticalOvertoppingDischargeCoefficientOfVariation, calculation.InputParameters.CriticalOvertoppingDischarge.CoefficientOfVariation, calculation.InputParameters.CriticalOvertoppingDischarge.CoefficientOfVariation.GetAccuracy()); } mocks.VerifyAll(); }