// 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.Linq;
using System.Windows.Forms;
using Core.Common.Controls.DataGrid;
using Core.Common.Util;
using NUnit.Extensions.Forms;
using NUnit.Framework;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.Common.Forms.Builders;
using Ringtoets.Common.Forms.Test.Views;
using Ringtoets.Common.Primitives;
namespace Ringtoets.Common.Forms.Test.Builders
{
[TestFixture]
public class FailureMechanismSectionResultColumnBuilderTest
{
[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
const string dataPropertyName = "test property";
using (var form = new Form())
using (var control = new DataGridViewControl())
{
form.Controls.Add(control);
form.Show();
var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject;
control.SetDataSource(new[]
{
new TestFailureMechanismSectionResultRow(FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult())
});
// 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);
EnumDisplayWrapper[] expectedDataSource = Enum.GetValues(typeof(SimpleAssessmentResultType))
.OfType()
.Select(sa => new EnumDisplayWrapper(sa))
.ToArray();
var actualDataSource = (EnumDisplayWrapper[]) columnData.DataSource;
Assert.AreEqual(expectedDataSource.Length, actualDataSource.Length);
for (var i = 0; i < actualDataSource.Length; i++)
{
EnumDisplayWrapper expectedWrapper = expectedDataSource[i];
EnumDisplayWrapper actualWrapper = actualDataSource[i];
Assert.AreEqual(expectedWrapper.Value, actualWrapper.Value);
Assert.AreEqual(expectedWrapper.DisplayName, actualWrapper.DisplayName);
}
}
}
}
}