//----------------------------------------------------------------------- // // Copyright (c) 2011 Deltares. All rights reserved. // // Tom The // tom.the@deltares.nl // 28-03-2011 // Test for importing CSV-files in DataPlugin //----------------------------------------------------------------------- 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 System.Text; 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(DamType.Primary); Assert.AreEqual(1, dikeList.Count()); string dikeRingId = dikeList.FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(dikeList, DamType.Primary, null); Info dikeInfo = dataPluginImporter.GetDikeRingInfo(dikeRingId); Assert.AreEqual("dijkring10", dikeInfo.Name); } [Test] public void CanRetrieveLocationData() { string dikeRingId = dataPluginImporter.GetDikeRingIdList(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, null); IEnumerable locationIdList = dataPluginImporter.GetLocationIdList(dikeRingId, DamType.Primary); 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); Assert.AreEqual("1.5", locationDetails.Where(x => x.ParameterName.Equals("HeadPL3")).FirstOrDefault().ParameterValue); } [Test] public void CanRetrieveSegmentData() { string dikeRingId = dataPluginImporter.GetDikeRingIdList(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, 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(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, null); IEnumerable surfaceLineIdList = dataPluginImporter.GetSurfaceLineIdList(dikeRingId); Assert.AreEqual(24, 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(24, 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(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, 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] [Ignore("Not yet implemented in new csv importer")] public void CanRetrieveNonWaterRetainingObjects() { const double cToleranceDimension = 0.001; // Check if NonWaterRetainingObjects available string dikeRingId = dataPluginImporter.GetDikeRingIdList(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, null); IEnumerable nonWaterRetainingObjects = dataPluginImporter.GetNonWaterRetainingObjectList(dikeRingId); Assert.AreEqual(2, nonWaterRetainingObjects.Count()); NonWaterRetainingObject nonWaterRetainingObject = nonWaterRetainingObjects.First(); Assert.AreEqual("NWO1", nonWaterRetainingObject.NwoId); Assert.AreEqual(NonWaterRetainingObjectCategory.Main, nonWaterRetainingObject.Category); Assert.AreEqual(NonWaterRetainingObjectType.GasMain, nonWaterRetainingObject.Type); Assert.AreEqual(PhreaticAdaptionType.MakeEmpty, nonWaterRetainingObject.PhreaticAdaption); Assert.AreEqual(2, nonWaterRetainingObject.H1, cToleranceDimension); Assert.AreEqual(2, nonWaterRetainingObject.H2, cToleranceDimension); Assert.AreEqual(2, nonWaterRetainingObject.N1, cToleranceDimension); Assert.AreEqual(2, nonWaterRetainingObject.N2, cToleranceDimension); Assert.AreEqual(1, nonWaterRetainingObject.B, cToleranceDimension); Assert.AreEqual(0.25, nonWaterRetainingObject.StepSizeX, cToleranceDimension); Assert.AreEqual(1000, nonWaterRetainingObject.MaxDistanceFromToe, cToleranceDimension); nonWaterRetainingObject = nonWaterRetainingObjects.Last(); Assert.AreEqual("NWO2", nonWaterRetainingObject.NwoId); Assert.AreEqual(NonWaterRetainingObjectCategory.Tree, nonWaterRetainingObject.Category); Assert.AreEqual(NonWaterRetainingObjectType.Oak, nonWaterRetainingObject.Type); Assert.AreEqual(PhreaticAdaptionType.None, nonWaterRetainingObject.PhreaticAdaption); Assert.AreEqual(1.5, nonWaterRetainingObject.H1, cToleranceDimension); Assert.AreEqual(1.5, nonWaterRetainingObject.H2, cToleranceDimension); Assert.AreEqual(2, nonWaterRetainingObject.N1, cToleranceDimension); Assert.AreEqual(2, nonWaterRetainingObject.N2, cToleranceDimension); Assert.AreEqual(1.2, nonWaterRetainingObject.B, cToleranceDimension); Assert.AreEqual(0.5, nonWaterRetainingObject.StepSizeX, cToleranceDimension); Assert.AreEqual(12.5, nonWaterRetainingObject.MaxDistanceFromToe, cToleranceDimension); } [Test] public void CanRetrieveScenarios() { const double cToleranceDimension = 0.001; // Check if NonWaterRetainingObjects available string dikeRingId = dataPluginImporter.GetDikeRingIdList(DamType.Primary).FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(new List() { dikeRingId }, DamType.Primary, 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; } } } } }