// 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
}
}