// 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.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Core.Common.Base.Data;
using Core.Common.Controls.DataGrid;
using Core.Common.Controls.Views;
using NUnit.Extensions.Forms;
using NUnit.Framework;
using Ringtoets.Common.Data.IllustrationPoints;
using Ringtoets.Common.Data.TestUtil.IllustrationPoints;
using Ringtoets.Common.Forms.PresentationObjects;
using Ringtoets.Common.Forms.TestUtil;
using Ringtoets.Common.Forms.Views;
namespace Ringtoets.Common.Forms.Test.Views
{
[TestFixture]
public class IllustrationPointsControlTest
{
[Test]
public void Constructor_ExpectedValues()
{
// Call
var control = new IllustrationPointsControl();
// Assert
Assert.IsInstanceOf(control);
Assert.IsInstanceOf(control);
Assert.IsNull(control.Data);
Assert.AreEqual(1, control.Controls.Count);
var splitContainer = control.Controls[0] as SplitContainer;
Assert.IsNotNull(splitContainer);
Control.ControlCollection splitContainerPanel1Controls = splitContainer.Panel1.Controls;
Assert.AreEqual(1, splitContainerPanel1Controls.Count);
Assert.IsInstanceOf(splitContainerPanel1Controls[0]);
Control.ControlCollection splitContainerPanel2Controls = splitContainer.Panel2.Controls;
Assert.AreEqual(1, splitContainerPanel2Controls.Count);
Assert.IsInstanceOf(splitContainerPanel2Controls[0]);
}
[Test]
public void Data_ValueSet_DataSetToIllustrationPointsChartControl()
{
// Setup
using (var form = new Form())
using (var control = new IllustrationPointsControl())
{
form.Controls.Add(control);
form.Show();
IllustrationPointsChartControl chartControl = ControlTestHelper.GetControls(form, "IllustrationPointsChartControl").Single();
IllustrationPointsTableControl tableControl = ControlTestHelper.GetControls(form, "IllustrationPointsTableControl").Single();
IEnumerable data = Enumerable.Empty();
// Call
control.Data = data;
// Assert
Assert.AreSame(data, control.Data);
Assert.AreSame(data, chartControl.Data);
Assert.AreSame(data, tableControl.Data);
}
}
[Test]
public void GivenFullyConfiguredControl_WhenSelectingCellInRow_ThenSelectionChangedFired()
{
// Given
using (var form = new Form())
using (var control = new IllustrationPointsControl())
{
form.Controls.Add(control);
form.Show();
control.Data = new[]
{
new IllustrationPointControlItem(new object(),
"SSE",
"Regular",
Enumerable.Empty(),
(RoundedDouble) 3.14)
};
var selectionChangedCount = 0;
control.SelectionChanged += (sender, args) => selectionChangedCount++;
IllustrationPointsTableControl tableControl = ControlTestHelper.GetControls(form, "IllustrationPointsTableControl").Single();
// When
EventHelper.RaiseEvent(tableControl, "SelectionChanged");
// Then
Assert.AreEqual(1, selectionChangedCount);
}
}
[Test]
public void Selection_ValidRowSelected_SameAsTableControlSelection()
{
// Setup
using (var form = new Form())
using (var control = new IllustrationPointsControl())
{
form.Controls.Add(control);
form.Show();
control.Data = new[]
{
new IllustrationPointControlItem(new TestTopLevelIllustrationPoint(),
"SSE",
"Regular",
Enumerable.Empty(),
(RoundedDouble) 3.14)
};
IllustrationPointsTableControl tableControl = ControlTestHelper.GetControls(form, "IllustrationPointsTableControl").Single();
DataGridViewControl dataGridView = ControlTestHelper.GetDataGridViewControl(form, "illustrationPointsDataGridViewControl");
DataGridViewRow selectedLocationRow = dataGridView.Rows[0];
// Call
selectedLocationRow.Cells[0].Value = true;
// Assert
object selection = tableControl.Selection;
var expectedSelection = selection as SelectableTopLevelIllustrationPoint;
var controlSelection = control.Selection as SelectableTopLevelIllustrationPoint;
Assert.IsNotNull(expectedSelection);
Assert.IsNotNull(controlSelection);
Assert.AreSame(expectedSelection.TopLevelIllustrationPoint, controlSelection.TopLevelIllustrationPoint);
CollectionAssert.AreEqual(expectedSelection.ClosingSituations, controlSelection.ClosingSituations);
}
}
}
}