Index: Riskeer/Integration/src/Riskeer.Integration.Data/RiskeerProject.cs =================================================================== diff -u -r991f347230a23a879fd6ea458586576c43e5e48b -r6499f75ebc2952a2232bca32c611ec05c7b99774 --- Riskeer/Integration/src/Riskeer.Integration.Data/RiskeerProject.cs (.../RiskeerProject.cs) (revision 991f347230a23a879fd6ea458586576c43e5e48b) +++ Riskeer/Integration/src/Riskeer.Integration.Data/RiskeerProject.cs (.../RiskeerProject.cs) (revision 6499f75ebc2952a2232bca32c611ec05c7b99774) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Properties; @@ -33,22 +34,32 @@ /// /// Constructs a new . /// - public RiskeerProject() : this(Resources.Project_Constructor_Default_name) {} + /// The of the project. + /// Thrown when is null. + public RiskeerProject(AssessmentSection assessmentSection) : this(Resources.Project_Constructor_Default_name, assessmentSection) {} /// /// Constructs a new . /// /// The name of the . - public RiskeerProject(string name) + /// The of the project. + /// Thrown when is null. + public RiskeerProject(string name, AssessmentSection assessmentSection) { + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + Name = name; Description = ""; + AssessmentSection = assessmentSection; } /// - /// Gets or sets the assessment section of the . + /// Gets the assessment section of the . /// - public AssessmentSection AssessmentSection { get; set; } + public AssessmentSection AssessmentSection { get; } /// /// Gets or sets the name of the . Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/RiskeerProjectTest.cs =================================================================== diff -u -r991f347230a23a879fd6ea458586576c43e5e48b -r6499f75ebc2952a2232bca32c611ec05c7b99774 --- Riskeer/Integration/test/Riskeer.Integration.Data.Test/RiskeerProjectTest.cs (.../RiskeerProjectTest.cs) (revision 991f347230a23a879fd6ea458586576c43e5e48b) +++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/RiskeerProjectTest.cs (.../RiskeerProjectTest.cs) (revision 6499f75ebc2952a2232bca32c611ec05c7b99774) @@ -34,32 +34,60 @@ public class RiskeerProjectTest { [Test] + public void DefaultConstructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Call + void Call() => new RiskeerProject(null); + + // Assert + Assert.That(Call, Throws.TypeOf() + .With.Property(nameof(ArgumentNullException.ParamName)) + .EqualTo("assessmentSection")); + } + + [Test] public void DefaultConstructor_ExpectedValue() { + // Setup + AssessmentSection assessmentSection = CreateAssessmentSection(); + // Call - var project = new RiskeerProject(); + var project = new RiskeerProject(assessmentSection); // Assert Assert.IsInstanceOf(project); Assert.AreEqual("Project", project.Name); Assert.AreEqual("", project.Description); - Assert.IsNull(project.AssessmentSection); + Assert.AreSame(assessmentSection, project.AssessmentSection); } [Test] + public void NameConstructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Call + void Call() => new RiskeerProject(string.Empty, null); + + // Assert + Assert.That(Call, Throws.TypeOf() + .With.Property(nameof(ArgumentNullException.ParamName)) + .EqualTo("assessmentSection")); + } + + [Test] public void NameConstructor_SetNameAndInitializeOtherProperties() { // Setup const string someName = ""; + AssessmentSection assessmentSection = CreateAssessmentSection(); // Call - var project = new RiskeerProject(someName); + var project = new RiskeerProject(someName, assessmentSection); // Assert Assert.IsInstanceOf(project); Assert.AreEqual(someName, project.Name); Assert.AreEqual("", project.Description); - Assert.IsNull(project.AssessmentSection); + Assert.AreSame(assessmentSection, project.AssessmentSection); } [Test] @@ -70,7 +98,7 @@ const string nicerDescription = "Nicer description"; // Call - var project = new RiskeerProject + var project = new RiskeerProject(CreateAssessmentSection()) { Name = niceProjectName, Description = nicerDescription @@ -90,7 +118,7 @@ observer.Expect(o => o.UpdateObserver()); mockRepository.ReplayAll(); - var project = new RiskeerProject(); + var project = new RiskeerProject(CreateAssessmentSection()); project.Attach(observer); // Call @@ -109,7 +137,7 @@ observer.Expect(o => o.UpdateObserver()); mockRepository.ReplayAll(); - var project = new RiskeerProject(); + var project = new RiskeerProject(CreateAssessmentSection()); project.Attach(observer); project.NotifyObservers(); @@ -121,9 +149,17 @@ mockRepository.VerifyAll(); } + private static AssessmentSection CreateAssessmentSection() + { + var random = new Random(21); + return new AssessmentSection(random.NextEnumValue()); + } + [TestFixture] private class RiskeerProjectEqualsTest : EqualsTestFixture { + private static readonly AssessmentSection assessmentSection = CreateAssessmentSection(); + protected override RiskeerProject CreateObject() { return CreateProject(); @@ -138,35 +174,34 @@ { RiskeerProject baseProject = CreateProject(); - yield return new TestCaseData(new RiskeerProject("Different name") + yield return new TestCaseData(new RiskeerProject("Different name", assessmentSection) { Description = baseProject.Description }).SetName("Name"); - yield return new TestCaseData(new RiskeerProject(baseProject.Name)) + yield return new TestCaseData(new RiskeerProject(baseProject.Name, assessmentSection)) .SetName("Description"); - var random = new Random(21); - RiskeerProject differentAssessmentSections = CreateProject(); - differentAssessmentSections.AssessmentSection = new AssessmentSection(random.NextEnumValue()); + var differentAssessmentSections = new RiskeerProject("Some name", CreateAssessmentSection()) + { + Description = "Some description" + }; yield return new TestCaseData(differentAssessmentSections) .SetName("AssessmentSections"); } private static RiskeerProject CreateProject() { - var random = new Random(21); - return new RiskeerProject("Some name") + return new RiskeerProject("Some name", assessmentSection) { - Description = "Some description", - AssessmentSection = new AssessmentSection(random.NextEnumValue()) + Description = "Some description" }; } } private class DerivedRiskeerProject : RiskeerProject { - public DerivedRiskeerProject(RiskeerProject project) + public DerivedRiskeerProject(RiskeerProject project) : base(project.AssessmentSection) { Name = project.Name; Description = project.Description;