Index: Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.Designer.cs =================================================================== diff -u -rc8ac3de5e56e79827907f09f464537172616a61e -rb20b13efae693d8788e0891b283cfb1a1a2893cc --- Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.Designer.cs (.../AssemblyGroupsView.Designer.cs) (revision c8ac3de5e56e79827907f09f464537172616a61e) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.Designer.cs (.../AssemblyGroupsView.Designer.cs) (revision b20b13efae693d8788e0891b283cfb1a1a2893cc) @@ -38,7 +38,7 @@ /// private void InitializeComponent() { - this.assemblyCategoriesTable = new AssemblyCategoriesTable(); + this.assemblyGroupsTable = new AssemblyCategoriesTable(); this.groupBoxPanel = new System.Windows.Forms.Panel(); this.groupBoxPanel.SuspendLayout(); this.groupBox = new System.Windows.Forms.GroupBox(); @@ -47,11 +47,11 @@ // // failureMechanismAssemblyCategoriesTable // - this.assemblyCategoriesTable.Dock = System.Windows.Forms.DockStyle.Fill; - this.assemblyCategoriesTable.MultiSelect = true; - this.assemblyCategoriesTable.Name = "assemblyCategoriesTable"; - this.assemblyCategoriesTable.Padding = new System.Windows.Forms.Padding(5); - this.assemblyCategoriesTable.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; + this.assemblyGroupsTable.Dock = System.Windows.Forms.DockStyle.Fill; + this.assemblyGroupsTable.MultiSelect = true; + this.assemblyGroupsTable.Name = "assemblyGroupsTable"; + this.assemblyGroupsTable.Padding = new System.Windows.Forms.Padding(5); + this.assemblyGroupsTable.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; // // groupBoxPanel // @@ -62,7 +62,7 @@ // // groupBox // - this.groupBox.Controls.Add(assemblyCategoriesTable); + this.groupBox.Controls.Add(assemblyGroupsTable); this.groupBox.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox.Location = new System.Drawing.Point(0, 0); this.groupBox.Margin = new System.Windows.Forms.Padding(5); @@ -86,7 +86,7 @@ #endregion - private AssemblyCategoriesTable assemblyCategoriesTable; + private AssemblyCategoriesTable assemblyGroupsTable; private System.Windows.Forms.GroupBox groupBox; private System.Windows.Forms.Panel groupBoxPanel; } Index: Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.cs =================================================================== diff -u -rc8ac3de5e56e79827907f09f464537172616a61e -rb20b13efae693d8788e0891b283cfb1a1a2893cc --- Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.cs (.../AssemblyGroupsView.cs) (revision c8ac3de5e56e79827907f09f464537172616a61e) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyGroupsView.cs (.../AssemblyGroupsView.cs) (revision b20b13efae693d8788e0891b283cfb1a1a2893cc) @@ -20,10 +20,14 @@ // All rights reserved. using System; +using System.Drawing; +using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Controls.Views; using Riskeer.AssemblyTool.Data; +using Riskeer.Common.Data.AssemblyTool; +using Riskeer.Common.Forms.Helpers; using Riskeer.Integration.Data; namespace Riskeer.Integration.Forms.Views @@ -76,12 +80,15 @@ private void UpdateTableData() { - // assemblyCategoriesTable.SetData( - // getAssemblyCategoriesFunc().Select( - // category => new Tuple( - // category, - // AssemblyCategoryGroupColorHelper.GetFailureMechanismAssemblyCategoryGroupColor(category.Group), - // category.Group)).ToArray()); + Tuple[] dataToSet = + AssemblyToolGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries( + AssessmentSection.FailureMechanismContribution.SignalingNorm, AssessmentSection.FailureMechanismContribution.LowerLimitNorm).Select( + assemblyGroupBoundaries => new Tuple( + assemblyGroupBoundaries, + AssemblyGroupColorHelper.GetFailureMechanismSectionAssemblyCategoryGroupColor(assemblyGroupBoundaries.Group), + assemblyGroupBoundaries.Group)).ToArray(); + + assemblyGroupsTable.SetData(dataToSet); } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyGroupsViewTest.cs =================================================================== diff -u -rc8ac3de5e56e79827907f09f464537172616a61e -rb20b13efae693d8788e0891b283cfb1a1a2893cc --- Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyGroupsViewTest.cs (.../AssemblyGroupsViewTest.cs) (revision c8ac3de5e56e79827907f09f464537172616a61e) +++ Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/AssemblyGroupsViewTest.cs (.../AssemblyGroupsViewTest.cs) (revision b20b13efae693d8788e0891b283cfb1a1a2893cc) @@ -20,13 +20,19 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using Core.Common.Controls.Views; using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.AssemblyTool.Data; +using Riskeer.AssemblyTool.KernelWrapper.Calculators; +using Riskeer.AssemblyTool.KernelWrapper.Calculators.Categories; +using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; +using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators.Categories; using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Forms.TestUtil; using Riskeer.Integration.Data; using Riskeer.Integration.Forms.Views; @@ -40,14 +46,36 @@ public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => new AssemblyGroupsView(null); + void Call() => new AssemblyGroupsView(null); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("assessmentSection", exception.ParamName); } [Test] + public void CreateFailureMechanismSectionAssemblyGroupBoundaries_CalculatorThrowsException_ThrowsAssemblyException() + { + // Setup + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + calculator.ThrowExceptionOnCalculate = true; + + // Call + void Call() => new AssemblyGroupsView(new AssessmentSection(AssessmentSectionComposition.Dike)); + + // Assert + // Aanpassen, verandert doordat exception niet meer doorbubbelt. + var exception = Assert.Throws(Call); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] public void Constructor_ExpectedValues() { // Setup @@ -73,71 +101,119 @@ Assert.AreEqual(DockStyle.Fill, groupBox.Dock); Assert.AreEqual("Duidingsklassen", groupBox.Text); - AssemblyCategoriesTable failureMechanismSectionCategoriesTable = GetFailureMechanismCategoriesTable(view); - Assert.AreEqual(DockStyle.Fill, failureMechanismSectionCategoriesTable.Dock); + AssemblyCategoriesTable assemblyGroupsTable = GetAssemblyGroupsTable(view); + Assert.AreEqual(DockStyle.Fill, assemblyGroupsTable.Dock); } } - // [Test] - // public void Constructor_WithValidParameters_FillTableWithData() - // { - // // Setup - // var random = new Random(21); - // - // var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - // const int nrOfCategories = 1; - // Func> getAssemblyCategoriesFunc = - // () => Enumerable.Repeat(CreateRandomFailureMechanismAssemblyCategory(random), nrOfCategories); - // - // // Call - // using (var view = new AssemblyGroupsView(assessmentSection)) - // { - // AssemblyCategoriesTable failureMechanismSectionCategoriesTable = GetFailureMechanismCategoriesTable(view); - // - // // Assert - // Assert.AreEqual(nrOfCategories, failureMechanismSectionCategoriesTable.Rows.Count); - // } - // } - // - // [Test] - // public void GivenViewWithValidData_WhenFailureMechanismContributionUpdated_ThenDataTableUpdated() - // { - // // Given - // var random = new Random(21); - // - // var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - // var nrOfCategories = 1; - // Func> getFailureMechanismCategories = - // () => Enumerable.Repeat(CreateRandomFailureMechanismAssemblyCategory(random), nrOfCategories); - // - // using (var view = new AssemblyGroupsView(assessmentSection)) - // { - // AssemblyCategoriesTable failureMechanismSectionCategoriesTable = GetFailureMechanismCategoriesTable(view); - // - // // Precondition - // Assert.AreEqual(nrOfCategories, failureMechanismSectionCategoriesTable.Rows.Count); - // - // // When - // nrOfCategories = 2; - // assessmentSection.FailureMechanismContribution.NotifyObservers(); - // - // // Then - // Assert.AreEqual(nrOfCategories, failureMechanismSectionCategoriesTable.Rows.Count); - // } - // } + [Test] + public void Constructor_WithValidParameters_InputCorrectlySet() + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + // Call + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + using (new AssemblyGroupsView(assessmentSection)) + { + // Assert + Assert.AreEqual(assessmentSection.FailureMechanismContribution.LowerLimitNorm, calculator.LowerLimitNorm); + Assert.AreEqual(assessmentSection.FailureMechanismContribution.SignalingNorm, calculator.SignalingNorm); + } + } + } + + [Test] + public void Constructor_WithValidParameters_FillTableWithData() + { + // Setup + var random = new Random(); + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + var failureMechanismSectionAssemblyGroup = random.NextEnumValue(); + double lowerBoundary = random.NextDouble(); + double upperBoundary = random.NextDouble(); + calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput = new List + { + new FailureMechanismSectionAssemblyGroupBoundaries(failureMechanismSectionAssemblyGroup, lowerBoundary, upperBoundary) + }; + + // Call + using (var view = new AssemblyGroupsView(assessmentSection)) + { + AssemblyCategoriesTable assemblyGroupsTable = GetAssemblyGroupsTable(view); - private static AssemblyCategoriesTable GetFailureMechanismCategoriesTable( + // Assert + Assert.AreEqual(1, assemblyGroupsTable.Rows.Count); + var row = (AssemblyCategoryRow) assemblyGroupsTable.Rows[0].DataBoundItem; + Assert.AreEqual(failureMechanismSectionAssemblyGroup, row.Group); + Assert.AreEqual(lowerBoundary, row.LowerBoundary); + Assert.AreEqual(upperBoundary, row.UpperBoundary); + } + } + } + + [Test] + public void GivenViewWithValidData_WhenFailureMechanismContributionUpdated_ThenDataTableUpdated() + { + // Given + var random = new Random(); + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + var output = new List + { + CreateRandomFailureMechanismSectionAssemblyGroupBoundaries(random) + }; + + calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput = output; + + using (var view = new AssemblyGroupsView(assessmentSection)) + { + AssemblyCategoriesTable failureMechanismSectionCategoriesTable = GetAssemblyGroupsTable(view); + + // Precondition + int groupBoundaries = output.Count; + Assert.AreEqual(1, failureMechanismSectionCategoriesTable.Rows.Count); + + int newGroupBoundaries = random.Next(1, 10); + for (var i = 1; i <= newGroupBoundaries; i++) + { + output.Add(CreateRandomFailureMechanismSectionAssemblyGroupBoundaries(random)); + } + + // When + assessmentSection.FailureMechanismContribution.NotifyObservers(); + + // Then + Assert.AreEqual(groupBoundaries + newGroupBoundaries, failureMechanismSectionCategoriesTable.Rows.Count); + } + } + } + + private static AssemblyCategoriesTable GetAssemblyGroupsTable( AssemblyGroupsView view) { - return ControlTestHelper.GetControls>( - view, "assemblyCategoriesTable").Single(); + return ControlTestHelper.GetControls>( + view, "assemblyGroupsTable").Single(); } - private static FailureMechanismAssemblyCategory CreateRandomFailureMechanismAssemblyCategory(Random random) + private static FailureMechanismSectionAssemblyGroupBoundaries CreateRandomFailureMechanismSectionAssemblyGroupBoundaries(Random random) { - return new FailureMechanismAssemblyCategory(random.NextDouble(), - random.NextDouble(), - random.NextEnumValue()); + return new FailureMechanismSectionAssemblyGroupBoundaries(random.NextEnumValue(), + random.NextDouble(), + random.NextDouble()); } } } \ No newline at end of file