// 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; using Deltares.Dam.Data.DataPlugins.Configuration; using Deltares.Dam.Data.Importers; using Deltares.Standard.TestUtils; namespace Deltares.Dam.Tests { using System.Collections.Generic; using System.Linq; using NUnit.Framework; using Data.DataPlugins; [TestFixture] public class DataPluginImporterDataShapeFileTests { //Project Groot Salland does NOT use a cross section shapefile. //The values in the data shapefiles are found by coordinates of the locations that are defined in the locations.csv const string DirectoryWithCsvFiles = @"..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts\"; const string DirectoryWithDataShapeFiles = @"..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts\GWS\gis-customdata\ShapeFiles\"; private const string Location275Id = "dwp27_5"; private const string Location475Id = "dwp47_5"; //Project HHNK_WILMEBREEK does use a cross section shapefile const string HHNK_WILMEBREEKDirectoryWithCsvFiles = @"..\..\..\data\DamEngineTestProjects\HHNK_WILMEBREEK\CSV Bestanden\"; const string HHNK_WILMEBREEKDirectoryWithDataShapeFiles = @"..\..\..\data\DamEngineTestProjects\HHNK_WILMEBREEK\Shapes\"; private const string Location1Id = "WILM_1"; private const string Location22Id = "WILM_22"; List srcDataSources; DataPluginImporter dataPluginImporter; private void SetupGrootSalland() { srcDataSources = new List { new DataSource { DataSourceType = DataSourceType.CsvFiles, DataLocation = DirectoryWithCsvFiles }, new DataSource { DataSourceType = DataSourceType.DataShapeFiles, DataLocation = DirectoryWithDataShapeFiles } }; dataPluginImporter = new DataPluginImporter { Attributes = new[] { new DataAttribute { AttributeId = LocationShapeFileAttributeMap.TrafficLoadAttributeId }, new DataAttribute { AttributeId = LocationShapeFileAttributeMap.PenetrationLengthAttributeId }, new DataAttribute { AttributeId = LocationShapeFileAttributeMap.TL_DegreeOfConsolidationAttributeId } } }; dataPluginImporter.SetDataSources("", srcDataSources); } private void SetupHHNK_WILMEBREEK() { srcDataSources = new List { new DataSource { DataSourceType = DataSourceType.CsvFiles, DataLocation = HHNK_WILMEBREEKDirectoryWithCsvFiles }, new DataSource { DataSourceType = DataSourceType.DataShapeFiles, DataLocation = HHNK_WILMEBREEKDirectoryWithDataShapeFiles } }; dataPluginImporter = new DataPluginImporter { Attributes = new[] { new DataAttribute { AttributeId = LocationShapeFileAttributeMap.LocationAttributeId, AttributeName = "LocationID", DataSource = "Locations2.shp" }, new DataAttribute { AttributeId = LocationShapeFileAttributeMap.DikeRingAttributeId, AttributeName = "DikeringID", DataSource = "Locations2.shp" }, new DataAttribute { AttributeId = LocationShapeFileAttributeMap.CrossSectionAttributId, AttributeName = "LocationID", DataSource = "Crosssections.shp" }, new DataAttribute { AttributeId = LocationShapeFileAttributeMap.TL_DegreeOfConsolidationAttributeId, AttributeName = "TL_DegOfCo", DataSource = "TrafficLoad.shp" } } }; dataPluginImporter.SetDataSources("", srcDataSources); } [Test] public void CanRetrieveTrafficLoadFromDataShapeFile() { SetupGrootSalland(); string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List { dikeRingId }, null); IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); var nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.IsTrue(nameValueParameters.Count() > 0); Assert.AreEqual("13", nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("TrafficLoad")).ParameterValue); } [Test] public void CanRetrieveDegreeOfConsolidationFromDataShapeFile() { SetupGrootSalland(); string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List { dikeRingId }, null); IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); var nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.IsTrue(nameValueParameters.Count() > 0); Assert.AreEqual("0.123", nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("TL_DegreeOfConsolidation")).ParameterValue); } [Test] public void CanRetrieveDegreeOfConsolidationFromDataShapeFileInCombinationWithCrossSectionShapeFile() { SetupHHNK_WILMEBREEK(); string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List { dikeRingId }, null); IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location1Id); var nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.IsTrue(nameValueParameters.Count() > 0); Assert.AreEqual("0.33", nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("TL_DegreeOfConsolidation")).ParameterValue); locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location22Id); Assert.AreEqual("0.55", locationDetails.First( x => x.ParameterName.Equals("TL_DegreeOfConsolidation")).ParameterValue); } /*[Test] public void Import_NoCoverageFoundForPoint_ImporterContinuesAndErrorsAreRetrievable() { string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.GetLocationDetails(dikeRingId, location18_6Id); var errors = dataPluginImporter.GetImportErrors(); Assert.IsNotNull(errors); Assert.IsTrue(errors.Count() > 0); Assert.IsTrue(errors.Contains()); } */ [Test] [Category(Categories.Slow)] public void CanRetrievePenetrationLengthFromDataShapeFile() { SetupGrootSalland(); string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List { dikeRingId }, null); IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); Assert.AreEqual("-1.5", locationDetails.First( x => x.ParameterName.Equals("PenetrationLength")).ParameterValue); locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location475Id); Assert.AreEqual("-1", locationDetails.First( x => x.ParameterName.Equals("PenetrationLength")).ParameterValue); } } }