using System; using System.Collections.Generic; using System.IO; using System.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.CsvImporters; using Deltares.Dam.Data.Importers; using Deltares.Dam.Data.IO; using Deltares.Geotechnics; using Deltares.Geotechnics.Soils; using Deltares.Probabilistic; using Deltares.Standard; using Deltares.Standard.EventPublisher; using Deltares.Standard.Logging; using Deltares.Standard.TestUtils; using NUnit.Framework; using DataAttribute = Deltares.Dam.Data.DataPlugins.Configuration.DataAttribute; namespace Deltares.Dam.Tests { [TestFixture] public class CsvImporterTestsNew { private string importFolder; /// /// Setup for whole testfixture /// [TestFixtureSetUp] public void FixtureSetup() { importFolder = Path.Combine(Directory.GetCurrentDirectory(), "TmpImportFiles"); } /// /// Setup for single test /// [SetUp] public void Setup() { if (!Directory.Exists(importFolder)) Directory.CreateDirectory(importFolder); } /// /// Create csv file with segments containing 1d soilprofiles /// private void CreateSegmentsFor1DProfilesFile() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("segment_id;soilprofile_id;probability;calculation_type"); writer.WriteLine("1;1DP1;80;Stability"); writer.WriteLine("1;1DP2;20;Stability"); writer.WriteLine("1;1DP2;100;Piping"); writer.WriteLine("2;1DP2;100;Stability"); writer.WriteLine("2;1DP1;100;Piping"); } } /// /// Create csv file with segments containing 2d geometries /// private void CreateSegmentsFor2DGeometriesFile() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("segment_id;soilgeometry2D_name;probability;calculation_type"); writer.WriteLine("1;GeomA;80;Stability"); writer.WriteLine("2;GeomB;20;Piping"); } } /// /// Create csv file with segments containing error header /// private void CreateSegmentsFileWithIllegalHeader() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("segment_id;soilgeometry2D_name;soilprofile_id;probability;calculation_type"); writer.WriteLine("1;GeomA;80;Stability"); writer.WriteLine("1;GeomB;20;Stability"); } } private void CreateSoilProfilesFileWithObsoleteColumn() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("soilprofile_id;top_level;soil_name;soiltype"); writer.WriteLine("1DP1;10;HW-OBO;zand"); writer.WriteLine("1DP1;-0.6;HW-DUN;veen"); writer.WriteLine("1DP1;-1.8;HW-DUOzand;veen"); writer.WriteLine("1DP1;-2.8;HW-HVN;zand"); writer.WriteLine("1DP1;-4;HW-HVN;zand"); writer.WriteLine("1DP1;-5;Alg-zand (0-30);zand"); writer.WriteLine("1DP2;10;HW-OBO;zand"); writer.WriteLine("1DP2;-0.7;HW-DUN;veen"); writer.WriteLine("1DP2;-1.5;HW-DUOzand;veen"); writer.WriteLine("1DP2;-2.4;HW-HVN;zand"); writer.WriteLine("1DP2;-4.3;HW-HVN;zand"); writer.WriteLine("1DP2;-5.3;Alg-zand (0-30);zand"); } } private void CreateSoilProfilesFile() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("soilprofile_id;top_level;soil_name"); writer.WriteLine("1DP1;10;HW-OBO"); writer.WriteLine("1DP1;-0.6;HW-DUN"); writer.WriteLine("1DP1;-1.8;HW-DUOzand"); writer.WriteLine("1DP1;-2.8;HW-HVN"); writer.WriteLine("1DP1;-4;HW-HVN"); writer.WriteLine("1DP1;-5;Alg-zand (0-30)"); writer.WriteLine("1DP2;10;HW-OBO"); writer.WriteLine("1DP2;-0.7;HW-DUN"); writer.WriteLine("1DP2;-1.5;HW-DUOzand"); writer.WriteLine("1DP2;-2.4;HW-HVN"); writer.WriteLine("1DP2;-4.3;HW-HVN"); writer.WriteLine("1DP2;-5.3;Alg-zand (0-30)"); } } private void CreateSoilProfilesFileWithIllegalHeader() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("soilprofile_id;soil_name"); writer.WriteLine("1DP1;10;HW-OBO"); } } private void CreateSoilProfilesFileWithIllegalHeaderField() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine("soilprofile_id;soil_name;aaa;bbb;"); writer.WriteLine("1DP1;10;HW-OBO"); } } private void CreateCharacteristicPointsFile() { string importFile = importFolder + "\\characteristicpoints.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private void CreateCharacteristicPointsFileWithLocationId() { string importFile = importFolder + "\\characteristicpoints.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "LocationId;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private void CreateCharacteristicPointsFileWithIllegalHeader() { string importFile = importFolder + "\\characteristicpoints.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek_sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } /// /// Create csv file with surface lines /// private void CreateSurfaceLinesFile() { string importFile = importFolder + "\\surfacelines.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } /// /// Create csv file with surface lines with /// private void CreateSurfaceLinesFileWithLocationId() { string importFile = importFolder + "\\surfacelines.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "LocationId;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private void CreateSurfaceLinesFileWithIllegalValues() { string importFile = importFolder + "\\surfacelines.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;AS63.310;Bw0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.0as00;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private void CreateSurfaceLinesFileWithIllegalHeaders() { string importFile = importFolder + "\\surfacelines.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "Proflnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;AS63.310;Bw0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.0as00;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private void CreateScenariosFile() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "location_id;location_scenario_id;water_height;water_height_low;dike_table_height;water_height_decimerings_hoogte;max_waterheight;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability"); writer.WriteLine( "D1;1;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;63.310;0.000;1.3;0.000"); writer.WriteLine( "D2;1;0.000;1.680;22.110;2.000;1.220;32.600;1.000;1.400;32.730;3.310;1.000;1.3;0.000"); } } private void CreateScenariosFileWithOffsetData() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "location_id;location_scenario_id;water_height;water_height_low;dike_table_height;water_height_decimerings_hoogte;max_waterheight;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability;PLLineOffsetBelowDikeTopAtRiver;PLLineOffsetBelowDikeTopAtPolder;PLLineOffsetBelowShoulderBaseInside;PLLineOffsetBelowDikeToeAtPolder;UsePLLineOffsetBelowDikeCrestMiddle;PLLineOffsetBelowDikeCrestMiddle;UsePLLineOffsetFactorBelowShoulderCrest;PLLineOffsetFactorBelowShoulderCrest;HeadPL3;HeadPL4"); writer.WriteLine( "D1;1;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;63.310;0.000;1.3;0.000;1.1;2.2;3.3;4.4;TRUE;5.5;FALSE;6.6;7.7;8.8"); writer.WriteLine( "D2;1;0.000;1.680;22.110;2.000;1.220;32.600;1.000;1.400;32.730;3.310;1.000;1.3;0.000;0.1;0.2;0.3;0.4;FALSE;0.5;TRUE;0.6;0.7;0.8"); } } private void CreateLocationsFile() { string importFile = importFolder + "\\locations.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "location_id;surfaceline_id;segment_id;geo_x;geo_y;x_soilgeometry2D_origin;Pl1_id;polderlevel;polderlevellow;head_pl2;head_pl3;head_pl4;Grass_quality;Direction;Ophoogmateriaaldijk;Ophoogmateriaalberm;Sheetpile_x;Sheetpile_y;Sheetpile_z;Sheetpile_length;use_original_plline_assignments;PenetrationLength;TrafficLoad;minimal_circle_depth;dempingsfactor_pl3;dempingsfactor_pl4;PLLineCreationMethod;level_reduction_inside;level_reduction_outside;layer_height_distribution;layer_height_deviation;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability;Materiaaltypedijk;bp_tp;bp_hbp;bp_lbp;Baggerdiepte;distance_to_entry_point;PLLineOffsetBelowDikeTopAtRiver;PLLineOffsetBelowDikeTopAtPolder;PLLineOffsetBelowShoulderBaseInside;PLLineOffsetBelowDikeToeAtPolder;PLLineOffsetDryBelowDikeTopAtRiver;PLLineOffsetDryBelowDikeTopAtPolder;PLLineOffsetDryBelowShoulderBaseInside;PLLineOffsetDryBelowDikeToeAtPolder;StabilityShoulderGrowSlope;StabilityShoulderGrowDeltaX;StabilitySlopeAdaptionDeltaX;detrimentfactor;DikeTableHeight;SlopeDampingPiezometricHeightPolderSide;StabilityDesignMethod;SlopeAdaptionStartCotangent;SlopeAdaptionEndCotangent;SlopeAdaptionStepCotangent; UseNewDikeTopWidth; NewDikeTopWidth;UseNewDikeSlopeInside;NewDikeSlopeInside;UseNewDikeSlopeOutside;NewDikeSlopeOutside;UseNewShoulderTopSlope;NewShoulderTopSlope;UseNewShoulderBaseSlope;NewShoulderBaseSlope;UseNewMaxHeightShoulderAsFraction;NewMaxHeightShoulderAsFraction;UseNewMinDistanceDikeToeStartDitch;NewMinDistanceDikeToeStartDitch;UseNewDitchDefinition;NewWidthDitchBottom;newSlopeAngleDitch;NewDepthDitch;ZoneType;ForbiddenZoneFactor;ZoneAreaRestSlopeCrestWidth;PLLineOffsetBelowDikeCrestMiddle;PLLineOffsetFactorBelowShoulderCrest;UsePLLineOffsetDryBelowDikeCrestMiddle;PLLineOffsetDryBelowDikeCrestMiddle;UsePLLineOffsetDryFactorBelowShoulderCrest;PLLineOffsetDryFactorBelowShoulderCrest;IntrusionVerticalWaterPressure"); writer.WriteLine( "16-1-1-C-3-Z;16-1-1-C-3-Z;1043;124330;441312;1;16-1-1-C-3-Z;0.9;0.2;13.056;0.9;0.8;1;1;klei;klei2;1;2;3;12;TRUE;1.3;10;1.5;30;40;ExpertKnowledgeRRD;1;2;Uniform;0.1;1.2;1.3;1.4;0.01;0.02;0.03;1.1;1.2;klei;1.0;1.1;1.2;2.0;2.1;0.5;0.6;0.1;0.2;0.6;1.6;0.2;0.3;2.0;0.2;0.5;0.9;3.5;0.01;OptimizedSlopeAndShoulderAdaption;3.0;6.0;0.5;TRUE;1.8;TRUE;1.9;TRUE;2.9;TRUE;2.8;TRUE;2.7;TRUE;0.6;TRUE;2.6;TRUE;1.1;1.2;1.3;ZoneAreas;0.5;1.6;1.0;0.1;TRUE;1.1;FALSE;0.11;Standard"); writer.WriteLine( "25-2-2-A-1-A;25-2-2-A-1-A;106;66586;424173;2;25-2-2-A-1-A;-0.25;-0.25;0.8727;-0.25;-0.25;1;1;klei;klei2;1;2;3;12;FALSE;1.3;10;1.5;30;40;ExpertKnowledgeRRD;1;2;Uniform;0.1;1.2;1.3;1.4;0.01;0.02;0.03;1.1;1.2;klei;1.0;1.1;1.2;2.0;2.1;0.5;0.6;0.1;0.2;0.6;1.6;0.2;0.3;2.0;0.2;0.5;0.9;3.5;0.2;SlopeAdaptionBeforeShoulderAdaption;4.5;6.5;0.25;FALSE;0.8;FALSE;0.9;FALSE;1.9;FALSE;1.8;FALSE;1.7;FALSE;0.7;FALSE;1.6;FALSE;1.4;1.5;1.6;ForbiddenZone;0.9;2.1; 1.1;0.11;FALSE; 1.0;TRUE;0.1;SemiTimeDependent"); } } private void CreateScenariosFileWithIllegalHeader() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "location_id;water_height;water_height_low;dike_table_height;water_height_decimerings_hoogte;max_waterheight;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability"); writer.WriteLine( "D1;1;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;63.310;0.000;1.3;0.000"); writer.WriteLine( "D2;1;0.000;1.680;22.110;2.000;1.220;32.600;1.000;1.400;32.730;3.310;1.000;1.3;0.000"); } } private void CreateScenariosFileWithIllegalValues() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); using (var writer = File.CreateText(importFile)) { writer.WriteLine( "location_id;location_scenario_id;water_height;water_height_low;dike_table_height;water_height_decimerings_hoogte;max_waterheight;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability"); writer.WriteLine( "D1;1;0.000;0.680;21.110;0.000;1.120;aa;0.000;1.300;31.730;63.310;0.000;1.3;0.000"); writer.WriteLine( "D2;1;0.000;1.680;22.110;dd;1.220;32.600;1.000;1.400;32.730;3.310;1.000;1.3;0.000"); } } /// /// Test /// [Test] [ExpectedException(typeof(ArgumentException))] public void SegmentImporterThrowsArgumentExceptionWhenFileNameIsEmpty() { CsvImporterSegments csvImporterSegments = new CsvImporterSegments(""); } [Test] [ExpectedException(typeof(FileNotFoundException))] public void SegmentImporterThrowsArgumentExceptionWhenFileDoesNotExist() { CsvImporterSegments csvImporterSegments = new CsvImporterSegments("bla45se%"); } [Test] public void SegmentImporter1DProfileTest() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateSegmentsFor1DProfilesFile(); CsvImporterSegments csvImporterSegments = new CsvImporterSegments(importFile); IList segmentRecords = csvImporterSegments.ImportedItems; Assert.AreEqual("1", segmentRecords[0].SegmentId); Assert.AreEqual("1DP1", segmentRecords[0].SoilProfileId); Assert.AreEqual(80, segmentRecords[0].Probability); Assert.AreEqual(FailureMechanismSystemType.StabilityInside, segmentRecords[0].SegmentFailureMechanismType); Assert.AreEqual("1", segmentRecords[1].SegmentId); Assert.AreEqual("1", segmentRecords[2].SegmentId); Assert.AreEqual("2", segmentRecords[3].SegmentId); Assert.AreEqual("2", segmentRecords[4].SegmentId); Assert.AreEqual("1DP1", segmentRecords[4].SoilProfileId); Assert.AreEqual(100, segmentRecords[4].Probability); Assert.AreEqual(FailureMechanismSystemType.Piping, segmentRecords[4].SegmentFailureMechanismType); } [Test] public void SegmentImporter2DGeometriesTest() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateSegmentsFor2DGeometriesFile(); CsvImporterSegments csvImporterSegments = new CsvImporterSegments(importFile); IList segmentRecords = csvImporterSegments.ImportedItems; Assert.AreEqual("1", segmentRecords[0].SegmentId); Assert.AreEqual("GeomA", segmentRecords[0].SoilGeometry2DName); Assert.AreEqual(80, segmentRecords[0].Probability); Assert.AreEqual(FailureMechanismSystemType.StabilityInside, segmentRecords[0].SegmentFailureMechanismType); Assert.AreEqual("2", segmentRecords[1].SegmentId); Assert.AreEqual("GeomB", segmentRecords[1].SoilGeometry2DName); Assert.AreEqual(20, segmentRecords[1].Probability); Assert.AreEqual(FailureMechanismSystemType.Piping, segmentRecords[1].SegmentFailureMechanismType); } [Test] [ExpectedException(typeof(CsvImporterSegmentsException))] public void SegmentImporterIllegalHeaderTest() { string importFile = importFolder + "\\segments.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateSegmentsFileWithIllegalHeader(); CsvImporterSegments csvImporterSegments = new CsvImporterSegments(importFile); } [Test] public void SoilProfilesImporterFileWithObsoleteColumnTest() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateSoilProfilesFileWithObsoleteColumn(); CsvImporterSoilProfiles csvImporterSoilProfiles = new CsvImporterSoilProfiles(importFile); IList soilProfileRecords = csvImporterSoilProfiles.ImportedItems; Assert.AreEqual("1DP1", soilProfileRecords[0].SoilProfileId); Assert.AreEqual(10, soilProfileRecords[0].TopLevel); Assert.AreEqual("HW-OBO", soilProfileRecords[0].SoilName); Assert.AreEqual("1DP1", soilProfileRecords[1].SoilProfileId); Assert.AreEqual(-0.6, soilProfileRecords[1].TopLevel); Assert.AreEqual("HW-DUN", soilProfileRecords[1].SoilName); Assert.AreEqual("1DP2", soilProfileRecords[11].SoilProfileId); Assert.AreEqual(-5.3, soilProfileRecords[11].TopLevel); Assert.AreEqual("Alg-zand (0-30)", soilProfileRecords[11].SoilName); } [Test] public void SoilProfilesImporterCorrectFileTest() { string importFile = importFolder + "\\soilprofiles.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateSoilProfilesFile(); CsvImporterSoilProfiles csvImporterSoilProfiles = new CsvImporterSoilProfiles(importFile); IList soilProfileRecords = csvImporterSoilProfiles.ImportedItems; Assert.AreEqual("1DP1", soilProfileRecords[0].SoilProfileId); Assert.AreEqual(10, soilProfileRecords[0].TopLevel); Assert.AreEqual("HW-OBO", soilProfileRecords[0].SoilName); Assert.AreEqual("1DP1", soilProfileRecords[1].SoilProfileId); Assert.AreEqual(-0.6, soilProfileRecords[1].TopLevel); Assert.AreEqual("HW-DUN", soilProfileRecords[1].SoilName); Assert.AreEqual("1DP2", soilProfileRecords[11].SoilProfileId); Assert.AreEqual(-5.3, soilProfileRecords[11].TopLevel); Assert.AreEqual("Alg-zand (0-30)", soilProfileRecords[11].SoilName); } [Test] [ExpectedException(typeof(Deltares.Dam.Data.CsvImporters.CsvImporterSoilProfilesException))] public void SoilProfilesImporterIllegalHeaderTest() { CreateSoilProfilesFileWithIllegalHeader(); CsvImporterSoilProfiles csvImporterSoilProfiles = new CsvImporterSoilProfiles(importFolder + "\\soilprofiles.csv"); } [Test] [ExpectedException(typeof(Deltares.Dam.Data.CsvImporters.CsvImporterSoilProfilesException))] public void SoilProfilesImporterMissingHeaderFieldTest() { CreateSoilProfilesFileWithIllegalHeaderField(); CsvImporterSoilProfiles csvImporterSoilProfiles = new CsvImporterSoilProfiles(importFolder + "\\soilprofiles.csv"); } [Test] public void CharacteristicPointsImporterCorrectFileTest() { CreateCharacteristicPointsFile(); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(importFolder + "\\characteristicpoints.csv"); IList characteristicPointsRecords = csvImporterCharacteristicPoints.ImportedItems; CheckCharacteristicPoints(characteristicPointsRecords); } [Test] public void CharacteristicPointsWithLocationIdImporterCorrectFileTest() { CreateCharacteristicPointsFileWithLocationId(); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(importFolder + "\\characteristicpoints.csv"); IList characteristicPointsRecords = csvImporterCharacteristicPoints.ImportedItems; CheckCharacteristicPoints(characteristicPointsRecords); } private static void CheckCharacteristicPoints(IList characteristicPointsRecords) { Assert.AreEqual("D1", characteristicPointsRecords[0].SurfaceLineId); Assert.AreEqual(1, characteristicPointsRecords[0].Volgnummer); Assert.AreEqual(117.94, characteristicPointsRecords[0].Points[0].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[0].Y); Assert.AreEqual(0.12, characteristicPointsRecords[0].Points[0].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].Z); Assert.AreEqual(73.99, characteristicPointsRecords[0].Points[2].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[2].Y); Assert.AreEqual(-1.0, characteristicPointsRecords[0].Points[2].Z); Assert.AreEqual(72.55, characteristicPointsRecords[0].Points[3].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[3].Y); Assert.AreEqual(-1.46, characteristicPointsRecords[0].Points[3].Z); Assert.AreEqual(67.9, characteristicPointsRecords[0].Points[4].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[4].Y); Assert.AreEqual(1.07, characteristicPointsRecords[0].Points[4].Z); Assert.AreEqual(63.31, characteristicPointsRecords[0].Points[5].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[5].Y); Assert.AreEqual(1.36, characteristicPointsRecords[0].Points[5].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].Z); Assert.AreEqual(55.17, characteristicPointsRecords[0].Points[8].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[8].Y); Assert.AreEqual(4.46, characteristicPointsRecords[0].Points[8].Z); Assert.AreEqual(54.25, characteristicPointsRecords[0].Points[9].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[9].Y); Assert.AreEqual(4.69, characteristicPointsRecords[0].Points[9].Z); Assert.AreEqual(51.75, characteristicPointsRecords[0].Points[10].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[10].Y); Assert.AreEqual(4.662, characteristicPointsRecords[0].Points[10].Z); Assert.AreEqual(50.11, characteristicPointsRecords[0].Points[11].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[11].Y); Assert.AreEqual(4.46, characteristicPointsRecords[0].Points[11].Z); Assert.AreEqual(40.48, characteristicPointsRecords[0].Points[12].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[12].Y); Assert.AreEqual(1.94, characteristicPointsRecords[0].Points[12].Z); Assert.AreEqual(32.21, characteristicPointsRecords[0].Points[13].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[13].Y); Assert.AreEqual(1.67, characteristicPointsRecords[0].Points[13].Z); Assert.AreEqual(31.6, characteristicPointsRecords[0].Points[14].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[14].Y); Assert.AreEqual(1.3, characteristicPointsRecords[0].Points[14].Z); Assert.AreEqual(0, characteristicPointsRecords[0].Points[15].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[15].Y); Assert.AreEqual(0.68, characteristicPointsRecords[0].Points[15].Z); } [Test] [ExpectedException(typeof(CsvImporterCharacteristicPointsException))] public void CharacteristicPointsImporterIllegalHeaderTest() { CreateCharacteristicPointsFileWithIllegalHeader(); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(importFolder + "\\characteristicpoints.csv"); } [Test] public void SurfaceLinesImporterCorrectFileTest() { CreateSurfaceLinesFile(); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFolder + "\\surfacelines.csv"); IList surfaceLineRecords = csvImporterSurfaceLines.ImportedItems; CheckSurfaceLine(surfaceLineRecords); } [Test] public void SurfaceLinesWithLocationIdImporterCorrectFileTest() { CreateSurfaceLinesFileWithLocationId(); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFolder + "\\surfacelines.csv"); IList surfaceLineRecords = csvImporterSurfaceLines.ImportedItems; CheckSurfaceLine(surfaceLineRecords); } private static void CheckSurfaceLine(IList surfaceLineRecords) { Assert.AreEqual("D1", surfaceLineRecords[0].SurfaceLineId); Assert.AreEqual(0.0, surfaceLineRecords[0].Xcoors[0]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[0]); Assert.AreEqual(0.680, surfaceLineRecords[0].Zcoors[0]); Assert.AreEqual(21.110, surfaceLineRecords[0].Xcoors[1]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[1]); Assert.AreEqual(1.120, surfaceLineRecords[0].Zcoors[1]); Assert.AreEqual(31.600, surfaceLineRecords[0].Xcoors[2]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[2]); Assert.AreEqual(1.300, surfaceLineRecords[0].Zcoors[2]); Assert.AreEqual(52.630, surfaceLineRecords[0].Xcoors[10]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[10]); Assert.AreEqual(4.770, surfaceLineRecords[0].Zcoors[10]); Assert.AreEqual(72.370, surfaceLineRecords[0].Xcoors[22]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[22]); Assert.AreEqual(-1.060, surfaceLineRecords[0].Zcoors[22]); Assert.AreEqual(86.660, surfaceLineRecords[0].Xcoors[30]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[30]); Assert.AreEqual(0.270, surfaceLineRecords[0].Zcoors[30]); Assert.AreEqual(117.940, surfaceLineRecords[0].Xcoors[32]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[32]); Assert.AreEqual(0.120, surfaceLineRecords[0].Zcoors[32]); } [Test] [ExpectedException(typeof(Deltares.Dam.Data.CsvImporters.CsvImporterSurfaceLinesException))] public void SurfaceLinesImporterIllegalHeaderTest() { CreateSurfaceLinesFileWithIllegalHeaders(); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFolder + "\\surfacelines.csv"); } [Test] public void SurfaceLinesImporterIllegalValuesTest() { CreateSurfaceLinesFileWithIllegalValues(); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFolder + "\\surfacelines.csv"); Assert.AreEqual(1, csvImporterSurfaceLines.ErrorMessages.Count); } [Test] public void LocationImporterCorrectFileTest() { const double tolerance = 0.001; string importFile = importFolder + "\\locations.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateLocationsFile(); CsvImporterLocations csvImporterLocations = new CsvImporterLocations(importFolder + "\\locations.csv"); IList locationRecords = csvImporterLocations.ImportedItems; Assert.AreEqual(2, locationRecords.Count); Assert.AreEqual("25-2-2-A-1-A", locationRecords[1].LocationId); Assert.AreEqual("25-2-2-A-1-A", locationRecords[1].SurfaceLineId); Assert.AreEqual("106", locationRecords[1].SegmentId); Assert.AreEqual(66586.0, locationRecords[1].GeoX, tolerance); Assert.AreEqual(424173.0, locationRecords[1].GeoY, tolerance); Assert.AreEqual(2.0, locationRecords[1].XSoilgeometry2DOrigin, tolerance); Assert.AreEqual("25-2-2-A-1-A", locationRecords[1].Pl1Id); Assert.AreEqual(-0.25, locationRecords[1].Polderlevel, tolerance); Assert.AreEqual(0.2, locationRecords[0].Polderlevellow, tolerance); Assert.AreEqual(0.8727, locationRecords[1].HeadPl2.Value, tolerance); Assert.AreEqual(0.9, locationRecords[0].HeadPl3.Value, tolerance); Assert.AreEqual(0.8, locationRecords[0].HeadPl4.Value, tolerance); Assert.AreEqual(1.0, locationRecords[1].GrassQuality, tolerance); Assert.AreEqual(1.0, locationRecords[1].Direction, tolerance); Assert.AreEqual("klei", locationRecords[1].Ophoogmateriaaldijk); Assert.AreEqual("klei2", locationRecords[1].Ophoogmateriaalberm); Assert.AreEqual(1.0, locationRecords[1].SheetpileX, tolerance); Assert.AreEqual(2.0, locationRecords[1].SheetpileY, tolerance); Assert.AreEqual(3.0, locationRecords[1].SheetpileZ, tolerance); Assert.AreEqual(12.0, locationRecords[1].SheetpileLength, tolerance); Assert.AreEqual(true, locationRecords[0].UseOriginalPllineAssignments); Assert.AreEqual(false, locationRecords[1].UseOriginalPllineAssignments); Assert.AreEqual(1.3, locationRecords[1].PenetrationLength, tolerance); Assert.AreEqual(10, locationRecords[1].TrafficLoad, tolerance); Assert.AreEqual(1.5, locationRecords[1].MinimalCircleDepth, tolerance); Assert.AreEqual(30.0, locationRecords[1].DempingsfactorPl3, tolerance); Assert.AreEqual(40.0, locationRecords[1].DempingsfactorPl4, tolerance); Assert.AreEqual(PLLineCreationMethod.ExpertKnowledgeRRD, locationRecords[1].PLLineCreationMethod); Assert.AreEqual(1.0, locationRecords[1].LevelReductionInside, tolerance); Assert.AreEqual(2.0, locationRecords[1].LevelReductionOutside, tolerance); Assert.AreEqual(DistributionType.Uniform, locationRecords[1].LayerHeightDistribution); Assert.AreEqual(0.1, locationRecords[1].LayerHeightDeviation, tolerance); Assert.AreEqual(1.2, locationRecords[1].SafetyFactorPiping, tolerance); Assert.AreEqual(1.3, locationRecords[1].SafetyFactorStabilityInnerSlope, tolerance); Assert.AreEqual(1.4, locationRecords[1].SafetyFactorStabilityOuterSlope, tolerance); Assert.AreEqual(0.01, locationRecords[1].ProbabilityOfFailureStabilityInnerslope, tolerance); Assert.AreEqual(0.02, locationRecords[1].ProbabilityOfFailureStabilityOuterslope, tolerance); Assert.AreEqual(0.03, locationRecords[1].ProbabilityOfFailurePiping, tolerance); Assert.AreEqual(1.1, locationRecords[1].UpliftCriterionPiping, tolerance); Assert.AreEqual(1.2, locationRecords[1].UpliftCriterionStability, tolerance); Assert.AreEqual("klei", locationRecords[1].Materiaaltypedijk); Assert.AreEqual(1.0, locationRecords[1].bp_tp, tolerance); Assert.AreEqual(1.1, locationRecords[1].bp_hbp, tolerance); Assert.AreEqual(1.2, locationRecords[1].bp_lbp, tolerance); Assert.AreEqual(2.0, locationRecords[1].Baggerdiepte, tolerance); Assert.AreEqual(2.1, locationRecords[1].DistanceToEntryPoint, tolerance); Assert.AreEqual(0.5, locationRecords[1].PLLineOffsetBelowDikeTopAtRiver, tolerance); Assert.AreEqual(0.6, locationRecords[1].PLLineOffsetBelowDikeTopAtPolder, tolerance); Assert.AreEqual(0.1, locationRecords[1].PLLineOffsetBelowShoulderBaseInside, tolerance); Assert.AreEqual(0.2, locationRecords[1].PLLineOffsetBelowDikeToeAtPolder, tolerance); Assert.AreEqual(0.6, locationRecords[1].PLLineOffsetDryBelowDikeTopAtRiver, tolerance); Assert.AreEqual(1.6, locationRecords[1].PLLineOffsetDryBelowDikeTopAtPolder, tolerance); Assert.AreEqual(0.2, locationRecords[1].PLLineOffsetDryBelowShoulderBaseInside, tolerance); Assert.AreEqual(0.3, locationRecords[1].PLLineOffsetDryBelowDikeToeAtPolder, tolerance); Assert.AreEqual(2.0, locationRecords[1].StabilityShoulderGrowSlope, tolerance); Assert.AreEqual(0.2, locationRecords[1].StabilityShoulderGrowDeltaX, tolerance); Assert.AreEqual(0.5, locationRecords[1].StabilitySlopeAdaptionDeltaX, tolerance); Assert.AreEqual(0.9, locationRecords[1].Detrimentfactor, tolerance); Assert.AreEqual(3.5, locationRecords[1].DikeTableHeight, tolerance); Assert.AreEqual(0.01, locationRecords[0].SlopeDampingPiezometricHeightPolderSide, tolerance); Assert.AreEqual(0.2, locationRecords[1].SlopeDampingPiezometricHeightPolderSide, tolerance); Assert.AreEqual(StabilityDesignMethod.OptimizedSlopeAndShoulderAdaption, locationRecords[0].StabilityDesignMethod); Assert.AreEqual(StabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption, locationRecords[1].StabilityDesignMethod); Assert.AreEqual(3.0, locationRecords[0].SlopeAdaptionStartCotangent, tolerance); Assert.AreEqual(6.0, locationRecords[0].SlopeAdaptionEndCotangent, tolerance); Assert.AreEqual(0.5, locationRecords[0].SlopeAdaptionStepCotangent, tolerance); Assert.AreEqual(4.5, locationRecords[1].SlopeAdaptionStartCotangent, tolerance); Assert.AreEqual(6.5, locationRecords[1].SlopeAdaptionEndCotangent, tolerance); Assert.AreEqual(0.25, locationRecords[1].SlopeAdaptionStepCotangent, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewDikeTopWidth); Assert.AreEqual(1.8, locationRecords[0].NewDikeTopWidth, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewDikeTopWidth); Assert.AreEqual(0.8, locationRecords[1].NewDikeTopWidth, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewDikeSlopeInside); Assert.AreEqual(1.9, locationRecords[0].NewDikeSlopeInside, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewDikeSlopeInside); Assert.AreEqual(0.9, locationRecords[1].NewDikeSlopeInside, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewDikeSlopeOutside); Assert.AreEqual(2.9, locationRecords[0].NewDikeSlopeOutside, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewDikeSlopeOutside); Assert.AreEqual(1.9, locationRecords[1].NewDikeSlopeOutside, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewShoulderTopSlope); Assert.AreEqual(2.8, locationRecords[0].NewShoulderTopSlope, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewShoulderTopSlope); Assert.AreEqual(1.8, locationRecords[1].NewShoulderTopSlope, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewShoulderBaseSlope); Assert.AreEqual(2.7, locationRecords[0].NewShoulderBaseSlope, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewShoulderBaseSlope); Assert.AreEqual(1.7, locationRecords[1].NewShoulderBaseSlope, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewMaxHeightShoulderAsFraction); Assert.AreEqual(0.6, locationRecords[0].NewMaxHeightShoulderAsFraction, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewMaxHeightShoulderAsFraction); Assert.AreEqual(0.7, locationRecords[1].NewMaxHeightShoulderAsFraction, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewMinDistanceDikeToeStartDitch); Assert.AreEqual(2.6, locationRecords[0].NewMinDistanceDikeToeStartDitch, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewMinDistanceDikeToeStartDitch); Assert.AreEqual(1.6, locationRecords[1].NewMinDistanceDikeToeStartDitch, tolerance); Assert.AreEqual(true, locationRecords[0].UseNewDitchDefinition); Assert.AreEqual(1.1, locationRecords[0].NewWidthDitchBottom, tolerance); Assert.AreEqual(1.2, locationRecords[0].NewSlopeAngleDitch, tolerance); Assert.AreEqual(1.3, locationRecords[0].NewDepthDitch, tolerance); Assert.AreEqual(false, locationRecords[1].UseNewDitchDefinition); Assert.AreEqual(1.4, locationRecords[1].NewWidthDitchBottom, tolerance); Assert.AreEqual(1.5, locationRecords[1].NewSlopeAngleDitch, tolerance); Assert.AreEqual(1.6, locationRecords[1].NewDepthDitch, tolerance); Assert.AreEqual(MStabZonesType.ZoneAreas, locationRecords[0].StabilityZoneType); Assert.AreEqual(MStabZonesType.ForbiddenZone, locationRecords[1].StabilityZoneType); Assert.AreEqual(0.5, locationRecords[0].ForbiddenZoneFactor, tolerance); Assert.AreEqual(0.9, locationRecords[1].ForbiddenZoneFactor, tolerance); Assert.AreEqual(1.6, locationRecords[0].ZoneAreaRestSlopeCrestWidth, tolerance); Assert.AreEqual(2.1, locationRecords[1].ZoneAreaRestSlopeCrestWidth, tolerance); Assert.AreEqual(1.0, locationRecords[0].PlLineOffsetBelowDikeCrestMiddle, tolerance); Assert.AreEqual(1.1, locationRecords[1].PlLineOffsetBelowDikeCrestMiddle, tolerance); Assert.AreEqual(null, locationRecords[0].UsePlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(null, locationRecords[1].UsePlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(0.1, locationRecords[0].PlLineOffsetFactorBelowShoulderCrest, tolerance); Assert.AreEqual(0.11, locationRecords[1].PlLineOffsetFactorBelowShoulderCrest, tolerance); Assert.AreEqual(null, locationRecords[0].UsePlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(null, locationRecords[1].UsePlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(1.1, locationRecords[0].PlLineOffsetDryBelowDikeCrestMiddle, tolerance); Assert.AreEqual(1.0, locationRecords[1].PlLineOffsetDryBelowDikeCrestMiddle, tolerance); Assert.AreEqual(true, locationRecords[0].UsePlLineOffsetDryBelowDikeCrestMiddle); Assert.AreEqual(false, locationRecords[1].UsePlLineOffsetDryBelowDikeCrestMiddle); Assert.AreEqual(0.11, locationRecords[0].PlLineOffsetDryFactorBelowShoulderCrest, tolerance); Assert.AreEqual(0.1, locationRecords[1].PlLineOffsetDryFactorBelowShoulderCrest, tolerance); Assert.AreEqual(false, locationRecords[0].UsePlLineOffsetDryFactorBelowShoulderCrest); Assert.AreEqual(true, locationRecords[1].UsePlLineOffsetDryFactorBelowShoulderCrest); Assert.AreEqual(IntrusionVerticalWaterPressureType.Standard, locationRecords[0].IntrusionVerticalWaterPressure); Assert.AreEqual(IntrusionVerticalWaterPressureType.SemiTimeDependent, locationRecords[1].IntrusionVerticalWaterPressure); } [Test] public void ScenariosImporterCorrectFileTest() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateScenariosFile(); CsvImporterScenarios csvImporterScenarios = new CsvImporterScenarios(importFolder + "\\scenarios.csv"); IList scenarioRecords = csvImporterScenarios.ImportedItems; Assert.AreEqual("D1", scenarioRecords[0].LocationId); Assert.AreEqual("1", scenarioRecords[0].LocationScenarioId); Assert.AreEqual(0.0, scenarioRecords[0].WaterHeight); Assert.AreEqual(0.680, scenarioRecords[0].WaterHeightLow); Assert.AreEqual(21.110, scenarioRecords[0].DikeTableHeight); Assert.AreEqual(0.0, scenarioRecords[0].WaterHeightDecimatingHeight); Assert.AreEqual(1.120, scenarioRecords[0].MaxWaterHeight); Assert.AreEqual(31.600, scenarioRecords[0].SafetyFactorPiping); Assert.AreEqual(0.0, scenarioRecords[0].SafetyFactorStabilityInnerSlope); Assert.AreEqual(1.300, scenarioRecords[0].SafetyFactorStabilityOuterSlope); Assert.AreEqual(31.730, scenarioRecords[0].ProbabilityOfFailureStabilityInnerSlope); Assert.AreEqual(63.310, scenarioRecords[0].ProbabilityOfFailureStabilityOuterSlope); Assert.AreEqual(0.0, scenarioRecords[0].ProbabilityOfFailurePiping); Assert.AreEqual(1.3, scenarioRecords[0].UpliftCriterionPiping); Assert.AreEqual(0.0, scenarioRecords[0].UpliftCriterionStability); Assert.AreEqual("D2", scenarioRecords[1].LocationId); Assert.AreEqual("1", scenarioRecords[1].LocationScenarioId); Assert.AreEqual(0.0, scenarioRecords[1].WaterHeight); Assert.AreEqual(1.680, scenarioRecords[1].WaterHeightLow); Assert.AreEqual(22.110, scenarioRecords[1].DikeTableHeight); Assert.AreEqual(2.0, scenarioRecords[1].WaterHeightDecimatingHeight); Assert.AreEqual(1.220, scenarioRecords[1].MaxWaterHeight); Assert.AreEqual(32.600, scenarioRecords[1].SafetyFactorPiping); Assert.AreEqual(1.0, scenarioRecords[1].SafetyFactorStabilityInnerSlope); Assert.AreEqual(1.400, scenarioRecords[1].SafetyFactorStabilityOuterSlope); Assert.AreEqual(32.730, scenarioRecords[1].ProbabilityOfFailureStabilityInnerSlope); Assert.AreEqual(3.310, scenarioRecords[1].ProbabilityOfFailureStabilityOuterSlope); Assert.AreEqual(1.0, scenarioRecords[1].ProbabilityOfFailurePiping); Assert.AreEqual(1.3, scenarioRecords[1].UpliftCriterionPiping); Assert.AreEqual(0.0, scenarioRecords[1].UpliftCriterionStability); } [Test] public void ScenariosImporterCorrectFileTestWithOffsetData() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateScenariosFileWithOffsetData(); CsvImporterScenarios csvImporterScenarios = new CsvImporterScenarios(importFolder + "\\scenarios.csv"); IList scenarioRecords = csvImporterScenarios.ImportedItems; Assert.AreEqual("D1", scenarioRecords[0].LocationId); Assert.AreEqual("1", scenarioRecords[0].LocationScenarioId); Assert.AreEqual(0.0, scenarioRecords[0].WaterHeight); Assert.AreEqual(0.680, scenarioRecords[0].WaterHeightLow); Assert.AreEqual(21.110, scenarioRecords[0].DikeTableHeight); Assert.AreEqual(0.0, scenarioRecords[0].WaterHeightDecimatingHeight); Assert.AreEqual(1.120, scenarioRecords[0].MaxWaterHeight); Assert.AreEqual(31.600, scenarioRecords[0].SafetyFactorPiping); Assert.AreEqual(0.0, scenarioRecords[0].SafetyFactorStabilityInnerSlope); Assert.AreEqual(1.300, scenarioRecords[0].SafetyFactorStabilityOuterSlope); Assert.AreEqual(31.730, scenarioRecords[0].ProbabilityOfFailureStabilityInnerSlope); Assert.AreEqual(63.310, scenarioRecords[0].ProbabilityOfFailureStabilityOuterSlope); Assert.AreEqual(0.0, scenarioRecords[0].ProbabilityOfFailurePiping); Assert.AreEqual(1.3, scenarioRecords[0].UpliftCriterionPiping); Assert.AreEqual(0.0, scenarioRecords[0].UpliftCriterionStability); Assert.AreEqual(1.1, scenarioRecords[0].PlLineOffsetBelowDikeTopAtRiver); Assert.AreEqual(2.2, scenarioRecords[0].PlLineOffsetBelowDikeTopAtPolder); Assert.AreEqual(3.3, scenarioRecords[0].PlLineOffsetBelowShoulderBaseInside); Assert.AreEqual(4.4, scenarioRecords[0].PlLineOffsetBelowDikeToeAtPolder); Assert.AreEqual(true, scenarioRecords[0].UsePlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(5.5, scenarioRecords[0].PlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(false, scenarioRecords[0].UsePlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(6.6, scenarioRecords[0].PlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(7.7, scenarioRecords[0].HeadPl3); Assert.AreEqual(8.8, scenarioRecords[0].HeadPl4); Assert.AreEqual("D2", scenarioRecords[1].LocationId); Assert.AreEqual("1", scenarioRecords[1].LocationScenarioId); Assert.AreEqual(0.0, scenarioRecords[1].WaterHeight); Assert.AreEqual(1.680, scenarioRecords[1].WaterHeightLow); Assert.AreEqual(22.110, scenarioRecords[1].DikeTableHeight); Assert.AreEqual(2.0, scenarioRecords[1].WaterHeightDecimatingHeight); Assert.AreEqual(1.220, scenarioRecords[1].MaxWaterHeight); Assert.AreEqual(32.600, scenarioRecords[1].SafetyFactorPiping); Assert.AreEqual(1.0, scenarioRecords[1].SafetyFactorStabilityInnerSlope); Assert.AreEqual(1.400, scenarioRecords[1].SafetyFactorStabilityOuterSlope); Assert.AreEqual(32.730, scenarioRecords[1].ProbabilityOfFailureStabilityInnerSlope); Assert.AreEqual(3.310, scenarioRecords[1].ProbabilityOfFailureStabilityOuterSlope); Assert.AreEqual(1.0, scenarioRecords[1].ProbabilityOfFailurePiping); Assert.AreEqual(1.3, scenarioRecords[1].UpliftCriterionPiping); Assert.AreEqual(0.0, scenarioRecords[1].UpliftCriterionStability); Assert.AreEqual(0.1, scenarioRecords[1].PlLineOffsetBelowDikeTopAtRiver); Assert.AreEqual(0.2, scenarioRecords[1].PlLineOffsetBelowDikeTopAtPolder); Assert.AreEqual(0.3, scenarioRecords[1].PlLineOffsetBelowShoulderBaseInside); Assert.AreEqual(0.4, scenarioRecords[1].PlLineOffsetBelowDikeToeAtPolder); Assert.AreEqual(false, scenarioRecords[1].UsePlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(0.5, scenarioRecords[1].PlLineOffsetBelowDikeCrestMiddle); Assert.AreEqual(true, scenarioRecords[1].UsePlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(0.6, scenarioRecords[1].PlLineOffsetFactorBelowShoulderCrest); Assert.AreEqual(0.7, scenarioRecords[1].HeadPl3); Assert.AreEqual(0.8, scenarioRecords[1].HeadPl4); } [Test] [ExpectedException(typeof(Deltares.Dam.Data.CsvImporters.CsvImporterScenariosException))] public void ScenariosImporterIllegalHeaderTest() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateScenariosFileWithIllegalHeader(); CsvImporterScenarios csvImporterScenarios = new CsvImporterScenarios(importFolder + "\\scenarios.csv"); } [Test] public void ScenariosImporterIllegalValuesTest() { string importFile = importFolder + "\\scenarios.csv"; if (File.Exists(importFile)) File.Delete(importFile); CreateScenariosFileWithIllegalValues(); CsvImporterScenarios csvImporterScenarios = new CsvImporterScenarios(importFile); IList scenarioRecords = csvImporterScenarios.ImportedItems; Assert.AreEqual(2, csvImporterScenarios.ErrorMessages.Count); } [Test] public void AllCsvTimingTest() { DataEventPublisher.InvokeWithoutPublishingEvents(() => { var start = DateTime.Now; const string testDataFolder = @"TestData\CsvData\ImporterTest"; var csvImporterSurfaceLines = new CsvImporterSurfaceLines(testDataFolder + "\\surfacelines.csv"); var csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(testDataFolder + "\\characteristicpoints.csv"); var csvImporterSoilProfiles = new CsvImporterSoilProfiles(testDataFolder + "\\soilprofiles.csv"); var csvImporterSegments = new CsvImporterSegments(testDataFolder + "\\segments.csv"); var end = DateTime.Now; var elapsed = end - start; // Note: numbers are the number of records read, not the number of Dam data objects. Assert.AreEqual(3306, csvImporterSurfaceLines.ImportedItems.Count); Assert.AreEqual(3305, csvImporterCharacteristicPoints.ImportedItems.Count); Assert.AreEqual(23554, csvImporterSoilProfiles.ImportedItems.Count); Assert.AreEqual(7672, csvImporterSegments.ImportedItems.Count); var maxTime = TimeSpan.FromSeconds(6); // This is the time on the buildserver; local time was 2 seconds; // enlarged from 4 to 6 sec because code coverage was turned on on build server Assert.Less(elapsed, maxTime); }); } [Test] [Category(Categories.Slow)] public void TestCombiningData() { DataEventPublisher.InvokeWithoutPublishingEvents(() => { LogManager.Messages.Clear(); var start = DateTime.Now; using (var damProjectData = new DamProjectData()) { const string testDataFolder = @"TestData\CsvData\ImporterTest"; const string locationFilename = testDataFolder + "\\LocationID.shp"; damProjectData.WaterBoard.Dikes.Add(new Dike()); var configuredAttributes = new List { new DataAttribute { AttributeId = "location_id", AttributeName = "LOCATIONID", DataSource = "" }, new DataAttribute { AttributeId = "damtype", AttributeName = "DAMTYPE", DataSource = "" }, new DataAttribute { AttributeId = "dikering_id", AttributeName = "DIKERINGID", DataSource = "" } }; var locations = LocationShapeFileImporterDotSpatial.ImportLocations( locationFilename, DamType.Regional, configuredAttributes); foreach (var location in locations) { damProjectData.WaterBoard.Dikes[0].Locations.Add(location); } if (locations.Count > 0) { ProgressDelegate progress = null; var csvImporter = new CsvImporter(); csvImporter.ImportCsvDataFromDirectory(testDataFolder, false, progress, DamType.Regional, DamProjectType.Assessment); foreach (var errormessage in csvImporter.ErrorMessages) { LogManager.Messages.Add(errormessage); } var combineImportedData = new CombineImportedData { WaterBoard = damProjectData.WaterBoard, CharacteristicPointsRecords = csvImporter.CharacteristicPointsRecords, SurfaceLineRecords = csvImporter.SurfaceLinesRecords, SegmentRecords = csvImporter.SegmentRecords, SoilProfilerecords = csvImporter.SoilProfilesRecords, ScenarioRecords = csvImporter.ScenariosRecords }; combineImportedData.AddCsvDataToDikes(); foreach (var errormessage in combineImportedData.ErrorMessages) { LogManager.Messages.Add(errormessage); } } var end = DateTime.Now; var elapsed = end - start; using (var file = new StreamWriter(testDataFolder + "\\Import Error log.txt")) { foreach (var logMessage in LogManager.Messages) { file.WriteLine(logMessage.Message + " " + logMessage.MessageType); } } Assert.AreEqual(5547, damProjectData.WaterBoard.Dikes[0].Locations.Count); Assert.AreEqual(306, damProjectData.WaterBoard.Segments.Count); Assert.AreEqual(3874, damProjectData.WaterBoard.Dikes[0].SoilProfiles.Count); // ca. 6 layers per profile. kan dus kloppen! Assert.AreEqual(8, damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers.Count); Assert.AreEqual("HHNK1_kade", damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Soil.Name); Assert.AreEqual("Layer0", damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Name); Assert.AreEqual(30.0, damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].TopLevel); Assert.AreEqual(2968, damProjectData.WaterBoard.Dikes[0].SurfaceLines2.Count); // Test import of scenarios var loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0110")); Assert.AreEqual(8, loc.Scenarios.Count); loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0180")); Assert.AreEqual(6, loc.Scenarios.Count); // Following location has double entries in CSV file; check if this is handled correctly loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_SCHERMER_BUITEN_WEST_0490")); Assert.AreEqual(6, loc.Scenarios.Count); // Total number of scenarios Assert.AreEqual(19652, damProjectData.WaterBoard.Dikes[0].Scenarios.Count); // Check if all soilprobabbilites are read var segment = damProjectData.WaterBoard.Segments.FirstOrDefault(s => s.Name.Equals("2")); var stabilityProbabilities = new List(segment.SoilProfileProbabilities.Where( p => ((p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityInside) || (p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityOutside) || (p.SegmentFailureMechanismType == null)))); Assert.AreEqual(3, stabilityProbabilities.Count); var pipingProbabilities = new List(segment.SoilProfileProbabilities.Where( p => ((p.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) || (p.SegmentFailureMechanismType == null)))); Assert.AreEqual(3, pipingProbabilities.Count); Assert.AreEqual(539, LogManager.Messages.Count); // Check time needed to read var maxTime = TimeSpan.FromSeconds(80); // This is the time on the buildserver; local time was 25 seconds Assert.Less(elapsed, maxTime, "maximum time of {0} exceeded: {1}", maxTime, elapsed); } }); } [Test] public void TestCombiningDataFullCsv() { LogManager.Messages.Clear(); const double tolerance = 0.001; using (var damProjectData = new DamProjectData()) { const string testDataFolder = @"TestData\CsvData\Full1DProject\csvfiles"; ProgressDelegate progress = null; var csvImporter = new CsvImporter(); csvImporter.ImportCsvDataFromDirectory(testDataFolder, false, progress, DamType.Regional, DamProjectType.Assessment); foreach (var errormessage in csvImporter.ErrorMessages) { LogManager.Messages.Add(errormessage); } var combineImportedData = new CombineImportedData { WaterBoard = damProjectData.WaterBoard, LocationRecords = csvImporter.LocationRecords, CharacteristicPointsRecords = csvImporter.CharacteristicPointsRecords, SurfaceLineRecords = csvImporter.SurfaceLinesRecords, SegmentRecords = csvImporter.SegmentRecords, SoilProfilerecords = csvImporter.SoilProfilesRecords, ScenarioRecords = csvImporter.ScenariosRecords }; combineImportedData.AddCsvDataToDikes(); foreach (var errormessage in combineImportedData.ErrorMessages) { LogManager.Messages.Add(errormessage); } using (var file = new StreamWriter(testDataFolder + "\\Import full csv error log.txt")) { foreach (var logMessage in LogManager.Messages) { file.WriteLine(logMessage.Message + " " + logMessage.MessageType); } } Assert.AreEqual(2, damProjectData.WaterBoard.Dikes[0].Locations.Count); Assert.AreEqual(2, damProjectData.WaterBoard.Segments.Count); Assert.AreEqual(23, damProjectData.WaterBoard.Dikes[0].SoilProfiles.Count); Assert.AreEqual(4, damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers.Count); Assert.AreEqual("kade", damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Soil.Name); Assert.AreEqual("Layer0", damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Name); Assert.AreEqual(60.0, damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].TopLevel); Assert.AreEqual(2, damProjectData.WaterBoard.Dikes[0].SurfaceLines2.Count); // Check location specific data var location = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(s => s.Name.Equals("25-2-2-A-1-A")); Assert.IsTrue(location != null); Assert.AreEqual("25-2-2-A-1-A", location.Name); //Assert.AreEqual("25-2-2-A-1-A", location.SurfaceLine.Name); //Assert.AreEqual("106", location.Segment.Name); Assert.AreEqual(66586.0, location.XRd, tolerance); Assert.AreEqual(424173.0, location.YRd, tolerance); Assert.AreEqual(2.0, location.XSoilGeometry2DOrigin, tolerance); //Assert.AreEqual("25-2-2-A-1-A", location.PL1Line.Name); Assert.AreEqual(-0.25, location.PolderLevel, tolerance); Assert.AreEqual(-0.25, location.PolderLevelLow, tolerance); Assert.AreEqual(0.8727, location.HeadPL2.Value, tolerance); Assert.AreEqual(-0.25, location.HeadPl3.Value, tolerance); Assert.AreEqual(-0.25, location.HeadPl4.Value, tolerance); Assert.AreEqual(1.0, location.GrassQuality, tolerance); Assert.AreEqual(1.0, location.Direction, tolerance); Assert.AreEqual("klei", location.DikeEmbankmentMaterial); Assert.AreEqual("klei2", location.ShoulderEmbankmentMaterial); Assert.AreEqual(1.0, location.SheetPilePoint.X, tolerance); Assert.AreEqual(2.0, location.SheetPilePoint.Y, tolerance); Assert.AreEqual(3.0, location.SheetPilePoint.Z, tolerance); Assert.AreEqual(12.0, location.SheetPileLength, tolerance); Assert.AreEqual(false, location.IsUseOriginalPLLineAssignments); Assert.AreEqual(1.3, location.PenetrationLength, tolerance); Assert.AreEqual(10, location.TrafficLoad, tolerance); Assert.AreEqual(1.5, location.MinimalCircleDepth, tolerance); Assert.AreEqual(0.3, location.DampingFactorPL3, tolerance); Assert.AreEqual(0.4, location.DampingFactorPL4, tolerance); Assert.AreEqual(PLLineCreationMethod.ExpertKnowledgeRRD, location.PLLineCreationMethod); Assert.AreEqual(1.0, location.LevelReductionInside, tolerance); Assert.AreEqual(2.0, location.LevelReductionOutside, tolerance); Assert.AreEqual(DistributionType.Uniform, location.LayerHeightDistribution); Assert.AreEqual(0.1, location.LayerHeightDeviation, tolerance); Assert.AreEqual(1.2, location.ModelFactors.RequiredSafetyFactorPiping.Value, tolerance); Assert.AreEqual(1.3, location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value, tolerance); Assert.AreEqual(1.4, location.ModelFactors.RequiredSafetyFactorStabilityOuterSlope.Value, tolerance); Assert.AreEqual(0.01, location.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.Value, tolerance); Assert.AreEqual(0.02, location.ModelFactors.RequiredProbabilityOfFailureStabilityOuterslope.Value, tolerance); Assert.AreEqual(0.03, location.ModelFactors.RequiredProbabilityOfFailurePiping.Value, tolerance); Assert.AreEqual(1.1, location.ModelFactors.UpliftCriterionPiping.Value, tolerance); Assert.AreEqual(1.2, location.ModelFactors.UpliftCriterionStability.Value, tolerance); Assert.AreEqual(SoilType.Clay, location.DikeMaterialType); Assert.AreEqual(1.0, location.BoezemLevelTp, tolerance); Assert.AreEqual(1.1, location.BoezemLevelHbp, tolerance); Assert.AreEqual(1.2, location.BoezemLevelLbp, tolerance); Assert.AreEqual(2.0, location.DredgingDepth, tolerance); Assert.AreEqual(2.1, location.DistanceToEntryPoint, tolerance); Assert.AreEqual(0.5, location.PlLineOffsetBelowDikeTopAtRiver, tolerance); Assert.AreEqual(0.6, location.PlLineOffsetBelowDikeTopAtPolder, tolerance); Assert.AreEqual(0.1, location.PlLineOffsetBelowShoulderBaseInside, tolerance); Assert.AreEqual(0.2, location.PlLineOffsetBelowDikeToeAtPolder, tolerance); Assert.AreEqual(0.6, location.PLLineOffsetDryBelowDikeTopAtRiver, tolerance); Assert.AreEqual(1.6, location.PLLineOffsetDryBelowDikeTopAtPolder, tolerance); Assert.AreEqual(0.2, location.PLLineOffsetDryBelowShoulderBaseInside, tolerance); Assert.AreEqual(0.3, location.PLLineOffsetDryBelowDikeToeAtPolder, tolerance); Assert.AreEqual(2.0, location.StabilityShoulderGrowSlope, tolerance); Assert.AreEqual(0.2, location.StabilityShoulderGrowDeltaX, tolerance); Assert.AreEqual(0.5, location.StabilitySlopeAdaptionDeltaX, tolerance); Assert.AreEqual(0.9, location.DetrimentFactor, tolerance); Assert.AreEqual(3.5, location.DikeTableHeight, tolerance); } } } }