Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs =================================================================== diff -u -r3aea1664d081533081c7ee4e879a7eeb6586721d -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 3aea1664d081533081c7ee4e879a7eeb6586721d) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) @@ -41,7 +41,7 @@ private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationGroupObserver; private readonly Observer failureMechanismObserver; - private GrassCoverErosionInwardsFailureMechanism failureMechanism; + private readonly GrassCoverErosionInwardsFailureMechanism failureMechanism; private CalculationGroup data; /// @@ -64,11 +64,11 @@ throw new ArgumentNullException(nameof(failureMechanism)); } - InitializeComponent(); - data = calculationGroup; this.failureMechanism = failureMechanism; - + + InitializeComponent(); + failureMechanismObserver = new Observer(UpdateDataGridViewDataSource) { Observable = failureMechanism @@ -86,33 +86,14 @@ { Observable = calculationGroup }; - } - /// - /// Gets or sets the failure mechanism. - /// - public GrassCoverErosionInwardsFailureMechanism FailureMechanism - { - get => failureMechanism; - set - { - failureMechanism = value; - failureMechanismObserver.Observable = failureMechanism; - UpdateDataGridViewDataSource(); - } + UpdateDataGridViewDataSource(); } public object Data { get => data; - set - { - data = value as CalculationGroup; - - calculationInputObserver.Observable = data; - calculationGroupObserver.Observable = data; - UpdateDataGridViewDataSource(); - } + set => data = value as CalculationGroup; } protected override void OnLoad(EventArgs e) @@ -140,7 +121,7 @@ { scenarioSelectionControl.EndEdit(); - if (failureMechanism?.SectionResults == null || data?.Children == null) + if (failureMechanism.SectionResults == null || data.Children == null) { scenarioSelectionControl.ClearDataSource(); } Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs =================================================================== diff -u -r0680c1ebf175f2364f959f43ddb2b22782b3907d -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 0680c1ebf175f2364f959f43ddb2b22782b3907d) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) @@ -192,7 +192,7 @@ { GetViewData = context => context.WrappedData, GetViewName = (view, context) => RiskeerCommonFormsResources.Scenarios_DisplayName, - AfterCreate = (view, context) => view.FailureMechanism = context.ParentFailureMechanism, + CreateInstance = context => new GrassCoverErosionInwardsScenariosView(context.WrappedData, context.ParentFailureMechanism), CloseForData = CloseScenariosViewForData, Image = RiskeerCommonFormsResources.ScenariosIcon }; Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs =================================================================== diff -u -r3aea1664d081533081c7ee4e879a7eeb6586721d -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs (.../GrassCoverErosionInwardsScenariosViewTest.cs) (revision 3aea1664d081533081c7ee4e879a7eeb6586721d) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs (.../GrassCoverErosionInwardsScenariosViewTest.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) @@ -69,7 +69,6 @@ Assert.IsInstanceOf(view); Assert.IsTrue(view.AutoScroll); Assert.AreSame(failureMechanism.CalculationsGroup, view.Data); - Assert.AreSame(failureMechanism, view.FailureMechanism); var scenarioSelectionControl = new ControlTester("scenarioSelectionControl").TheObject as ScenarioSelectionControl; @@ -101,50 +100,15 @@ } [Test] - public void Data_ValidDataSet_ValidData() + public void Constructor_WithValidData_UpdateScenarioControl() { // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - var calculationGroup = new CalculationGroup(); + GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - // Call - view.Data = calculationGroup; - - // Assert - Assert.AreSame(calculationGroup, view.Data); - } - } - - [Test] - public void FailureMechanism_ValidFailureMechanismSet_ValidFailureMechanism() - { - // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) + // Call + using (ShowScenariosView(failureMechanism)) { - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - - // Call - view.FailureMechanism = failureMechanism; - // Assert - Assert.AreSame(failureMechanism, view.FailureMechanism); - } - } - - [Test] - public void Data_WithFailureMechanism_UpdateScenarioControl() - { - // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.FailureMechanism = failureMechanism; - - // Call - view.Data = failureMechanism.CalculationsGroup; - - // Assert AssertDataGridView(failureMechanism, false, new[] { new[] @@ -162,84 +126,17 @@ } [Test] - public void Data_SetToNullAfterGridViewShowsData_ClearsScenarioControl() - { - // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.FailureMechanism = failureMechanism; - view.Data = failureMechanism.CalculationsGroup; - - // Call - view.Data = null; - - // Assert - AssertDataGridView(failureMechanism, true); - } - } - - [Test] - public void FailureMechanism_WithData_UpdateScenarioControl() - { - // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - - // Call - view.FailureMechanism = failureMechanism; - - // Assert - AssertDataGridView(failureMechanism, false, new[] - { - new[] - { - "", - "CalculationA" - }, - new[] - { - "", - "CalculationB" - } - }); - } - } - - [Test] - public void FailureMechanism_WithoutData_ClearsScenarioControl() - { - // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; - - // Call - view.FailureMechanism = null; - - // Assert - AssertDataGridView(failureMechanism, true); - } - } - - [Test] public void NotifyFailureMechanism_SectionsUpdatedAfterFullInitialization_NewRowAddedToView() { // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; + GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - List newSections = view.FailureMechanism.Sections.ToList(); + using (ShowScenariosView(failureMechanism)) + { + List newSections = failureMechanism.Sections.ToList(); newSections.Add(new FailureMechanismSection("SectionC", new[] { - view.FailureMechanism.Sections.Last().EndPoint, + failureMechanism.Sections.Last().EndPoint, new Point2D(30, 30) })); @@ -271,12 +168,10 @@ public void NotifyCalculation_CalculationChangedDikeProfile_CalculationMovedToOtherSectionResultOptions() { // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; + GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); + using (ShowScenariosView(failureMechanism)) + { var calculationA = (GrassCoverErosionInwardsCalculation) failureMechanism.CalculationsGroup.Children[0]; var calculationB = (GrassCoverErosionInwardsCalculation) failureMechanism.CalculationsGroup.Children[1]; @@ -306,12 +201,10 @@ public void NotifyCalculationGroup_CalculationAdded_CalculationAddedToSectionResultOptions() { // Setup - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView()) - { - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; + GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); + using (ShowScenariosView(failureMechanism)) + { var calculationB = (GrassCoverErosionInwardsCalculationScenario) failureMechanism.CalculationsGroup.Children[1]; var calculationC = new GrassCoverErosionInwardsCalculationScenario { @@ -346,7 +239,7 @@ } } - private void AssertDataGridView( + private static void AssertDataGridView( GrassCoverErosionInwardsFailureMechanism failureMechanism, bool shouldBeCleared, string[][] expectedComboBoxItemTexts = null) @@ -419,11 +312,6 @@ return failureMechanism; } - private GrassCoverErosionInwardsScenariosView ShowScenariosView() - { - return ShowScenariosView(new GrassCoverErosionInwardsFailureMechanism()); - } - private GrassCoverErosionInwardsScenariosView ShowScenariosView(GrassCoverErosionInwardsFailureMechanism failureMechanism) { var scenariosView = new GrassCoverErosionInwardsScenariosView(failureMechanism.CalculationsGroup, failureMechanism); Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismViewInfoTest.cs =================================================================== diff -u -rf1a99bd6f1bfda45d8b7b4dbb8d7b7e51fcc718f -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismViewInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewInfoTest.cs) (revision f1a99bd6f1bfda45d8b7b4dbb8d7b7e51fcc718f) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismViewInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewInfoTest.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) @@ -168,17 +168,34 @@ } [Test] - [TestCase(true)] - [TestCase(false)] - public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant) + public void AdditionalDataCheck_FailureMechanismRelevant_ReturnTrue() { // Setup var assessmentSection = mocks.Stub(); mocks.ReplayAll(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + + var context = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); + + // Call + bool result = info.AdditionalDataCheck(context); + + // Assert + Assert.IsTrue(result); + mocks.VerifyAll(); + } + + [Test] + public void AdditionalDataCheck_FailureMechanismNotRelevant_ReturnFalse() + { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism { - IsRelevant = isRelevant + IsRelevant = false }; var context = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); @@ -187,7 +204,7 @@ bool result = info.AdditionalDataCheck(context); // Assert - Assert.AreEqual(isRelevant, result); + Assert.IsFalse(result); mocks.VerifyAll(); } Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs =================================================================== diff -u -r3aea1664d081533081c7ee4e879a7eeb6586721d -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs (.../GrassCoverErosionInwardsScenariosViewInfoTest.cs) (revision 3aea1664d081533081c7ee4e879a7eeb6586721d) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs (.../GrassCoverErosionInwardsScenariosViewInfoTest.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) @@ -21,6 +21,7 @@ using System.Drawing; using System.Linq; +using Core.Common.Controls.Views; using Core.Common.Gui.Plugin; using Core.Common.TestUtil; using NUnit.Framework; @@ -73,7 +74,7 @@ } [Test] - public void GetViewData_Always_ReturnWrappedData() + public void GetViewData_WithContext_ReturnWrappedData() { // Setup var calculationGroup = new CalculationGroup(); @@ -252,20 +253,19 @@ } [Test] - public void AfterCreate_Always_SetsSpecificPropertiesToView() + public void AfterCreate_WithContext_ReturnsGrassCoverErosionInwardsScenariosView() { // Setup - using (var view = new GrassCoverErosionInwardsScenariosView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism())) - { - var group = new CalculationGroup(); - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var context = new GrassCoverErosionInwardsScenariosContext(group, failureMechanism); + var group = new CalculationGroup(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var context = new GrassCoverErosionInwardsScenariosContext(group, failureMechanism); - // Call - info.AfterCreate(view, context); - + // Call + using (IView view = info.CreateInstance(context)) + { // Assert - Assert.AreSame(failureMechanism, view.FailureMechanism); + Assert.IsInstanceOf(view); + Assert.AreSame(group, view.Data); } } }