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);
}
}
}
}