Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs =================================================================== diff -u -r950c2bc06cda222b149f4663db732cf1c4554dbe -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs (.../GrassCoverErosionInwardsCalculationRow.cs) (revision 950c2bc06cda222b149f4663db732cf1c4554dbe) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs (.../GrassCoverErosionInwardsCalculationRow.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -44,6 +44,9 @@ private const int useForeshoreColumnIndex = 6; private readonly IObservablePropertyChangeHandler propertyChangeHandler; + public event EventHandler RowUpdated; + public event EventHandler RowUpdateDone; + /// /// Creates a new instance of . /// @@ -139,11 +142,8 @@ get => GrassCoverErosionInwardsCalculationScenario.InputParameters.UseBreakWater; set { - if (!GrassCoverErosionInwardsCalculationScenario.InputParameters.UseBreakWater.Equals(value)) - { - PropertyChangeHelper.ChangePropertyAndNotify(() => GrassCoverErosionInwardsCalculationScenario.InputParameters.UseBreakWater = value, propertyChangeHandler); - UpdateUseBreakWaterColumnStateDefinitions(); - } + PropertyChangeHelper.ChangePropertyAndNotify(() => GrassCoverErosionInwardsCalculationScenario.InputParameters.UseBreakWater = value, propertyChangeHandler); + UpdateUseBreakWaterColumnStateDefinitions(); } } Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs =================================================================== diff -u -r71cb488334fbc9d5aa764ac9ccd8fe64872928fe -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs (.../GrassCoverErosionInwardsCalculationsView.cs) (revision 71cb488334fbc9d5aa764ac9ccd8fe64872928fe) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs (.../GrassCoverErosionInwardsCalculationsView.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -66,88 +66,76 @@ /// /// Creates a new instance of . /// - public GrassCoverErosionInwardsCalculationsView() + public GrassCoverErosionInwardsCalculationsView(CalculationGroup data, GrassCoverErosionInwardsFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { InitializeComponent(); InitializeDataGridView(); InitializeListBox(); - failureMechanismObserver = new Observer(OnFailureMechanismUpdate); - hydraulicBoundaryLocationsObserver = new Observer(UpdateSelectableHydraulicBoundaryLocationsColumn); - dikeProfilesObserver = new Observer(UpdateDikeProfilesColumn); + if (data == null) + { + throw new ArgumentNullException(nameof(data)); + } + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } - // The concat is needed to observe the input of calculations in child groups. - inputObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children.Concat(pcg.Children.OfType().Select(pc => pc.InputParameters))); - calculationScenarioObserver = new RecursiveObserver(() => dataGridViewControl.RefreshDataGridView(), pcg => pcg.Children); - calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children); - } + this.failureMechanism = failureMechanism; + this.assessmentSection = assessmentSection; + Data = data; - /// - /// Gets or sets the grass cover erosion inwards failure mechanism. - /// - public GrassCoverErosionInwardsFailureMechanism FailureMechanism - { - get => failureMechanism; - set + failureMechanismObserver = new Observer(OnFailureMechanismUpdate) { - failureMechanism = value; - failureMechanismObserver.Observable = failureMechanism; + Observable = failureMechanism + }; + hydraulicBoundaryLocationsObserver = new Observer(UpdateSelectableHydraulicBoundaryLocationsColumn) + { + Observable = assessmentSection.HydraulicBoundaryDatabase.Locations + }; + dikeProfilesObserver = new Observer(UpdateDikeProfilesColumn) + { + Observable = failureMechanism.DikeProfiles + }; - UpdateSelectableHydraulicBoundaryLocationsColumn(); - UpdateDikeProfilesColumn(); - UpdateSectionsListBox(); - UpdateGenerateCalculationsButtonState(); - } - } - - /// - /// Gets or sets the assessment section. - /// - public IAssessmentSection AssessmentSection - { - get => assessmentSection; - set + // The concat is needed to observe the input of calculations in child groups. + inputObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children.Concat(pcg.Children.OfType().Select(pc => pc.InputParameters))) { - assessmentSection = value; + Observable = calculationGroup + }; + calculationScenarioObserver = new RecursiveObserver(() => dataGridViewControl.RefreshDataGridView(), pcg => pcg.Children) + { + Observable = calculationGroup + }; + calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children) + { + Observable = calculationGroup + }; - hydraulicBoundaryLocationsObserver.Observable = assessmentSection?.HydraulicBoundaryDatabase.Locations; - - UpdateSelectableHydraulicBoundaryLocationsColumn(); - } + UpdateSelectableHydraulicBoundaryLocationsColumn(); + UpdateDikeProfilesColumn(); + UpdateSectionsListBox(); + UpdateGenerateCalculationsButtonState(); } public object Selection => CreateSelectedItemFromCurrentRow(); public object Data { get => calculationGroup; - set - { - calculationGroup = value as CalculationGroup; - - if (calculationGroup != null) - { - UpdateDataGridViewDataSource(); - inputObserver.Observable = calculationGroup; - calculationScenarioObserver.Observable = calculationGroup; - calculationGroupObserver.Observable = calculationGroup; - } - else - { - dataGridViewControl.SetDataSource(null); - inputObserver.Observable = null; - calculationScenarioObserver.Observable = null; - calculationGroupObserver.Observable = null; - } - } + set => calculationGroup = value as CalculationGroup; } protected override void OnLoad(EventArgs e) { // Necessary to correctly load the content of the dropdown lists of the comboboxes... UpdateDataGridViewDataSource(); base.OnLoad(e); - + dataGridViewControl.CellFormatting += HandleCellStyling; } @@ -156,7 +144,6 @@ if (disposing) { failureMechanismObserver.Dispose(); - inputObserver.Dispose(); calculationScenarioObserver.Dispose(); calculationGroupObserver.Dispose(); @@ -219,9 +206,6 @@ dataGridViewControl.AddTextBoxColumn( nameof(GrassCoverErosionInwardsCalculationRow.StandardDeviationCriticalFlowRate), Resources.GrassCoverErosionInwardsCalculation_StandardDeviation_Critical_FlowRate); - - UpdateSelectableHydraulicBoundaryLocationsColumn(); - UpdateDikeProfilesColumn(); } private void InitializeListBox() @@ -232,7 +216,7 @@ private void UpdateGenerateCalculationsButtonState() { - buttonGenerateCalculations.Enabled = failureMechanism != null; + buttonGenerateCalculations.Enabled = failureMechanism.DikeProfiles.Any(); } private GrassCoverErosionInwardsInputContext CreateSelectedItemFromCurrentRow() @@ -260,7 +244,7 @@ objectCollection.AddRange(comboBoxItems); } - private static List> GetSelectableHydraulicBoundaryLocationsDataSource( + private static DataGridViewComboBoxItemWrapper[] GetSelectableHydraulicBoundaryLocationsDataSource( IEnumerable selectableHydraulicBoundaryLocations = null) { var dataGridViewComboBoxItemWrappers = new List> @@ -273,7 +257,7 @@ dataGridViewComboBoxItemWrappers.AddRange(selectableHydraulicBoundaryLocations.Select(hbl => new DataGridViewComboBoxItemWrapper(hbl))); } - return dataGridViewComboBoxItemWrappers; + return dataGridViewComboBoxItemWrappers.ToArray(); } #region Data sources @@ -334,7 +318,7 @@ IEnumerable locations = GetSelectableHydraulicBoundaryLocationsForCalculation(rowData.GrassCoverErosionInwardsCalculationScenario); var cell = (DataGridViewComboBoxCell) dataGridViewRow.Cells[selectableHydraulicBoundaryLocationColumnIndex]; - DataGridViewComboBoxItemWrapper[] dataGridViewComboBoxItemWrappers = GetSelectableHydraulicBoundaryLocationsDataSource(locations).ToArray(); + DataGridViewComboBoxItemWrapper[] dataGridViewComboBoxItemWrappers = GetSelectableHydraulicBoundaryLocationsDataSource(locations); SetItemsOnObjectCollection(cell.Items, dataGridViewComboBoxItemWrappers); } @@ -372,11 +356,11 @@ private void FillAvailableDikeProfilesList(DataGridViewRow dataGridViewRow) { var cell = (DataGridViewComboBoxCell) dataGridViewRow.Cells[selectableDikeProfileColumnIndex]; - DataGridViewComboBoxItemWrapper[] dataGridViewComboBoxItemWrappers = GetSelectableDikeProfileDataSource(failureMechanism.DikeProfiles).ToArray(); + DataGridViewComboBoxItemWrapper[] dataGridViewComboBoxItemWrappers = GetSelectableDikeProfileDataSource(failureMechanism.DikeProfiles); SetItemsOnObjectCollection(cell.Items, dataGridViewComboBoxItemWrappers); } - private static List> GetSelectableDikeProfileDataSource(IEnumerable selectableDikeProfiles = null) + private static DataGridViewComboBoxItemWrapper[] GetSelectableDikeProfileDataSource(IEnumerable selectableDikeProfiles = null) { var dataGridViewComboBoxItemWrappers = new List> { @@ -388,7 +372,7 @@ dataGridViewComboBoxItemWrappers.AddRange(selectableDikeProfiles.Select(dp => new DataGridViewComboBoxItemWrapper(dp))); } - return dataGridViewComboBoxItemWrappers; + return dataGridViewComboBoxItemWrappers.ToArray(); } #endregion @@ -407,15 +391,15 @@ using (new SuspendDataGridViewColumnResizes(selectableHydraulicBoundaryLocationColumn)) { SetItemsOnObjectCollection(selectableHydraulicBoundaryLocationColumn.Items, - GetSelectableHydraulicBoundaryLocationsDataSource(GetSelectableHydraulicBoundaryLocationsFromFailureMechanism()).ToArray()); + GetSelectableHydraulicBoundaryLocationsDataSource(GetSelectableHydraulicBoundaryLocationsFromFailureMechanism())); } var selectableDikeProfileColumn = (DataGridViewComboBoxColumn) dataGridViewControl.GetColumnFromIndex(selectableDikeProfileColumnIndex); using (new SuspendDataGridViewColumnResizes(selectableDikeProfileColumn)) { SetItemsOnObjectCollection(selectableDikeProfileColumn.Items, - GetSelectableDikeProfileDataSource(failureMechanism.DikeProfiles).ToArray()); + GetSelectableDikeProfileDataSource(failureMechanism.DikeProfiles)); } } @@ -429,11 +413,6 @@ private IEnumerable GetSelectableHydraulicBoundaryLocationsFromFailureMechanism() { - if (assessmentSection == null) - { - return null; - } - List hydraulicBoundaryLocations = assessmentSection.HydraulicBoundaryDatabase.Locations; return hydraulicBoundaryLocations.Select(hbl => new SelectableHydraulicBoundaryLocation(hbl, null)).ToList(); @@ -455,11 +434,6 @@ private void OnGenerateCalculationsButtonClick(object sender, EventArgs e) { - if (calculationGroup == null) - { - return; - } - using (var dialog = new GrassCoverErosionInwardsDikeProfileSelectionDialog(Parent, failureMechanism.DikeProfiles)) { dialog.ShowDialog(); Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs =================================================================== diff -u -r950c2bc06cda222b149f4663db732cf1c4554dbe -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 950c2bc06cda222b149f4663db732cf1c4554dbe) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -251,16 +251,12 @@ yield return new ViewInfo { + CreateInstance = context => new GrassCoverErosionInwardsCalculationsView(context.WrappedData,context.FailureMechanism, context.AssessmentSection), GetViewData = context => context.WrappedData, GetViewName = (view, context) => context.WrappedData.Name, Image = RiskeerCommonFormsResources.GeneralFolderIcon, AdditionalDataCheck = context => context.WrappedData == context.FailureMechanism.CalculationsGroup, CloseForData = CloseGrassCoverErosionInwardsCalculationsViewForData, - AfterCreate = (view, context) => - { - view.AssessmentSection = context.AssessmentSection; - view.FailureMechanism = context.FailureMechanism; - } }; } @@ -673,8 +669,14 @@ IInquiryHelper inquiryHelper = GetInquiryHelper(); var builder = new RiskeerContextMenuBuilder(Gui.Get(context, treeViewControl)); - builder.AddOpenItem() - .AddImportItem() + + if (!isNestedGroup) + { + builder.AddOpenItem() + .AddSeparator(); + } + + builder.AddImportItem() .AddExportItem() .AddSeparator(); Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationRowTest.cs =================================================================== diff -u -r6c041cc09388a1435dfc52f610e74fea864c143c -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationRowTest.cs (.../GrassCoverErosionInwardsCalculationRowTest.cs) (revision 6c041cc09388a1435dfc52f610e74fea864c143c) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationRowTest.cs (.../GrassCoverErosionInwardsCalculationRowTest.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -60,7 +60,7 @@ // Assert string paramName = Assert.Throws(Call).ParamName; - Assert.AreEqual("grassCoverErosionInwardsCalculationScenario", paramName); + Assert.AreEqual("calculationScenario", paramName); mocks.VerifyAll(); } @@ -82,15 +82,15 @@ var mocks = new MockRepository(); var handler = mocks.Stub(); mocks.ReplayAll(); - var grassCoverErosionInwardsCalculationScenario = new GrassCoverErosionInwardsCalculationScenario(); + var calculationScenario = new GrassCoverErosionInwardsCalculationScenario(); // Call - var grassCoverErosionInwardsCalculationRow = new GrassCoverErosionInwardsCalculationRow(grassCoverErosionInwardsCalculationScenario, handler); + var calculationRow = new GrassCoverErosionInwardsCalculationRow(calculationScenario, handler); // Asserts - Assert.AreSame(grassCoverErosionInwardsCalculationScenario, grassCoverErosionInwardsCalculationRow.GrassCoverErosionInwardsCalculationScenario); + Assert.AreSame(calculationScenario, calculationRow.GrassCoverErosionInwardsCalculationScenario); - IDictionary columnStateDefinitions = grassCoverErosionInwardsCalculationRow.ColumnStateDefinitions; + IDictionary columnStateDefinitions = calculationRow.ColumnStateDefinitions; Assert.AreEqual(3, columnStateDefinitions.Count); DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, breakWaterTypeColumnIndex); @@ -207,27 +207,6 @@ } [Test] - public void UseBreakWater_ChangeToEqualValue_NoNotificationsOutputNotCleared() - { - // Setup - var oldValue = true; - - // Call - AssertPropertyNotChanged( - row => - { - oldValue = row.UseBreakWater; - row.UseBreakWater = row.UseBreakWater; - }, - calculation => - { - // Assert - Assert.NotNull(oldValue); - Assert.AreEqual(oldValue, calculation.InputParameters.UseBreakWater); - }); - } - - [Test] [TestCase(true, true, false)] [TestCase(false, false, true)] public void UseBreakWaterState_AlwaysOnChange_CorrectColumnStates(bool useBreakWaterState, bool expectedColumnState, bool isReadOnly) Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationsViewTest.cs =================================================================== diff -u -r950c2bc06cda222b149f4663db732cf1c4554dbe -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationsViewTest.cs (.../GrassCoverErosionInwardsCalculationsViewTest.cs) (revision 950c2bc06cda222b149f4663db732cf1c4554dbe) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsCalculationsViewTest.cs (.../GrassCoverErosionInwardsCalculationsViewTest.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -41,7 +41,6 @@ using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Hydraulics; using Riskeer.Common.Data.TestUtil; -using Riskeer.Common.Forms.TestUtil; using Riskeer.GrassCoverErosionInwards.Data; using Riskeer.GrassCoverErosionInwards.Data.TestUtil; using Riskeer.GrassCoverErosionInwards.Forms.PresentationObjects; @@ -65,25 +64,97 @@ private Form testForm; [Test] + public void Constructor_CalculationGroupNull_ThrowsArgumentNullException() + { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + + void Call() => new GrassCoverErosionInwardsCalculationsView(null, failureMechanism, assessmentSection); + + // Assert + string paramName = Assert.Throws(Call).ParamName; + Assert.AreEqual("data", paramName); + + mocks.VerifyAll(); + } + + [Test] + public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + + void Call() => new GrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), null, assessmentSection); + + // Assert + string paramName = Assert.Throws(Call).ParamName; + Assert.AreEqual("failureMechanism", paramName); + + mocks.VerifyAll(); + } + + [Test] + public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + + void Call() => new GrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, null); + + // Assert + string paramName = Assert.Throws(Call).ParamName; + Assert.AreEqual("assessmentSection", paramName); + + mocks.VerifyAll(); + } + + [Test] public void Constructor_DefaultValues() { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + // Call - using (var grassCoverErosionInwardsCalculationsView = new GrassCoverErosionInwardsCalculationsView()) + using (var calculationsView = new GrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { // Assert - Assert.IsInstanceOf(grassCoverErosionInwardsCalculationsView); - Assert.IsInstanceOf(grassCoverErosionInwardsCalculationsView); - Assert.IsInstanceOf(grassCoverErosionInwardsCalculationsView); - Assert.IsNull(grassCoverErosionInwardsCalculationsView.Data); - Assert.IsNull(grassCoverErosionInwardsCalculationsView.AssessmentSection); + Assert.IsInstanceOf(calculationsView); + Assert.IsInstanceOf(calculationsView); + Assert.IsInstanceOf(calculationsView); } + + mocks.VerifyAll(); } [Test] public void Constructor_DataGridViewCorrectlyInitialized() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + // Call - using (ShowGrassCoverErosionInwardsCalculationsView()) + using (ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -96,13 +167,23 @@ Assert.AreEqual("DisplayName", column.DisplayMember); } } + + mocks.VerifyAll(); } [Test] public void Constructor_DataGridViewControlColumnHeadersCorrectlyInitialized() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + // Call - using (ShowGrassCoverErosionInwardsCalculationsView()) + using (ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { // Assert var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -118,90 +199,44 @@ Assert.AreEqual("Verwachtingswaarde kritiek overslagdebiet [m3/m/s]", dataGridView.Columns[meanCriticalFlowRateColumnIndex].HeaderText); Assert.AreEqual("Standaardafwijking kritiek overslagdebiet [m3/m/s]", dataGridView.Columns[standardDeviationCriticalFlowRateColumnIndex].HeaderText); } + + mocks.VerifyAll(); } [Test] public void Constructor_ListBoxCorrectlyInitialized() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); + GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); + // Call - using (ShowGrassCoverErosionInwardsCalculationsView()) + using (ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { var listBox = (ListBox) new ControlTester("listBox").TheObject; // Assert - Assert.AreEqual(0, listBox.Items.Count); + Assert.AreEqual(2, listBox.Items.Count); } - } - [Test] - public void Data_SetToNull_DoesNotThrow() - { - // Setup - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) - { - // Call - var testDelegate = new TestDelegate(() => grassCoverErosionInwardsCalculationsView.Data = null); - - // Assert - Assert.DoesNotThrow(testDelegate); - } + mocks.VerifyAll(); } [Test] - public void GrassCoverErosionInwardsFailureMechanism_FailureMechanismWithSections_SectionsListBoxCorrectlyInitialized() - { - // Setup - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var failureMechanismSection1 = new FailureMechanismSection("Section 1", new[] - { - new Point2D(0.0, 0.0), - new Point2D(5.0, 0.0) - }); - var failureMechanismSection2 = new FailureMechanismSection("Section 2", new[] - { - new Point2D(5.0, 0.0), - new Point2D(10.0, 0.0) - }); - var failureMechanismSection3 = new FailureMechanismSection("Section 3", new[] - { - new Point2D(10.0, 0.0), - new Point2D(15.0, 0.0) - }); - - FailureMechanismTestHelper.SetSections(failureMechanism, new[] - { - failureMechanismSection1, - failureMechanismSection2, - failureMechanismSection3 - }); - - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) - { - // Call - grassCoverErosionInwardsCalculationsView.FailureMechanism = failureMechanism; - - // Assert - var listBox = (ListBox) new ControlTester("listBox").TheObject; - Assert.AreEqual(3, listBox.Items.Count); - Assert.AreSame(failureMechanismSection1, listBox.Items[0]); - Assert.AreSame(failureMechanismSection2, listBox.Items[1]); - Assert.AreSame(failureMechanismSection3, listBox.Items[2]); - } - } - - [Test] public void AssessmentSection_WithHydraulicBoundaryDatabaseSurfaceLinesNull_SelectableHydraulicBoundaryLocationsComboboxCorrectlyInitialized() { // Setup var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(assessmentSection)) + // Call + using (ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(assessmentSection)) { - // Call - grassCoverErosionInwardsCalculationsView.AssessmentSection = assessmentSection; - // Assert var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; var hydraulicBoundaryLocationCombobox = (DataGridViewComboBoxColumn) dataGridView.Columns[selectableHydraulicBoundaryLocationsColumnIndex]; @@ -223,12 +258,10 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( + // Call + using (ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { - // Call - grassCoverErosionInwardsCalculationsView.AssessmentSection = assessmentSection; - // Assert var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; var hydraulicBoundaryLocationCombobox = (DataGridViewComboBoxColumn) dataGridView.Columns[selectableHydraulicBoundaryLocationsColumnIndex]; @@ -243,47 +276,38 @@ } [Test] - public void ButtonGenerateCalculations_WithoutGrassCoverErosionInwardsFailureMechanism_ButtonDisabled() + public void ButtonGenerateCalculations_DikeProfilesPresent_ButtonEnabled() { // Setup - GrassCoverErosionInwardsFailureMechanism grassCoverErosionInwardsFailureMechanism = null; + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) + ConfigureHydraulicBoundaryDatabase(assessmentSection); + + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(assessmentSection)) { - grassCoverErosionInwardsCalculationsView.FailureMechanism = grassCoverErosionInwardsFailureMechanism; - var button = (Button) grassCoverErosionInwardsCalculationsView.Controls.Find("buttonGenerateCalculations", true)[0]; + var button = (Button) calculationsView.Controls.Find("buttonGenerateCalculations", true)[0]; // Call bool state = button.Enabled; // Assert - Assert.IsFalse(state); - } - } - - [Test] - public void ButtonGenerateCalculations_WithGrassCoverErosionInwardsFailureMechanism_ButtonDisabled() - { - // Setup - var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) - { - grassCoverErosionInwardsCalculationsView.FailureMechanism = grassCoverErosionInwardsFailureMechanism; - var button = (Button) grassCoverErosionInwardsCalculationsView.Controls.Find("buttonGenerateCalculations", true)[0]; - - // Call - bool state = button.Enabled; - - // Assert Assert.IsTrue(state); } + + mocks.VerifyAll(); } [Test] - public void GrassCoverErosionInwardsFailureMechanism_GrassCoverErosionInwardsFailureMechanismWithSections_SectionsListBoxCorrectlyInitialized() + public void GrassCoverErosionInwardsFailureMechanism_FailureMechanismWithSections_SectionsListBoxCorrectlyInitialized() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var failureMechanismSection1 = new FailureMechanismSection("Section 1", new[] { @@ -308,18 +332,24 @@ failureMechanismSection3 }); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) + failureMechanism.DikeProfiles.AddRange(new List { - // Call - grassCoverErosionInwardsCalculationsView.FailureMechanism = failureMechanism; + DikeProfileTestFactory.CreateDikeProfile(new Point2D(0.0, 0.0), "profiel 1"), + DikeProfileTestFactory.CreateDikeProfile(new Point2D(5.0, 0.0), "profiel 2") + }, string.Empty); + // Call + using (ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) + { // Assert var listBox = (ListBox) new ControlTester("listBox").TheObject; Assert.AreEqual(3, listBox.Items.Count); Assert.AreSame(failureMechanismSection1, listBox.Items[0]); Assert.AreSame(failureMechanismSection2, listBox.Items[1]); Assert.AreSame(failureMechanismSection3, listBox.Items[2]); } + + mocks.VerifyAll(); } [Test] @@ -341,7 +371,7 @@ DataGridViewCellCollection cells = rows[0].Cells; Assert.AreEqual(10, cells.Count); Assert.AreEqual("Calculation 1", cells[nameColumnIndex].FormattedValue); - Assert.AreEqual("", cells[selectableHydraulicBoundaryLocationsColumnIndex].FormattedValue); + Assert.AreEqual("Location 1 (2 m)", cells[selectableHydraulicBoundaryLocationsColumnIndex].FormattedValue); Assert.AreEqual("name", cells[dikeProfileColumnIndex].FormattedValue); Assert.AreEqual(false, cells[useBreakWaterColumnIndex].FormattedValue); Assert.AreEqual("Havendam", cells[breakWaterTypeColumnIndex].FormattedValue); @@ -370,13 +400,8 @@ ConfigureHydraulicBoundaryDatabase(assessmentSection); GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); - using (var calculationsView = new GrassCoverErosionInwardsCalculationsView + using (var calculationsView = new GrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { - AssessmentSection = assessmentSection, - FailureMechanism = failureMechanism, - Data = ConfigureCalculationGroup(assessmentSection, failureMechanism) - }) - { var selectionChangedCount = 0; calculationsView.SelectionChanged += (sender, args) => selectionChangedCount++; @@ -486,11 +511,11 @@ ConfigureHydraulicBoundaryDatabase(assessmentSection); GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); - CalculationGroup calculationGroup = ConfigureCalculationGroup(assessmentSection, failureMechanism); + CalculationGroup calculationGroup = ConfigureCalculationGroup(failureMechanism, assessmentSection); var newRoundedValue = (RoundedDouble) newValue; - using (ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(assessmentSection, failureMechanism, calculationGroup)) + using (ShowGrassCoverErosionInwardsCalculationsView(calculationGroup, failureMechanism, assessmentSection)) { mocks.ReplayAll(); @@ -510,6 +535,11 @@ public void GivenGrassCoverErosionInwardsCalculationsViewWithGrassCoverErosionInwardsFailureMechanism_WhenSectionsAddedAndGrassCoverErosionInwardsFailureMechanismNotified_ThenSectionsListBoxCorrectlyUpdated() { // Given + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + ConfigureHydraulicBoundaryDatabase(assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var failureMechanismSection1 = new FailureMechanismSection("Section 1", new[] { @@ -527,14 +557,24 @@ new Point2D(15.0, 0.0) }); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowGrassCoverErosionInwardsCalculationsView()) + FailureMechanismTestHelper.SetSections(failureMechanism, new[] { - grassCoverErosionInwardsCalculationsView.FailureMechanism = failureMechanism; + failureMechanismSection1, + failureMechanismSection2 + }); + failureMechanism.DikeProfiles.AddRange(new List + { + DikeProfileTestFactory.CreateDikeProfile(new Point2D(0.0, 0.0), "profiel 1"), + DikeProfileTestFactory.CreateDikeProfile(new Point2D(5.0, 0.0), "profiel 2"), + }, string.Empty); + + using (ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) + { var listBox = (ListBox) new ControlTester("listBox").TheObject; // Precondition - Assert.AreEqual(0, listBox.Items.Count); + Assert.AreEqual(2, listBox.Items.Count); FailureMechanismTestHelper.SetSections(failureMechanism, new[] { @@ -543,6 +583,11 @@ failureMechanismSection3 }); + failureMechanism.DikeProfiles.AddRange(new List + { + DikeProfileTestFactory.CreateDikeProfile(new Point2D(10.0, 0.0), "profiel 3") + }, string.Empty); + // When failureMechanism.NotifyObservers(); @@ -552,6 +597,8 @@ Assert.AreSame(failureMechanismSection2, listBox.Items[1]); Assert.AreSame(failureMechanismSection3, listBox.Items[2]); } + + mocks.VerifyAll(); } [Test] @@ -569,10 +616,10 @@ var newRoundedValue = (RoundedDouble) newValue; - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { - var data = (CalculationGroup) grassCoverErosionInwardsCalculationsView.Data; + var data = (CalculationGroup) calculationsView.Data; var grassCoverErosionInwardsCalculation = (GrassCoverErosionInwardsCalculationScenario) data.Children.First(); grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); @@ -602,16 +649,16 @@ var newRoundedValue = (RoundedDouble) (-123.45); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { - var data = (CalculationGroup)grassCoverErosionInwardsCalculationsView.Data; - var grassCoverErosionInwardsCalculation = (GrassCoverErosionInwardsCalculationScenario)data.Children.First(); + var data = (CalculationGroup) calculationsView.Data; + var grassCoverErosionInwardsCalculation = (GrassCoverErosionInwardsCalculationScenario) data.Children.First(); grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); grassCoverErosionInwardsCalculation.InputParameters.Attach(grassCoverErosionInwardsInputObserver); - var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Call dataGridView.Rows[0].Cells[standardDeviationCriticalFlowRateColumnIndex].Value = newRoundedValue; @@ -633,9 +680,9 @@ [TestCase(standardDeviationCriticalFlowRateColumnIndex, 8.0, true)] [TestCase(standardDeviationCriticalFlowRateColumnIndex, 8.0, false)] public void GrassCoverErosionInwardsCalculationsView_EditingPropertyViaDataGridView_ObserversCorrectlyNotified( - int cellIndex, - object newValue, - bool useCalculationWithOutput) + int cellIndex, + object newValue, + bool useCalculationWithOutput) { // Setup var mocks = new MockRepository(); @@ -662,15 +709,13 @@ assessmentSection.Replay(); GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); - CalculationGroup calculationGroup = ConfigureCalculationGroup(assessmentSection, failureMechanism); - using (GrassCoverErosionInwardsCalculationsView pipingCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( - assessmentSection, failureMechanism, calculationGroup)) + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection)) { mocks.ReplayAll(); - var data = (CalculationGroup)pipingCalculationsView.Data; - var grassCoverErosionInwardsCalculationScenario = (GrassCoverErosionInwardsCalculationScenario)data.Children[1]; + var data = (CalculationGroup) calculationsView.Data; + var grassCoverErosionInwardsCalculationScenario = (GrassCoverErosionInwardsCalculationScenario) data.Children[1]; if (useCalculationWithOutput) { @@ -682,10 +727,10 @@ grassCoverErosionInwardsCalculationScenario.Attach(grassCoverErosionInwardsCalculationObserver); grassCoverErosionInwardsCalculationScenario.InputParameters.Attach(grassCoverErosionInwardsInputObserver); - var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Call - dataGridView.Rows[1].Cells[cellIndex].Value = newValue is double ? (RoundedDouble)(double)newValue : newValue; + dataGridView.Rows[1].Cells[cellIndex].Value = newValue is double ? (RoundedDouble) (double) newValue : newValue; // Assert grassCoverErosionInwardsCalculationScenario.Output = null; @@ -707,14 +752,14 @@ using (ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { - var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Call dataGridView.Rows[0].Cells[useBreakWaterColumnIndex].Value = newValue; // Assert - Assert.AreEqual(expectedState,dataGridView.Rows[0].Cells[breakWaterTypeColumnIndex].ReadOnly); - Assert.AreEqual(expectedState,dataGridView.Rows[0].Cells[breakWaterHeightColumnIndex].ReadOnly); + Assert.AreEqual(expectedState, dataGridView.Rows[0].Cells[breakWaterTypeColumnIndex].ReadOnly); + Assert.AreEqual(expectedState, dataGridView.Rows[0].Cells[breakWaterHeightColumnIndex].ReadOnly); } mocks.VerifyAll(); @@ -730,15 +775,15 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; dataGridView.CurrentCell = dataGridView.Rows[selectedRow].Cells[0]; // Call - object selection = grassCoverErosionInwardsCalculationsView.Selection; + object selection = calculationsView.Selection; // Assert Assert.IsInstanceOf(selection); @@ -764,10 +809,10 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - using (GrassCoverErosionInwardsCalculationsView grassCoverErosionInwardsCalculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( + using (GrassCoverErosionInwardsCalculationsView calculationsView = ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView( assessmentSection)) { - var data = (CalculationGroup) grassCoverErosionInwardsCalculationsView.Data; + var data = (CalculationGroup) calculationsView.Data; var grassCoverErosionInwardsCalculation = (GrassCoverErosionInwardsCalculationScenario) data.Children.First(); if (useCalculationWithOutput) @@ -813,9 +858,7 @@ GrassCoverErosionInwardsFailureMechanism failureMechanism = ConfigureFailureMechanism(); - return ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(assessmentSection, - failureMechanism, - ConfigureCalculationGroup(assessmentSection, failureMechanism)); + return ShowGrassCoverErosionInwardsCalculationsView(ConfigureCalculationGroup(failureMechanism, assessmentSection), failureMechanism, assessmentSection); } private static void ConfigureHydraulicBoundaryDatabase(IAssessmentSection assessmentSection) @@ -830,20 +873,8 @@ }); } - private GrassCoverErosionInwardsCalculationsView ShowFullyConfiguredGrassCoverErosionInwardsCalculationsView(IAssessmentSection assessmentSection, - GrassCoverErosionInwardsFailureMechanism failureMechanism, - CalculationGroup calculationGroup) + private static CalculationGroup ConfigureCalculationGroup(GrassCoverErosionInwardsFailureMechanism grassCoverErosionInwardsFailureMechanism, IAssessmentSection assessmentSection) { - GrassCoverErosionInwardsCalculationsView view = ShowGrassCoverErosionInwardsCalculationsView(); - view.Data = calculationGroup; - view.AssessmentSection = assessmentSection; - view.FailureMechanism = failureMechanism; - - return view; - } - - private static CalculationGroup ConfigureCalculationGroup(IAssessmentSection assessmentSection, GrassCoverErosionInwardsFailureMechanism grassCoverErosionInwardsFailureMechanism) - { var random = new Random(12); return new CalculationGroup { @@ -859,7 +890,7 @@ InputParameters = { DikeProfile = grassCoverErosionInwardsFailureMechanism.DikeProfiles.First(), - HydraulicBoundaryLocation = null, + HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(), DikeHeight = (RoundedDouble) 1.1, Orientation = (RoundedDouble) 2.2, BreakWater = @@ -892,7 +923,7 @@ InputParameters = { DikeProfile = grassCoverErosionInwardsFailureMechanism.DikeProfiles.Last(), - HydraulicBoundaryLocation = null, + HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.Last(), DikeHeight = (RoundedDouble) 1.1, Orientation = (RoundedDouble) 2.2, BreakWater = @@ -945,14 +976,14 @@ return failureMechanism; } - private GrassCoverErosionInwardsCalculationsView ShowGrassCoverErosionInwardsCalculationsView() + private GrassCoverErosionInwardsCalculationsView ShowGrassCoverErosionInwardsCalculationsView(CalculationGroup calculationGroup, GrassCoverErosionInwardsFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { - var grassCoverErosionInwardsCalculationsView = new GrassCoverErosionInwardsCalculationsView(); + var calculationsView = new GrassCoverErosionInwardsCalculationsView(calculationGroup, failureMechanism, assessmentSection); - testForm.Controls.Add(grassCoverErosionInwardsCalculationsView); + testForm.Controls.Add(calculationsView); testForm.Show(); - return grassCoverErosionInwardsCalculationsView; + return calculationsView; } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -ra44c29c03d4d800f123a54fdd43f73a026b7df8e -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision a44c29c03d4d800f123a54fdd43f73a026b7df8e) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -60,23 +60,23 @@ [TestFixture] public class GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest : NUnitFormTest { - private const int contextMenuGenerateCalculationsIndexRootGroup = 4; - private const int contextMenuAddCalculationGroupIndexRootGroup = 6; - private const int contextMenuAddCalculationIndexRootGroup = 7; - private const int contextMenuUpdateDikeProfileAllIndexRootGroup = 9; - private const int contextMenuValidateAllIndexRootGroup = 11; - private const int contextMenuCalculateAllIndexRootGroup = 12; - private const int contextMenuClearAllIndexRootGroup = 14; - private const int contextMenuClearIllustrationPointsIndexRootGroup = 15; + private const int contextMenuGenerateCalculationsIndexRootGroup = 5; + private const int contextMenuAddCalculationGroupIndexRootGroup = 7; + private const int contextMenuAddCalculationIndexRootGroup = 8; + private const int contextMenuUpdateDikeProfileAllIndexRootGroup = 10; + private const int contextMenuValidateAllIndexRootGroup = 12; + private const int contextMenuCalculateAllIndexRootGroup = 13; + private const int contextMenuClearAllIndexRootGroup = 15; + private const int contextMenuClearIllustrationPointsIndexRootGroup = 16; - private const int contextMenuDuplicateIndexNestedGroup = 4; - private const int contextMenuAddCalculationGroupIndexNestedGroup = 6; - private const int contextMenuAddCalculationIndexNestedGroup = 7; - private const int contextMenuUpdateDikeProfileAllIndexNestedGroup = 10; - private const int contextMenuValidateAllIndexNestedGroup = 12; - private const int contextMenuCalculateAllIndexNestedGroup = 13; - private const int contextMenuClearAllIndexNestedGroup = 15; - private const int contextMenuClearIllustrationPointsIndexNestedGroup = 16; + private const int contextMenuDuplicateIndexNestedGroup = 3; + private const int contextMenuAddCalculationGroupIndexNestedGroup = 5; + private const int contextMenuAddCalculationIndexNestedGroup = 6; + private const int contextMenuUpdateDikeProfileAllIndexNestedGroup = 9; + private const int contextMenuValidateAllIndexNestedGroup = 11; + private const int contextMenuCalculateAllIndexNestedGroup = 12; + private const int contextMenuClearAllIndexNestedGroup = 14; + private const int contextMenuClearIllustrationPointsIndexNestedGroup = 15; private const string dikeProfileCollectionPath = "some/arbitrary/path"; private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, nameof(HydraulicBoundaryDatabase)); @@ -189,6 +189,7 @@ using (mocks.Ordered()) { menuBuilder.Expect(mb => mb.AddOpenItem()).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddImportItem()).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddExportItem()).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); @@ -252,7 +253,7 @@ using (ContextMenuStrip menu = info.ContextMenuStrip(groupContext, null, treeViewControl)) { // Assert - Assert.AreEqual(22, menu.Items.Count); + Assert.AreEqual(23, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuAddCalculationGroupIndexRootGroup, "&Map toevoegen", "Voeg een nieuwe map toe aan deze map met berekeningen.", @@ -313,7 +314,6 @@ var menuBuilder = mocks.StrictMock(); using (mocks.Ordered()) { - menuBuilder.Expect(mb => mb.AddOpenItem()).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddImportItem()).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddExportItem()).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); @@ -378,7 +378,7 @@ using (ContextMenuStrip menu = info.ContextMenuStrip(groupContext, parentGroupContext, treeViewControl)) { // Assert - Assert.AreEqual(23, menu.Items.Count); + Assert.AreEqual(22, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuDuplicateIndexNestedGroup, "D&upliceren", Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismCalculationViewInfoTest.cs =================================================================== diff -u -r950c2bc06cda222b149f4663db732cf1c4554dbe -r57b1f9d0d5418954bff8306c01b2c5c4e5930e1c --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismCalculationViewInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismCalculationViewInfoTest.cs) (revision 950c2bc06cda222b149f4663db732cf1c4554dbe) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsFailureMechanismCalculationViewInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismCalculationViewInfoTest.cs) (revision 57b1f9d0d5418954bff8306c01b2c5c4e5930e1c) @@ -27,6 +27,8 @@ using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.Hydraulics; +using Riskeer.Common.Data.TestUtil; using Riskeer.GrassCoverErosionInwards.Data; using Riskeer.GrassCoverErosionInwards.Forms.PresentationObjects; using Riskeer.GrassCoverErosionInwards.Forms.Views; @@ -68,109 +70,94 @@ public void GetViewData_Always_ReturnsWrappedCalculationGroup() { // Setup - var assessmentSection = mocks.Stub(); + var assessmentSection = new AssessmentSectionStub(); - mocks.ReplayAll(); - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var calculationGroup = new CalculationGroup(); var calculationGroupContext = new GrassCoverErosionInwardsCalculationGroupContext(calculationGroup, - null, - failureMechanism, - assessmentSection); + null, + failureMechanism, + assessmentSection); // Call & Assert Assert.AreSame(calculationGroup, info.GetViewData(calculationGroupContext)); - mocks.VerifyAll(); } [Test] public void GetViewName_WithGrassCoverErosionInwardsCalculationGroupContext_ReturnsCalculationGroupName() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - - var calculationsView = new GrassCoverErosionInwardsCalculationsView(); - + var assessmentSection = new AssessmentSectionStub(); const string calculationGroupName = "Test"; var calculationGroup = new CalculationGroup { Name = calculationGroupName }; + var calculationsView = new GrassCoverErosionInwardsCalculationsView(calculationGroup, new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); + var grassCoverErosionInwardsCalculationGroupContext = new GrassCoverErosionInwardsCalculationGroupContext(calculationGroup, - null, - new GrassCoverErosionInwardsFailureMechanism(), - assessmentSection); + null, + new GrassCoverErosionInwardsFailureMechanism(), + assessmentSection); // Call string name = info.GetViewName(calculationsView, grassCoverErosionInwardsCalculationGroupContext); // Assert Assert.AreEqual(calculationGroupName, name); - mocks.VerifyAll(); } [Test] public void AdditionalDataCheck_GrassCoverErosionInwardsCalculationGroupContextWithGrassCoverErosionInwardsFailureMechanismParent_ReturnsTrue() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var grassCoverErosionInwardsCalculationGroupContext = new GrassCoverErosionInwardsCalculationGroupContext(grassCoverErosionInwardsFailureMechanism.CalculationsGroup, - null, - grassCoverErosionInwardsFailureMechanism, - assessmentSection); + null, + grassCoverErosionInwardsFailureMechanism, + assessmentSection); // Call bool additionalDataCheck = info.AdditionalDataCheck(grassCoverErosionInwardsCalculationGroupContext); // Assert Assert.IsTrue(additionalDataCheck); - mocks.VerifyAll(); } [Test] public void AdditionalDataCheck_GrassCoverErosionInwardsCalculationGroupContextWithoutGrassCoverErosionInwardsFailureMechanismParent_ReturnsFalse() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var calculationGroup = new CalculationGroup(); var grassCoverErosionInwardsCalculationGroupContext = new GrassCoverErosionInwardsCalculationGroupContext(calculationGroup, - null, - failureMechanism, - assessmentSection); + null, + failureMechanism, + assessmentSection); // Call bool additionalDataCheck = info.AdditionalDataCheck(grassCoverErosionInwardsCalculationGroupContext); // Assert Assert.IsFalse(additionalDataCheck); - mocks.VerifyAll(); } [Test] public void CloseForData_AssessmentSectionRemovedWithoutGrassCoverErosionInwardsFailureMechanism_ReturnsFalse() { // Setup - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[0]); - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); - var view = new GrassCoverErosionInwardsCalculationsView - { - Data = new CalculationGroup() - }; + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); // Call - bool closeForData = info.CloseForData(view, assessmentSection); + bool closeForData = info.CloseForData(calculationsView, assessmentSection); // Assert Assert.IsFalse(closeForData); @@ -181,20 +168,12 @@ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() { // Setup - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] - { - new GrassCoverErosionInwardsFailureMechanism() - }); - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); - var view = new GrassCoverErosionInwardsCalculationsView - { - Data = new CalculationGroup() - }; + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); // Call - bool closeForData = info.CloseForData(view, assessmentSection); + bool closeForData = info.CloseForData(calculationsView, assessmentSection); // Assert Assert.IsFalse(closeForData); @@ -205,129 +184,110 @@ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup - var assessmentSection = mocks.Stub(); + var calculationGroup = new CalculationGroup(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[] { + new TestFailureMechanism(), failureMechanism }); + assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase + { + Locations = + { + new HydraulicBoundaryLocation(1, "Location 1", 1.1, 2.2), + new HydraulicBoundaryLocation(2, "Location 2", 3.3, 4.4) + } + }); mocks.ReplayAll(); - var view = new GrassCoverErosionInwardsCalculationsView + using (var view = new GrassCoverErosionInwardsCalculationsView(calculationGroup, failureMechanism, assessmentSection)) { - Data = failureMechanism.CalculationsGroup - }; + view.Data = failureMechanism.CalculationsGroup; + // Call + bool closeForData = info.CloseForData(view, assessmentSection); - // Call - bool closeForData = info.CloseForData(view, assessmentSection); + // Assert + Assert.IsTrue(closeForData); + } - // Assert - Assert.IsTrue(closeForData); mocks.VerifyAll(); } [Test] public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() { // Setup - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); - var view = new GrassCoverErosionInwardsCalculationsView(); + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - view.Data = new CalculationGroup(); + calculationsView.Data = new CalculationGroup(); // Call - bool closeForData = info.CloseForData(view, failureMechanism); + bool closeForData = info.CloseForData(calculationsView, failureMechanism); // Assert Assert.IsFalse(closeForData); - mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() { // Setup - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); - var view = new GrassCoverErosionInwardsCalculationsView(); + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; + calculationsView.Data = failureMechanism.CalculationsGroup; // Call - bool closeForData = info.CloseForData(view, failureMechanism); + bool closeForData = info.CloseForData(calculationsView, failureMechanism); // Assert Assert.IsTrue(closeForData); - mocks.VerifyAll(); } [Test] public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup - var assessmentSection = mocks.Stub(); + var assessmentSection = new AssessmentSectionStub(); mocks.ReplayAll(); - var view = new GrassCoverErosionInwardsCalculationsView(); + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); - view.Data = failureMechanism.CalculationsGroup; + calculationsView.Data = failureMechanism.CalculationsGroup; // Call - bool closeForData = info.CloseForData(view, failureMechanismContext); + bool closeForData = info.CloseForData(calculationsView, failureMechanismContext); // Assert Assert.IsFalse(closeForData); - mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = new AssessmentSectionStub(); - var view = new GrassCoverErosionInwardsCalculationsView(); + var calculationsView = new GrassCoverErosionInwardsCalculationsView(new CalculationGroup(), new GrassCoverErosionInwardsFailureMechanism(), assessmentSection); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - view.Data = failureMechanism.CalculationsGroup; + calculationsView.Data = failureMechanism.CalculationsGroup; // Call - bool closeForData = info.CloseForData(view, failureMechanismContext); + bool closeForData = info.CloseForData(calculationsView, failureMechanismContext); // Assert Assert.IsTrue(closeForData); - mocks.VerifyAll(); } - - [Test] - public void AfterCreate_Always_SetsSpecificPropertiesToView() - { - // Setup - var view = mocks.StrictMock(); - var assessmentSection = mocks.Stub(); - var grassCoverErosionInwardsFailureMechanism = mocks.StrictMock(); - var grassCoverErosionInwardsCalculationsGroup = mocks.StrictMock(); - var grassCoverErosionInwardsCalculationGroupContext = new GrassCoverErosionInwardsCalculationGroupContext(grassCoverErosionInwardsCalculationsGroup, - null, - grassCoverErosionInwardsFailureMechanism, assessmentSection); - - view.Expect(v => v.AssessmentSection = assessmentSection); - view.Expect(v => v.FailureMechanism = grassCoverErosionInwardsFailureMechanism); - - mocks.ReplayAll(); - - // Call - info.AfterCreate(view, grassCoverErosionInwardsCalculationGroupContext); - - // Assert - mocks.VerifyAll(); - } } -} +} \ No newline at end of file