Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/LogNormalDistributionPropertiesTest.cs =================================================================== diff -u -r5b8f476716cb75977616203318fa250f608fe7a5 -r26359a31a29af21b6690cacd9b810b1565af9e4b --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/LogNormalDistributionPropertiesTest.cs (.../LogNormalDistributionPropertiesTest.cs) (revision 5b8f476716cb75977616203318fa250f608fe7a5) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/LogNormalDistributionPropertiesTest.cs (.../LogNormalDistributionPropertiesTest.cs) (revision 26359a31a29af21b6690cacd9b810b1565af9e4b) @@ -26,6 +26,7 @@ using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Gui.PropertyBag; +using Core.Common.TestUtil; using Core.Common.Utils.Attributes; using NUnit.Framework; using Rhino.Mocks; @@ -46,103 +47,82 @@ } [Test] - public void Constructor_ExpectedValues() + public void Constructor_WithoutParameters_ExpectedValues() { - // Setup - var observerableMock = mockRepository.StrictMock(); - mockRepository.ReplayAll(); - // Call - var properties = new LogNormalDistributionProperties(observerableMock); + var properties = new LogNormalDistributionProperties(); // Assert Assert.IsInstanceOf(properties); Assert.IsNull(properties.Data); Assert.AreEqual("Lognormaal", properties.DistributionType); - mockRepository.VerifyAll(); } [Test] - public void PropertyAttributes_ReturnExpectedValues() + public void Constructor_WithParameters_ExpectedValues() { // Setup var observerableMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); // Call - var properties = new LogNormalDistributionProperties(observerableMock); + var properties = new LogNormalDistributionProperties(observerableMock, DistributionPropertiesReadOnly.None); // Assert - TypeConverter classTypeConverter = TypeDescriptor.GetConverter(properties, true); - Assert.IsInstanceOf(classTypeConverter); - - var dynamicPropertyBag = new DynamicPropertyBag(properties); - PropertyDescriptorCollection dynamicProperties = dynamicPropertyBag.GetProperties(); - Assert.AreEqual(4, dynamicProperties.Count); - - var meanAttributes = Attribute.GetCustomAttributes(properties.GetType().GetProperty("Mean")); - Assert.IsNotNull(meanAttributes); - AssertAttributesOfType(meanAttributes, "Verwachtingswaarde", - attribute => attribute.DisplayName); - AssertAttributesOfType(meanAttributes, - "De gemiddelde waarde van de lognormale verdeling.", - attribute => attribute.Description); - - var standardAttributes = Attribute.GetCustomAttributes(properties.GetType().GetProperty("StandardDeviation")); - Assert.IsNotNull(standardAttributes); - AssertAttributesOfType(standardAttributes, "Standaardafwijking", - attribute => attribute.DisplayName); - AssertAttributesOfType(standardAttributes, - "De standaardafwijking van de lognormale verdeling.", - attribute => attribute.Description); - + Assert.IsInstanceOf(properties); + Assert.IsNull(properties.Data); + Assert.AreEqual("Lognormaal", properties.DistributionType); mockRepository.VerifyAll(); } - [Test] - public void SetProperties_MeanWithoutObserverable_ThrowsArgumentException() + [TestCase(DistributionPropertiesReadOnly.None)] + [TestCase(DistributionPropertiesReadOnly.StandardDeviation)] + public void SetProperties_EditableMeanWithoutObserverable_ThrowsArgumentException(DistributionPropertiesReadOnly propertiesReadOnly) { // Setup - var properties = new LogNormalDistributionProperties(null) + var properties = new LogNormalDistributionProperties(null, propertiesReadOnly) { - Data = new LogNormalDistribution(2), + Data = new LogNormalDistribution(2) }; // Call TestDelegate test = () => properties.Mean = new RoundedDouble(2, 20); // Assert - Assert.Throws(test); + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "No observerable object set."); } [Test] - public void SetProperties_StandardDeviationWithoutObserverable_ThrowsArgumentException() + [TestCase(DistributionPropertiesReadOnly.All)] + [TestCase(DistributionPropertiesReadOnly.Mean)] + public void SetProperties_ReadOnlyMeanWithObserverable_ThrowsArgumentException(DistributionPropertiesReadOnly propertiesReadOnly) { // Setup - var properties = new LogNormalDistributionProperties(null) + var observerableMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + var properties = new LogNormalDistributionProperties(observerableMock, propertiesReadOnly) { Data = new LogNormalDistribution(2) }; // Call - TestDelegate test = () => properties.StandardDeviation = new RoundedDouble(2, 20); + TestDelegate test = () => properties.Mean = new RoundedDouble(2, 20); // Assert - Assert.Throws(test); + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Mean is set to be read-only."); + mockRepository.VerifyAll(); } - - [Test] public void SetProperties_MeanWithObserverable_ValueSetNotifyObservers() { // Setup var observerableMock = mockRepository.StrictMock(); observerableMock.Expect(o => o.NotifyObservers()).Repeat.Once(); - var properties = new LogNormalDistributionProperties(observerableMock) + var properties = new LogNormalDistributionProperties(observerableMock, DistributionPropertiesReadOnly.None) { - Data = new LogNormalDistribution(3) + Data = new LogNormalDistribution(2) }; mockRepository.ReplayAll(); RoundedDouble newMeanValue = new RoundedDouble(3, 20); @@ -156,16 +136,55 @@ } [Test] + [TestCase(DistributionPropertiesReadOnly.None)] + [TestCase(DistributionPropertiesReadOnly.Mean)] + public void SetProperties_EditableStandardDeviationWithoutObserverable_ThrowsArgumentException(DistributionPropertiesReadOnly propertiesReadOnly) + { + // Setup + var properties = new LogNormalDistributionProperties(null, propertiesReadOnly) + { + Data = new LogNormalDistribution(2) + }; + + // Call + TestDelegate test = () => properties.StandardDeviation = new RoundedDouble(2, 20); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "No observerable object set."); + } + + [Test] + [TestCase(DistributionPropertiesReadOnly.All)] + [TestCase(DistributionPropertiesReadOnly.StandardDeviation)] + public void SetProperties_ReadOnlyStandardDeviationWithObserverable_ThrowsArgumentException(DistributionPropertiesReadOnly propertiesReadOnly) + { + // Setup + var observerableMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + var properties = new LogNormalDistributionProperties(observerableMock, propertiesReadOnly) + { + Data = new LogNormalDistribution(2) + }; + + // Call + TestDelegate test = () => properties.StandardDeviation = new RoundedDouble(2, 20); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "StandardDeviation is set to be read-only."); + mockRepository.VerifyAll(); + } + + [Test] public void SetProperties_StandardDeviationWithObserverable_ValueSetNotifyObservers() { // Setup var observerableMock = mockRepository.StrictMock(); observerableMock.Expect(o => o.NotifyObservers()).Repeat.Once(); - var properties = new LogNormalDistributionProperties(observerableMock) + mockRepository.ReplayAll(); + var properties = new LogNormalDistributionProperties(observerableMock, DistributionPropertiesReadOnly.None) { - Data = new LogNormalDistribution(3) + Data = new LogNormalDistribution(2) }; - mockRepository.ReplayAll(); RoundedDouble newStandardDeviationValue = new RoundedDouble(3, 20); // Call @@ -176,6 +195,43 @@ mockRepository.VerifyAll(); } + [Test] + public void PropertyAttributes_ReturnExpectedValues() + { + // Setup + var observerableMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + // Call + var properties = new LogNormalDistributionProperties(observerableMock, DistributionPropertiesReadOnly.None); + + // Assert + TypeConverter classTypeConverter = TypeDescriptor.GetConverter(properties, true); + Assert.IsNotInstanceOf(classTypeConverter); + + var dynamicPropertyBag = new DynamicPropertyBag(properties); + PropertyDescriptorCollection dynamicProperties = dynamicPropertyBag.GetProperties(); + Assert.AreEqual(4, dynamicProperties.Count); + + var meanAttributes = Attribute.GetCustomAttributes(properties.GetType().GetProperty("Mean")); + Assert.IsNotNull(meanAttributes); + AssertAttributesOfType(meanAttributes, "Verwachtingswaarde", + attribute => attribute.DisplayName); + AssertAttributesOfType(meanAttributes, + "De gemiddelde waarde van de lognormale verdeling.", + attribute => attribute.Description); + + var standardAttributes = Attribute.GetCustomAttributes(properties.GetType().GetProperty("StandardDeviation")); + Assert.IsNotNull(standardAttributes); + AssertAttributesOfType(standardAttributes, "Standaardafwijking", + attribute => attribute.DisplayName); + AssertAttributesOfType(standardAttributes, + "De standaardafwijking van de lognormale verdeling.", + attribute => attribute.Description); + + mockRepository.VerifyAll(); + } + private static void AssertAttributesOfType(IEnumerable attributes, TR expectedValue, Func action) {