// 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.Drawing; using Core.Common.TestUtil; using Core.Components.Chart.Data; using Core.Components.Chart.Styles; using NUnit.Framework; using Ringtoets.MacroStabilityInwards.Data.SoilProfile; using Ringtoets.MacroStabilityInwards.Data.TestUtil.SoilProfile; using Ringtoets.MacroStabilityInwards.Forms.Factories; using Ringtoets.MacroStabilityInwards.Primitives; namespace Ringtoets.MacroStabilityInwards.Forms.Test.Factories { [TestFixture] public class MacroStabilityInwardsChartDataFactoryTest { [Test] public void CreateWaternetZonesExtremeChartDataCollection_ReturnsEmptyChartDataCollection() { // Call ChartDataCollection data = MacroStabilityInwardsChartDataFactory.CreateWaternetZonesExtremeChartDataCollection(); // Assert CollectionAssert.IsEmpty(data.Collection); Assert.AreEqual("Zones extreem", data.Name); } [Test] public void CreateWaternetZonesDailyChartDataCollection_ReturnsEmptyChartDataCollection() { // Call ChartDataCollection data = MacroStabilityInwardsChartDataFactory.CreateWaternetZonesDailyChartDataCollection(); // Assert CollectionAssert.IsEmpty(data.Collection); Assert.AreEqual("Zones dagelijks", data.Name); } [Test] public void CreateWaternetZoneChartData_NameNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => MacroStabilityInwardsChartDataFactory.CreateWaternetZoneChartData(null, new Random(21).NextBoolean()); // Assert var exception = Assert.Throws(call); Assert.AreEqual("name", exception.ParamName); } [Test] [TestCase(true)] [TestCase(false)] public void CreateWaternetZoneChartData_WithVisibility_ReturnsEmptyChartLineDataWithExpectedVisibility(bool isVisible) { // Setup const string name = "zone"; // Call ChartMultipleAreaData data = MacroStabilityInwardsChartDataFactory.CreateWaternetZoneChartData(name, isVisible); // Assert CollectionAssert.IsEmpty(data.Areas); Assert.AreEqual(name, data.Name); Assert.AreEqual(isVisible, data.IsVisible); AssertEqualStyle(data.Style, Color.FromArgb(60, Color.DeepSkyBlue), Color.Empty, 0, true); } [Test] public void CreatePhreaticLineChartData_NameNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => MacroStabilityInwardsChartDataFactory.CreatePhreaticLineChartData(null, new Random(21).NextBoolean()); // Assert var exception = Assert.Throws(call); Assert.AreEqual("name", exception.ParamName); } [Test] [TestCase(true)] [TestCase(false)] public void CreatePhreaticLineChartData_WithVisibility_ReturnsEmptyChartLineDataWithExpectedVisibility(bool isVisible) { // Setup const string name = "zone"; // Call ChartLineData data = MacroStabilityInwardsChartDataFactory.CreatePhreaticLineChartData(name, isVisible); // Assert CollectionAssert.IsEmpty(data.Points); Assert.AreEqual(name, data.Name); Assert.AreEqual(isVisible, data.IsVisible); AssertEqualStyle(data.Style, Color.Blue, 2, ChartLineDashStyle.Solid); } [Test] public void CreateShoulderBaseInsideChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateShoulderBaseInsideChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Insteek binnenberm", data.Name); AssertEqualStyle(data.Style, Color.BlueViolet, 8, Color.SeaGreen, 1, ChartPointSymbol.Triangle); } [Test] public void CreateDikeTopAtPolderChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateDikeTopAtPolderChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Kruin binnentalud", data.Name); AssertEqualStyle(data.Style, Color.LightSkyBlue, 8, Color.SeaGreen, 1, ChartPointSymbol.Triangle); } [Test] public void CreateShoulderTopInsideChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateShoulderTopInsideChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Kruin binnenberm", data.Name); AssertEqualStyle(data.Style, Color.DeepSkyBlue, 8, Color.SeaGreen, 1, ChartPointSymbol.Triangle); } [Test] public void CreateSurfaceLevelInsideChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateSurfaceLevelInsideChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Maaiveld binnenwaarts", data.Name); AssertEqualStyle(data.Style, Color.ForestGreen, 8, Color.Black, 1, ChartPointSymbol.Square); } [Test] public void CreateSurfaceLevelOutsideChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateSurfaceLevelOutsideChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Maaiveld buitenwaarts", data.Name); AssertEqualStyle(data.Style, Color.LightSeaGreen, 8, Color.Black, 1, ChartPointSymbol.Square); } [Test] public void CreateDikeTopAtRiverChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateDikeTopAtRiverChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Kruin buitentalud", data.Name); AssertEqualStyle(data.Style, Color.LightSteelBlue, 8, Color.SeaGreen, 1, ChartPointSymbol.Triangle); } [Test] public void CreateRightGridChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateRightGridChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Rechter grid", data.Name); AssertEqualStyle(data.Style, Color.Black, 6, Color.Black, 2, ChartPointSymbol.Plus); } [Test] public void CreateLeftGridChartData_ReturnsChartPointDataWithExpectedStyling() { // Call ChartPointData data = MacroStabilityInwardsChartDataFactory.CreateLeftGridChartData(); // Assert Assert.IsFalse(data.HasData); Assert.AreEqual("Linker grid", data.Name); AssertEqualStyle(data.Style, Color.Black, 6, Color.Black, 2, ChartPointSymbol.Plus); } [Test] public void CreateSoilLayerChartData_LayerNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => MacroStabilityInwardsChartDataFactory.CreateSoilLayerChartData(null); // Assert var exception = Assert.Throws(call); Assert.AreEqual("layer", exception.ParamName); } [Test] public void CreateSoilLayerChartData_WithLayer_ReturnsEmptyChartDataCollectionWithExpectedStyling() { // Setup const string name = "Soil layer test name"; Color fillColor = Color.Firebrick; MacroStabilityInwardsSoilLayer2D layer = MacroStabilityInwardsSoilLayer2DTestFactory.CreateMacroStabilityInwardsSoilLayer2D(); layer.Data.MaterialName = name; layer.Data.Color = fillColor; // Call ChartMultipleAreaData data = MacroStabilityInwardsChartDataFactory.CreateSoilLayerChartData(layer); // Assert CollectionAssert.IsEmpty(data.Areas); Assert.AreEqual(name, data.Name); AssertEqualStyle(data.Style, fillColor, Color.Black, 1, false); } [Test] public void CreateSoilLayerChartData_LayerWithEmptyNameAndColor_ReturnsEmptyChartDataCollectionWithExpectedStyling() { // Setup MacroStabilityInwardsSoilLayer2D layer = MacroStabilityInwardsSoilLayer2DTestFactory.CreateMacroStabilityInwardsSoilLayer2D(); layer.Data.MaterialName = string.Empty; layer.Data.Color = Color.Empty; // Call ChartMultipleAreaData data = MacroStabilityInwardsChartDataFactory.CreateSoilLayerChartData(layer); // Assert CollectionAssert.IsEmpty(data.Areas); Assert.AreEqual("Onbekend", data.Name); AssertEqualStyle(data.Style, Color.White, Color.Black, 1, false); } [Test] public void CreateSlipPlaneChartData_ReturnsChartLineData() { // Call ChartLineData data = MacroStabilityInwardsChartDataFactory.CreateSlipPlaneChartData(); // Assert CollectionAssert.IsEmpty(data.Points); Assert.AreEqual("Glijvlak", data.Name); AssertEqualStyle(data.Style, Color.SaddleBrown, 3, ChartLineDashStyle.Solid); } [Test] public void CreateActiveCircleRadiusChartData_ReturnsChartLineData() { // Call ChartLineData data = MacroStabilityInwardsChartDataFactory.CreateActiveCircleRadiusChartData(); // Assert CollectionAssert.IsEmpty(data.Points); Assert.AreEqual("Radius actieve cirkel", data.Name); AssertEqualStyle(data.Style, Color.Gray, 1, ChartLineDashStyle.Dash); } [Test] public void CreatePassiveCircleRadiusChartData_ReturnsChartLineData() { // Call ChartLineData data = MacroStabilityInwardsChartDataFactory.CreatePassiveCircleRadiusChartData(); // Assert CollectionAssert.IsEmpty(data.Points); Assert.AreEqual("Radius passieve cirkel", data.Name); AssertEqualStyle(data.Style, Color.Gray, 1, ChartLineDashStyle.Dash); } [Test] public void CreateSlicesChartData_ReturnsChartMultipleAreaData() { // Call ChartMultipleAreaData data = MacroStabilityInwardsChartDataFactory.CreateSlicesChartData(); // Assert CollectionAssert.IsEmpty(data.Areas); Assert.AreEqual("Lamellen", data.Name); AssertEqualStyle(data.Style, Color.Empty, Color.DarkGreen, 2, true); } [Test] public void CreateTangentLinesChartData_ReturnsChartMultipleLineData() { // Call ChartMultipleLineData data = MacroStabilityInwardsChartDataFactory.CreateTangentLinesChartData(); // Assert CollectionAssert.IsEmpty(data.Lines); Assert.AreEqual("Tangentlijnen", data.Name); AssertEqualStyle(data.Style, Color.Green, 1, ChartLineDashStyle.Dash); } [Test] public void UpdateSurfaceLineChartDataName_SurfaceLineNull_NameSetToDefaultSurfaceLineName() { // Setup var chartData = new ChartLineData("test name"); // Call MacroStabilityInwardsChartDataFactory.UpdateSurfaceLineChartDataName(chartData, null); // Assert Assert.AreEqual("Profielschematisatie", chartData.Name); } [Test] public void UpdateSurfaceLineChartDataName_SurfaceLine_NameSetToSurfaceLineName() { // Setup var chartData = new ChartLineData("test name"); var surfaceLine = new MacroStabilityInwardsSurfaceLine("surface line name"); // Call MacroStabilityInwardsChartDataFactory.UpdateSurfaceLineChartDataName(chartData, surfaceLine); // Assert Assert.AreEqual("surface line name", chartData.Name); } [Test] public void UpdateSoilProfileChartDataName_WithoutSoilProfile_NameSetToDefaultSoilProfileName() { // Setup var chartData = new ChartDataCollection("test name"); // Call MacroStabilityInwardsChartDataFactory.UpdateSoilProfileChartDataName(chartData, null); // Assert Assert.AreEqual("Ondergrondschematisatie", chartData.Name); } [Test] public void UpdateSoilProfileChartDataName_WithSoilProfile_NameSetToSoilProfileName() { // Setup var chartData = new ChartDataCollection("test name"); var soilProfile = new MacroStabilityInwardsSoilProfile1D("soil profile name", 2.0, new[] { new MacroStabilityInwardsSoilLayer1D(3.2) }); // Call MacroStabilityInwardsChartDataFactory.UpdateSoilProfileChartDataName(chartData, soilProfile); // Assert Assert.AreEqual("soil profile name", chartData.Name); } private static void AssertEqualStyle(ChartPointStyle pointStyle, Color fillColor, int size, Color strokeColor, int strokeThickness, ChartPointSymbol symbol) { Assert.AreEqual(fillColor, pointStyle.Color); Assert.AreEqual(size, pointStyle.Size); Assert.AreEqual(strokeColor, pointStyle.StrokeColor); Assert.AreEqual(strokeThickness, pointStyle.StrokeThickness); Assert.AreEqual(symbol, pointStyle.Symbol); Assert.IsTrue(pointStyle.IsEditable); } private static void AssertEqualStyle(ChartAreaStyle areaStyle, Color fillColor, Color strokeColor, int width, bool isEditable) { Assert.AreEqual(fillColor, areaStyle.FillColor); Assert.AreEqual(strokeColor, areaStyle.StrokeColor); Assert.AreEqual(width, areaStyle.StrokeThickness); Assert.AreEqual(isEditable, areaStyle.IsEditable); } private static void AssertEqualStyle(ChartLineStyle lineStyle, Color color, int width, ChartLineDashStyle dashStyle) { Assert.AreEqual(color, lineStyle.Color); Assert.AreEqual(width, lineStyle.Width); Assert.AreEqual(dashStyle, lineStyle.DashStyle); Assert.IsTrue(lineStyle.IsEditable); } } }