Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.Designer.cs =================================================================== diff -u -r9b0ddd4e6dcb61bdc6482dad639bdbb024f7bf0c -r3afbd3fd6c74d447b520eb1182e677db4816ac68 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.Designer.cs (.../MacroStabilityInwardsOutputView.Designer.cs) (revision 9b0ddd4e6dcb61bdc6482dad639bdbb024f7bf0c) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.Designer.cs (.../MacroStabilityInwardsOutputView.Designer.cs) (revision 3afbd3fd6c74d447b520eb1182e677db4816ac68) @@ -30,19 +30,6 @@ /// private System.ComponentModel.IContainer components = null; - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - #region Component Designer generated code /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.cs =================================================================== diff -u -rd0dfbe43e89d97fb516d6c8a5cff1c35237ce715 -r3afbd3fd6c74d447b520eb1182e677db4816ac68 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.cs (.../MacroStabilityInwardsOutputView.cs) (revision d0dfbe43e89d97fb516d6c8a5cff1c35237ce715) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsOutputView.cs (.../MacroStabilityInwardsOutputView.cs) (revision 3afbd3fd6c74d447b520eb1182e677db4816ac68) @@ -20,7 +20,9 @@ // All rights reserved. using System.Windows.Forms; +using Core.Common.Base; using Core.Common.Controls.Views; +using Ringtoets.MacroStabilityInwards.Data; namespace Ringtoets.MacroStabilityInwards.Forms.Views { @@ -29,14 +31,50 @@ /// public partial class MacroStabilityInwardsOutputView : UserControl, IView { + private readonly Observer outputObserver; + + private MacroStabilityInwardsCalculationScenario data; + /// /// Creates a new instance of . /// public MacroStabilityInwardsOutputView() { InitializeComponent(); + + outputObserver = new Observer(UpdateChartData); } - public object Data { get; set; } + public object Data + { + get + { + return data; + } + set + { + data = value as MacroStabilityInwardsCalculationScenario; + + outputObserver.Observable = data; + + UpdateChartData(); + } + } + + protected override void Dispose(bool disposing) + { + outputObserver.Dispose(); + + if (disposing) + { + components?.Dispose(); + } + base.Dispose(disposing); + } + + private void UpdateChartData() + { + macroStabilityInwardsOutputChartControl.Data = data != null && data.HasOutput ? data : null; + } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsOutputViewTest.cs =================================================================== diff -u -r9b0ddd4e6dcb61bdc6482dad639bdbb024f7bf0c -r3afbd3fd6c74d447b520eb1182e677db4816ac68 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsOutputViewTest.cs (.../MacroStabilityInwardsOutputViewTest.cs) (revision 9b0ddd4e6dcb61bdc6482dad639bdbb024f7bf0c) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsOutputViewTest.cs (.../MacroStabilityInwardsOutputViewTest.cs) (revision 3afbd3fd6c74d447b520eb1182e677db4816ac68) @@ -19,9 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Linq; using System.Windows.Forms; using Core.Common.Controls.Views; using NUnit.Framework; +using Ringtoets.Common.Forms.TestUtil; +using Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.MacroStabilityInwards.Data.TestUtil; using Ringtoets.MacroStabilityInwards.Forms.Views; namespace Ringtoets.MacroStabilityInwards.Forms.Test.Views @@ -47,5 +51,176 @@ Assert.IsInstanceOf(splitContainer.Panel1.Controls[0]); } } + + [Test] + public void Data_MacroStabilityInwardsCalculationScenario_DataSet() + { + // Setup + using (var view = new MacroStabilityInwardsOutputView()) + { + var calculation = new MacroStabilityInwardsCalculationScenario(); + + // Call + view.Data = calculation; + + // Assert + Assert.AreSame(calculation, view.Data); + } + } + + [Test] + public void Data_OtherThanMacroStabilityInwardsCalculationScenario_DataNull() + { + // Setup + using (var view = new MacroStabilityInwardsOutputView()) + { + // Call + view.Data = new object(); + + // Assert + Assert.IsNull(view.Data); + } + } + + [Test] + public void Data_MacroStabilityInwardsCalculationScenarioWithOutput_DataSetToChartControl() + { + // Setup + using (var form = new Form()) + using (var view = new MacroStabilityInwardsOutputView()) + { + form.Controls.Add(view); + form.Show(); + + MacroStabilityInwardsOutputChartControl chartControl = ControlTestHelper.GetControls(form, "macroStabilityInwardsOutputChartControl").Single(); + + var calculation = new MacroStabilityInwardsCalculationScenario + { + Output = new TestMacroStabilityInwardsOutput() + }; + + // Call + view.Data = calculation; + + // Assert + Assert.AreSame(calculation, view.Data); + Assert.AreSame(calculation, chartControl.Data); + } + } + + [Test] + public void Data_MacroStabilityInwardsCalculationScenarioWithoutOutput_ChartControlDataNull() + { + // Setup + using (var form = new Form()) + using (var view = new MacroStabilityInwardsOutputView()) + { + form.Controls.Add(view); + form.Show(); + + MacroStabilityInwardsOutputChartControl chartControl = ControlTestHelper.GetControls(form, "macroStabilityInwardsOutputChartControl").Single(); + + var calculation = new MacroStabilityInwardsCalculationScenario(); + + // Call + view.Data = calculation; + + // Assert + Assert.AreSame(calculation, view.Data); + Assert.IsNull(chartControl.Data); + } + } + + [Test] + public void Data_SetToNull_ChartControlDataNull() + { + // Setup + var calculation = new MacroStabilityInwardsCalculationScenario + { + Output = new TestMacroStabilityInwardsOutput() + }; + + using (var form = new Form()) + using (var view = new MacroStabilityInwardsOutputView + { + Data = calculation + }) + { + form.Controls.Add(view); + form.Show(); + + MacroStabilityInwardsOutputChartControl chartControl = ControlTestHelper.GetControls(form, "macroStabilityInwardsOutputChartControl").Single(); + + // Precondition + Assert.AreSame(calculation, view.Data); + Assert.AreSame(calculation, chartControl.Data); + + // Call + view.Data = null; + + // Assert + Assert.IsNull(view.Data); + Assert.IsNull(chartControl.Data); + } + } + + [Test] + public void GivenCalculationWithOutput_WhenOutputCleared_ThenChartControlDataSetToNull() + { + // Given + using (var form = new Form()) + using (var view = new MacroStabilityInwardsOutputView()) + { + form.Controls.Add(view); + form.Show(); + + MacroStabilityInwardsOutputChartControl chartControl = ControlTestHelper.GetControls(form, "macroStabilityInwardsOutputChartControl").Single(); + + var calculation = new MacroStabilityInwardsCalculationScenario + { + Output = new TestMacroStabilityInwardsOutput() + }; + + view.Data = calculation; + + // Precondition + Assert.AreSame(calculation, chartControl.Data); + + // When + calculation.ClearOutput(); + calculation.NotifyObservers(); + + // Then + Assert.IsNull(chartControl.Data); + } + } + + [Test] + public void GivenCalculationWithoutOutput_WhenOutputSet_ThenChartControlDataSetToCalculation() + { + // Given + using (var form = new Form()) + using (var view = new MacroStabilityInwardsOutputView()) + { + form.Controls.Add(view); + form.Show(); + + MacroStabilityInwardsOutputChartControl chartControl = ControlTestHelper.GetControls(form, "macroStabilityInwardsOutputChartControl").Single(); + + var calculation = new MacroStabilityInwardsCalculationScenario(); + + view.Data = calculation; + + // Precondition + Assert.IsNull(chartControl.Data); + + // When + calculation.Output = new TestMacroStabilityInwardsOutput(); + calculation.NotifyObservers(); + + // Then + Assert.AreSame(calculation, chartControl.Data); + } + } } } \ No newline at end of file