// Copyright (C) Stichting Deltares 2018. All rights reserved. // // This file is part of the application DAM - UI. // // DAM - UI 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 Deltares.Dam.Data.DataPlugins.Configuration; using Deltares.Geometry; using Deltares.Standard.TestUtils; namespace Deltares.Dam.Tests { using System; using System.Collections.Generic; using System.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.DataPlugins; using NUnit.Framework; [TestFixture] public class DataPluginImporterCsvTests { const string directoryWithCsvFiles = @"..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts\"; private const string location18_6Id = "dwp18_6"; private const string segment05_4Id = "segment_dijkring10_dwp05_4"; private const string surfaceline40_0Id = "dijkring10_dwp40_0"; private const string soilprofile10Y_149_STBI_pId = "10Y_149_STBI_p"; List srcDataSources; DataPluginImporter dataPluginImporter; [TestFixtureSetUp] public void TestFixtureSetup() { srcDataSources = new List(); srcDataSources.Add(new DataSource() { DataSourceType = DataSourceType.CsvFiles, DataLocation = directoryWithCsvFiles }); dataPluginImporter = new DataPluginImporter(); dataPluginImporter.SetDataSources("", srcDataSources); } [Test] [Category(Categories.Slow)] public void CanImportDikeData() { IEnumerable dikeList = dataPluginImporter.GetDikeRingIdList(); Assert.AreEqual(1, dikeList.Count()); string dikeRingId = dikeList.FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(dikeList, null); Info dikeInfo = dataPluginImporter.GetDikeRingInfo(dikeRingId); Assert.AreEqual("dijkring10", dikeInfo.Name); } [Test] public void CanRetrieveLocationData() { string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, null); IEnumerable locationIdList = dataPluginImporter.GetLocationIdList(dikeRingId); Assert.AreEqual(24, locationIdList.Count()); Info locationInfo = dataPluginImporter.GetLocationInfo(dikeRingId, location18_6Id); Assert.AreEqual(location18_6Id, locationInfo.Name); IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, location18_6Id); Assert.IsTrue(locationDetails.Count() > 0); Assert.AreEqual("dijkring10_dwp18_6", locationDetails.Where(x => x.ParameterName.Equals("SurfaceLineId")).FirstOrDefault().ParameterValue); Assert.AreEqual("segment_dijkring10_dwp18_6", locationDetails.Where(x => x.ParameterName.Equals("SegmentId")).FirstOrDefault().ParameterValue); Assert.AreEqual("192584.1", locationDetails.Where(x => x.ParameterName.Equals("XRd")).FirstOrDefault().ParameterValue); Assert.AreEqual("511740.3", locationDetails.Where(x => x.ParameterName.Equals("YRd")).FirstOrDefault().ParameterValue); Assert.AreEqual("-3", locationDetails.Where(x => x.ParameterName.Equals("PolderLevel")).FirstOrDefault().ParameterValue); } [Test] public void CanRetrieveSegmentData() { string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, null); IEnumerable segmentIdList = dataPluginImporter.GetSegmentIdList(dikeRingId); Assert.AreEqual(24, segmentIdList.Count()); IEnumerable segmentProfile1DIdList = dataPluginImporter.GetProfile1DIdListForSegment(dikeRingId, segment05_4Id, FailureMechanismSystemType.StabilityInside); Assert.AreEqual(0, segmentProfile1DIdList.Count()); IEnumerable segmentProfile2DIdList = dataPluginImporter.GetProfile2DIdListForSegment(dikeRingId, segment05_4Id, FailureMechanismSystemType.StabilityInside); Assert.AreEqual(1, segmentProfile2DIdList.Count()); string soilProfile2DId = segmentProfile2DIdList.FirstOrDefault(); Assert.AreEqual("10Y_054_STBI.sti", soilProfile2DId); IEnumerable profileDetails = dataPluginImporter.GetSegmentProfile2DDetails(dikeRingId, segment05_4Id, soilProfile2DId, FailureMechanismSystemType.StabilityInside); Assert.AreEqual("100", profileDetails.Where(x => x.ParameterName.Equals("Probability")).FirstOrDefault().ParameterValue); Assert.AreEqual("StabilityInside", profileDetails.Where(x => x.ParameterName.Equals("FailureMechanismType")).FirstOrDefault().ParameterValue); } [Test] public void CanRetrieveSurfaceLines() { const double cToleranceCoordinate = 0.001; // Check if surfacelines available string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, null); IEnumerable surfaceLineIdList = dataPluginImporter.GetSurfaceLineIdList(dikeRingId); Assert.AreEqual(13, surfaceLineIdList.Count()); // Check begin- and endpoint of 1 surfaceline IList surfaceLinePoints = dataPluginImporter.GetSurfaceLinePoints(dikeRingId, surfaceline40_0Id); Assert.IsTrue(surfaceLinePoints.Count() > 0); Assert.AreEqual(0.0, surfaceLinePoints[0].X, cToleranceCoordinate); Assert.AreEqual(0.0, surfaceLinePoints[0].Y, cToleranceCoordinate); Assert.AreEqual(-0.48, surfaceLinePoints[0].Z, cToleranceCoordinate); int lastPointIndex = surfaceLinePoints.Count() - 1; Assert.AreEqual(71.25, surfaceLinePoints[lastPointIndex].X, cToleranceCoordinate); Assert.AreEqual(0.0, surfaceLinePoints[lastPointIndex].Y, cToleranceCoordinate); Assert.AreEqual(-0.36, surfaceLinePoints[lastPointIndex].Z, cToleranceCoordinate); // Check specific characteristic points of 1 surfaceline IEnumerable surfaceLineCharacteristicPoints = dataPluginImporter.GetSurfaceLineCharacteristicPoints(dikeRingId, surfaceline40_0Id); Assert.AreEqual(13, surfaceLineIdList.Count()); Assert.IsTrue(surfaceLineCharacteristicPoints.Count() > 0); DpCharacteristicPoint pointSurfaceLevelOutside = surfaceLineCharacteristicPoints.Where(x => x.Id.Equals("SurfaceLevelInside")).FirstOrDefault(); Assert.AreEqual(71.25, pointSurfaceLevelOutside.X, cToleranceCoordinate); Assert.AreEqual(0.0, pointSurfaceLevelOutside.Y, cToleranceCoordinate); Assert.AreEqual(-0.36, pointSurfaceLevelOutside.Z, cToleranceCoordinate); DpCharacteristicPoint pointDitchPolderSide = surfaceLineCharacteristicPoints.Where(x => x.Id.Equals("DitchPolderSide")).FirstOrDefault(); Assert.IsNull(pointDitchPolderSide.Id); } [Test] public void CanRetrieveSoilProfile1Ds() { const double cToleranceCoordinate = 0.001; // Check if soilprofiles available string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, null); IEnumerable soilProfile1DIdList = dataPluginImporter.GetSoilProfile1DIdList(dikeRingId); Assert.AreEqual(26, soilProfile1DIdList.Count()); DpSoilProfile soilProfile = dataPluginImporter.GetSoilProfile1DDetails(dikeRingId, soilprofile10Y_149_STBI_pId); Assert.AreEqual(4, soilProfile.Layers.Count()); Assert.AreEqual(60.0, soilProfile.Layers[0].TopLevel, cToleranceCoordinate); Assert.AreEqual("klei", soilProfile.Layers[0].SoilName); Assert.AreEqual(-3.2, soilProfile.Layers[1].TopLevel, cToleranceCoordinate); Assert.AreEqual("veen", soilProfile.Layers[1].SoilName); Assert.AreEqual(-5.0, soilProfile.Layers[2].TopLevel, cToleranceCoordinate); Assert.AreEqual("WL_zand", soilProfile.Layers[2].SoilName); Assert.AreEqual(-25.0, soilProfile.Layers[3].TopLevel, cToleranceCoordinate); Assert.AreEqual("DummyForBottomLevel", soilProfile.Layers[3].SoilName); } [Test] public void CanRetrieveScenarios() { const double cToleranceDimension = 0.001; string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, null); List scenarioList = dataPluginImporter.GetScenarioList(dikeRingId, location18_6Id).ToList(); Assert.AreEqual(1, scenarioList.Count()); IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, location18_6Id, "1"); foreach (NameValueParameter nameValue in scenarioDetails) { switch (nameValue.ParameterName) { case "WaterLevel": Assert.AreEqual(1.5, Convert.ToDouble(nameValue.ParameterValue), cToleranceDimension); break; case "DikeTableHeight": Assert.AreEqual(2, Convert.ToDouble(nameValue.ParameterValue), cToleranceDimension); break; } } } } }