// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using Core.Common.Controls.DataGrid; using Core.Common.Util; using NUnit.Extensions.Forms; using NUnit.Framework; using Ringtoets.AssemblyTool.Data; using Ringtoets.Common.Forms.Builders; using Ringtoets.Common.Primitives; namespace Ringtoets.Common.Forms.Test.Builders { [TestFixture] public class FailureMechanismSectionResultColumnBuilderTest { private const string dataPropertyName = "test property"; [Test] public void AddSectionNameColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSectionNameColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddSectionNameColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSectionNameColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddSectionNameColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddSectionNameColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Vak", columnData.HeaderText); Assert.IsTrue(columnData.ReadOnly); } } private static IEnumerable> CreateExpectedEnumDisplayWrappers() { return Enum.GetValues(typeof(T)) .OfType() .Select(e => new EnumDisplayWrapper(e)) .ToArray(); } /// /// Method that asserts whether and /// are equal. /// /// The expected object. /// The actual object. /// Thrown when and /// are not equal. private static void AssertEnumDisplayWrappersAreEqual(IEnumerable> expected, IEnumerable> actual) { Assert.AreEqual(expected.Count(), actual.Count()); for (var i = 0; i < expected.Count(); i++) { EnumDisplayWrapper expectedWrapper = expected.ElementAt(i); EnumDisplayWrapper actualWrapper = actual.ElementAt(i); Assert.AreEqual(expectedWrapper.Value, actualWrapper.Value); Assert.AreEqual(expectedWrapper.DisplayName, actualWrapper.DisplayName); } } #region Simple Assessment [Test] public void AddSimpleAssessmentResultColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSimpleAssessmentResultColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddSimpleAssessmentResultColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSimpleAssessmentResultColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddSimpleAssessmentResultColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddSimpleAssessmentResultColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewComboBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Eenvoudige toets", columnData.HeaderText); Assert.AreEqual("Value", columnData.ValueMember); Assert.AreEqual("DisplayName", columnData.DisplayMember); IEnumerable> expectedDataSource = CreateExpectedEnumDisplayWrappers(); AssertEnumDisplayWrappersAreEqual(expectedDataSource, (EnumDisplayWrapper[]) columnData.DataSource); } } #endregion #region Detailed Assessment [Test] public void AddDetailedAssessmentResultColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentResultColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddDetailedAssessmentResultColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentResultColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddDetailedAssessmentResultColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentResultColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewComboBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Gedetailleerde toets per vak", columnData.HeaderText); Assert.AreEqual("Value", columnData.ValueMember); Assert.AreEqual("DisplayName", columnData.DisplayMember); IEnumerable> expectedDataSource = CreateExpectedEnumDisplayWrappers(); AssertEnumDisplayWrappersAreEqual(expectedDataSource, (EnumDisplayWrapper[]) columnData.DataSource); } } [Test] public void AddDetailedAssessmentProbabilityColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentProbabilityColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddDetailedAssessmentProbabilityColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentProbabilityColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddDetailedAssessmentProbabilityColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddDetailedAssessmentProbabilityColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Gedetailleerde toets per vak\r\nfaalkans", columnData.HeaderText); } } #endregion #region Tailor Made Assessment [Test] public void AddTailorMadeAssessmentResultColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentResultColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddTailorMadeAssessmentResultColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentResultColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddTailorMadeAssessmentResultColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentResultColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewComboBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Toets op maat", columnData.HeaderText); Assert.AreEqual("Value", columnData.ValueMember); Assert.AreEqual("DisplayName", columnData.DisplayMember); IEnumerable> expectedDataSource = CreateExpectedEnumDisplayWrappers(); AssertEnumDisplayWrappersAreEqual(expectedDataSource, (EnumDisplayWrapper[]) columnData.DataSource); } } [Test] public void AddTailorMadeAssessmentProbabilityColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentProbabilityColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddTailorMadeAssessmentProbabilityColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentProbabilityColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddTailorMadeAssessmentProbabilityColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssessmentProbabilityColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Toets op maat\r\nfaalkans", columnData.HeaderText); } } #endregion #region Assessment Assembly [Test] public void AddSimpleAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSimpleAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddSimpleAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddSimpleAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddSimpleAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddSimpleAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Assemblageresultaat\r\neenvoudige toets", columnData.HeaderText); } } [Test] public void AddDetailedAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddDetailedAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddDetailedAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddDetailedAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddDetailedAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Assemblageresultaat\r\ngedetailleerde toets per vak", columnData.HeaderText); } } [Test] public void AddTailorMadeAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddTailorMadeAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddTailorMadeAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddTailorMadeAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Assemblageresultaat\r\ntoets op maat", columnData.HeaderText); } } [Test] public void AddCombinedAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddCombinedAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddCombinedAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddCombinedAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddCombinedAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddCombinedAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Assemblageresultaat\r\ngecombineerd", columnData.HeaderText); } } #endregion #region Manual Assembly [Test] public void AddUseManualAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddUseManualAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddUseManualAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddUseManualAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddUseManualAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddUseManualAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewCheckBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Overschrijf\r\nassemblageresultaat", columnData.HeaderText); } } [Test] public void AddManualAssemblyCategoryGroupColumn_DataGridViewControlNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddManualAssemblyCategoryGroupColumn(null, "property"); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataGridViewControl", exception.ParamName); } [Test] public void AddManualAssemblyCategoryGroupColumn_DataPropertyNameNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => FailureMechanismSectionResultColumnBuilder.AddManualAssemblyCategoryGroupColumn(new DataGridViewControl(), null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("dataPropertyName", exception.ParamName); } [Test] public void AddManualAssemblyCategoryGroupColumn_WithParameters_AddsColumnToDataGridViewControl() { // Setup using (var form = new Form()) using (var control = new DataGridViewControl()) { form.Controls.Add(control); form.Show(); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Precondition Assert.AreEqual(0, dataGridView.ColumnCount); // Call FailureMechanismSectionResultColumnBuilder.AddManualAssemblyCategoryGroupColumn(control, dataPropertyName); // Assert Assert.AreEqual(1, dataGridView.ColumnCount); var columnData = (DataGridViewComboBoxColumn) dataGridView.Columns[0]; Assert.AreEqual(dataPropertyName, columnData.DataPropertyName); Assert.AreEqual("Assemblageresultaat\r\nhandmatig", columnData.HeaderText); Assert.AreEqual("Value", columnData.ValueMember); Assert.AreEqual("DisplayName", columnData.DisplayMember); IEnumerable> expectedDataSource = CreateExpectedEnumDisplayWrappers(); AssertEnumDisplayWrappersAreEqual(expectedDataSource, (EnumDisplayWrapper[]) columnData.DataSource); } } #endregion } }