Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs =================================================================== diff -u -rd831947ee7defd3a0b22ef43a3a41490f7e87ac7 -rd77847d0615cd770516f4a3f32628756d56faf2a --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision d831947ee7defd3a0b22ef43a3a41490f7e87ac7) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision d77847d0615cd770516f4a3f32628756d56faf2a) @@ -19,7 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System.Drawing; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Base.Geometry; @@ -53,7 +53,7 @@ public void DefaultConstructor_DefaultValues() { // Setup - var failureMechanismSectionResults = new ObservableList(); + var failureMechanismSectionResults = new ObservableList(); // Call using (var view = new TestFailureMechanismResultView(failureMechanismSectionResults)) @@ -73,7 +73,7 @@ const int assessmentLayerOneIndex = 1; // Call - using (ShowFailureMechanismResultsView(new ObservableList())) + using (ShowFailureMechanismResultsView(new ObservableList())) { // Assert var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -87,8 +87,66 @@ } } - private TestFailureMechanismResultView ShowFailureMechanismResultsView(IObservableEnumerable sectionResults) + [Test] + public void GivenFailureMechanismResultView_WhenFailureMechanismSectionResultCollectionUpdated_ThenObserverNotified() { + // Given + var sectionResults = new ObservableList(); + using (ShowFailureMechanismResultsView(sectionResults)) + { + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; + + // Precondition + Assert.AreEqual(0, dataGridView.RowCount); + + // When + sectionResults.Add(new TestFailureMechanismSectionResult(new FailureMechanismSection("a", new[] + { + new Point2D(0, 0) + }))); + sectionResults.NotifyObservers(); + + // Then + Assert.AreEqual(1, dataGridView.RowCount); + } + } + + [Test] + public void GivenFailureMechanismResultView_WhenSingleFailureMechanismSectionResultUpdated_ThenObserverNotified() + { + // Given + var sectionResult = new TestFailureMechanismSectionResult(new FailureMechanismSection("a", new[] + { + new Point2D(0, 0) + })) + { + AssessmentLayerOne = AssessmentLayerOneState.NoVerdict + }; + var sectionResults = new ObservableList + { + sectionResult + }; + + using (ShowFailureMechanismResultsView(sectionResults)) + { + // Precondition + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; + DataGridViewCell dataGridViewCell = dataGridView.Rows[0].Cells[0]; + Assert.AreEqual(Color.FromKnownColor(KnownColor.ControlText), dataGridViewCell.Style.ForeColor); + Assert.AreEqual(Color.FromKnownColor(KnownColor.White), dataGridViewCell.Style.BackColor); + + // When + sectionResult.AssessmentLayerOne = AssessmentLayerOneState.Sufficient; + sectionResult.NotifyObservers(); + + // Then + Assert.AreEqual(Color.FromKnownColor(KnownColor.GrayText), dataGridViewCell.Style.ForeColor); + Assert.AreEqual(Color.FromKnownColor(KnownColor.DarkGray), dataGridViewCell.Style.BackColor); + } + } + + private TestFailureMechanismResultView ShowFailureMechanismResultsView(IObservableEnumerable sectionResults) + { var failureMechanismResultView = new TestFailureMechanismResultView(sectionResults); testForm.Controls.Add(failureMechanismResultView); testForm.Show(); @@ -97,23 +155,38 @@ } } - public class TestFailureMechanismResultView : FailureMechanismResultView + public class TestFailureMechanismResultView : FailureMechanismResultView { - public TestFailureMechanismResultView(IObservableEnumerable failureMechanismSectionResults) : base(failureMechanismSectionResults) {} + public TestFailureMechanismResultView(IObservableEnumerable failureMechanismSectionResults) : base(failureMechanismSectionResults) + { + DataGridViewControl.CellFormatting += OnCellFormatting; + AddDataGridColumns(); + UpdateDataGridViewDataSource(); + } - protected override object CreateFailureMechanismSectionResultRow(FailureMechanismSectionResult sectionResult) + protected override object CreateFailureMechanismSectionResultRow(TestFailureMechanismSectionResult sectionResult) { return new TestRow(sectionResult); } - } - public class TestRow - { - public TestRow(FailureMechanismSectionResult sectionResult) + private void OnCellFormatting(object sender, DataGridViewCellFormattingEventArgs eventArgs) { - Name = sectionResult.Section.Name; + if (eventArgs.ColumnIndex < AssessmentLayerOneColumnIndex) + { + if (HasPassedLevelOne(eventArgs.RowIndex)) + { + DataGridViewControl.DisableCell(eventArgs.RowIndex, eventArgs.ColumnIndex); + } + else + { + DataGridViewControl.RestoreCell(eventArgs.RowIndex, eventArgs.ColumnIndex); + } + } } + } - public string Name { get; } + public class TestRow : FailureMechanismSectionResultRow + { + public TestRow(TestFailureMechanismSectionResult sectionResult) : base(sectionResult) {} } } \ No newline at end of file