public void GivenFullyConfiguredDuneLocationCalculationsView_WhenDuneLocationCalculationsUpdatedAndNotified_ThenDataGridCorrectlyUpdated()
        {
            // Given
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var calculations = new ObservableList <DuneLocationCalculation>();

            using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(calculations,
                                                                                        new DuneErosionFailureMechanism(),
                                                                                        assessmentSection))
            {
                // Precondition
                var    dataGridView            = (DataGridView)view.Controls.Find("dataGridView", true)[0];
                object originalDataSource      = dataGridView.DataSource;
                DataGridViewRowCollection rows = dataGridView.Rows;
                Assert.AreEqual(0, rows.Count);

                // When
                var duneLocation = new DuneLocation(10, "10", new Point2D(10.0, 10.0), new DuneLocation.ConstructionProperties
                {
                    CoastalAreaId = 3,
                    Offset        = 80,
                    D50           = 0.000321
                });
                var duneLocationCalculation = new DuneLocationCalculation(duneLocation)
                {
                    Output = new DuneLocationCalculationOutput(CalculationConvergence.CalculatedConverged, new DuneLocationCalculationOutput.ConstructionProperties
                    {
                        WaterLevel = 3.21,
                        WaveHeight = 4.32,
                        WavePeriod = 5.43
                    })
                };
                calculations.Add(duneLocationCalculation);
                calculations.NotifyObservers();

                // Then
                Assert.AreNotSame(originalDataSource, dataGridView.DataSource);

                var expectedRowValues = new object[]
                {
                    false,
                    "10",
                    "10",
                    new Point2D(10, 10).ToString(),
                    "3",
                    "80",
                    3.21.ToString(CultureInfo.CurrentCulture),
                    4.32.ToString(CultureInfo.CurrentCulture),
                    5.43.ToString(CultureInfo.CurrentCulture),
                    0.000321.ToString(CultureInfo.CurrentCulture)
                };
                DataGridViewTestHelper.AssertExpectedRowFormattedValues(expectedRowValues, rows[0]);
            }
        }
        public void OnLoad_DataGridViewCorrectlyInitialized()
        {
            // Setup
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            // Call
            using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(new ObservableList <DuneLocationCalculation>(),
                                                                                        new DuneErosionFailureMechanism(),
                                                                                        assessmentSection))
            {
                // Assert
                var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0];

                var expectedHeaderNames = new[]
                {
                    "Berekenen",
                    "Naam",
                    "ID",
                    "Coördinaten [m]",
                    "Kustvaknummer",
                    "Metrering [dam]",
                    "Rekenwaarde waterstand [m+NAP]",
                    "Rekenwaarde Hs [m]",
                    "Rekenwaarde Tp [s]",
                    "Rekenwaarde d50 [m]"
                };
                DataGridViewTestHelper.AssertExpectedHeaders(expectedHeaderNames, dataGridView);
                Type[] expectedColumnTypes =
                {
                    typeof(DataGridViewCheckBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn),
                    typeof(DataGridViewTextBoxColumn)
                };
                DataGridViewTestHelper.AssertColumnTypes(expectedColumnTypes, dataGridView);

                var button = (Button)view.Controls.Find("CalculateForSelectedButton", true)[0];
                Assert.IsFalse(button.Enabled);
            }
        }
        public void DuneLocationCalculationsView_DataSet_DataGridViewCorrectlyInitialized()
        {
            // Setup
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            // Call
            using (DuneLocationCalculationsView view = ShowFullyConfiguredDuneLocationCalculationsView(assessmentSection))
            {
                // Assert
                var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0];
                DataGridViewRowCollection rows = dataGridView.Rows;
                Assert.AreEqual(2, rows.Count);

                var expectedRow0Values = new object[]
                {
                    false,
                    "1",
                    "1",
                    new Point2D(1, 1).ToString(),
                    "50",
                    "320",
                    "-",
                    "-",
                    "-",
                    0.000837.ToString(CultureInfo.CurrentCulture)
                };
                DataGridViewTestHelper.AssertExpectedRowFormattedValues(expectedRow0Values, rows[0]);

                var expectedRow1Values = new object[]
                {
                    false,
                    "2",
                    "2",
                    new Point2D(2, 2).ToString(),
                    "60",
                    "230",
                    1.23.ToString(CultureInfo.CurrentCulture),
                    2.34.ToString(CultureInfo.CurrentCulture),
                    3.45.ToString(CultureInfo.CurrentCulture),
                    0.000123.ToString(CultureInfo.CurrentCulture)
                };
                DataGridViewTestHelper.AssertExpectedRowFormattedValues(expectedRow1Values, rows[1]);
            }
        }