// Copyright (C) Stichting Deltares 2025. All rights reserved.
//
// This file is part of the application DAM - UI.
//
// DAM - UI is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Deltares.Dam.Data;
using Deltares.Dam.Data.DataPlugins;
using Deltares.Dam.Data.DataPlugins.Configuration;
using Deltares.Dam.Data.Importers;
using Deltares.Standard.Language;
using NUnit.Framework;
using DataAttribute = Deltares.Dam.Data.DataPlugins.Configuration.DataAttribute;
namespace Deltares.Dam.Tests
{
[TestFixture]
public class DataPluginImporterTests
{
private const string Location1Id = "RK210-560";
private const string Location2Id = "RK210-570";
private const string HemPolderLocationId1 = "TPL_Hempolder_0010";
private const string HemPolderLocationId2 = "TPL_Hempolder_0020";
readonly string directoryWithCsvFiles = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\GrootSallandBinnenwaarts\");
//Project Invoer1 uses both a locations.csv and a cross section shapefile
readonly string invoer1DirectoryWithCsvFiles =
Path.Combine(Directory.GetCurrentDirectory(), @"TestData\Invoer1-STBI-toDesign\csvfiles\");
readonly string invoer1DirectoryWithDataShapeFiles =
Path.Combine(Directory.GetCurrentDirectory(), @"TestData\Invoer1-STBI-toDesign\shapefiles\");
private string tmpTestFolder;
List srcDataSources;
DataPluginImporter dataPluginImporter;
[SetUp]
public void FixtureSetup()
{
tmpTestFolder = Path.Combine(Directory.GetCurrentDirectory(), "TmpDataPluginImporterTests");
if (!Directory.Exists(tmpTestFolder))
{
Directory.CreateDirectory(tmpTestFolder);
}
}
[TearDown]
public void FixtureTearDown()
{
if (Directory.Exists(tmpTestFolder))
{
Directory.Delete(tmpTestFolder, true);
}
}
[Test]
public void CanDefineDataSources()
{
var srcDataSources = new List();
var dataPluginImporter = new DataPluginImporter();
srcDataSources.Add(new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = directoryWithCsvFiles
});
dataPluginImporter.SetDataSources("", srcDataSources);
//var destDataSources = dataPluginImporter.DataSources.ToList();
List destDataSources = dataPluginImporter.DataSources.ToList();
Assert.That(destDataSources.Count(), Is.EqualTo(srcDataSources.Count));
Assert.That(srcDataSources[0].Equals(destDataSources.FirstOrDefault()), Is.True);
}
[Test]
public void ThrowsExceptionWhenRequestingDataWhenDataSourcesNotDefined()
{
var dataPluginImporter = new DataPluginImporter();
Assert.That(() => dataPluginImporter.DikeInfo, Throws.InstanceOf());
}
[Test]
[Category("Slow")]
public void CanRetrieveDikeInfo()
{
var srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = directoryWithCsvFiles
}
};
var dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
dataPluginImporter.ImportDataForDike(null);
Info info = dataPluginImporter.DikeInfo;
if (LocalizationManager.CurrentLanguage == LanguageType.Dutch)
{
Assert.That(info.Description, Is.EqualTo("Dijk"));
}
else
{
Assert.That(info.Description, Is.EqualTo("Dike"));
}
Assert.That(info.Name, Is.EqualTo("Kering"));
}
///
/// Some parameters for location can be read from either locations.csv or shapefile
/// The value from shapefile overwrites the value from locations.csv
/// In this test the values for headpl2 in the import files are:
/// In shapefiles: -5.37 for both locations
/// In locations.csv: -99 for both locations
/// Expected value in the scenario of the location will be -5.37 for both locations
///
[Test]
public void ValuesFromShapeFileOverwriteValuesFromLocationsCsv()
{
SetupInvoer1WithShapeFiles();
dataPluginImporter.ImportDataForDike(null);
string scenarioIdOne = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault();
NameValueParameter[] scenarioDetailsOne = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioIdOne).ToArray();
Assert.That(scenarioDetailsOne, Is.Not.Empty);
NameValueParameter headPl2ValueOne = scenarioDetailsOne.SingleOrDefault(x => x.ParameterName.Equals("HeadPL2"));
Assert.That(headPl2ValueOne.ParameterValue, Is.EqualTo("-5.37"));
string scenarioIdTwo = dataPluginImporter.GetScenarioList(Location2Id).FirstOrDefault();
NameValueParameter[] scenarioDetailsTwo = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioIdTwo).ToArray();
Assert.That(scenarioDetailsTwo, Is.Not.Empty);
NameValueParameter headPl2ValueTwo = scenarioDetailsTwo.SingleOrDefault(x => x.ParameterName.Equals("HeadPL2"));
Assert.That(headPl2ValueTwo.ParameterValue, Is.EqualTo("-5.37"));
}
///
/// Some parameters for scenario can be read from either locations.csv, shapefile or scenarios.csv
/// The value from scenarios.csv overwrites the value from shapefile, which overwrites the value from locations.csv
/// In this test the values for headpl3 in the import files are:
/// In scenarios.csv: not defined
/// In shapefiles: not defined
/// In locations.csv: -99 for both locations
/// Expected value in scenario will be -99
///
[Test]
public void ValuesFromLocationsCsvAreCopiedToScenarioIfNotDefinedInScenariosCsvOrShapeFile()
{
SetupInvoer1WithoutShapeFiles();
dataPluginImporter.ImportDataForDike(null);
string scenarioId = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.Any(), Is.True);
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-99"));
scenarioDetails = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioId);
Assert.That(scenarioDetails.First(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-99"));
}
///
/// Some parameters for scenario can be read from either locations.csv, shapefile or scenarios.csv
/// The value from scenarios.csv overwrites the value from shapefile, which overwrites the value from locations.csv
/// In this test the values for headpl3 in the import files are:
/// In scenarios.csv: not defined
/// In shapefiles: -3.651 for location 1, -3.632 for location 2
/// In locations.csv: -99 for both locations
/// Expected value in scenario will be -3.651 for location 1, -3.632 for location 2
///
[Test]
public void ValuesFromShapeFileAreCopiedToScenarioIfNotDefinedInScenariosCsv()
{
SetupInvoer1WithShapeFiles();
dataPluginImporter.ImportDataForDike(null);
string scenarioId = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.Any(), Is.True);
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-3.651"));
scenarioDetails = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioId);
Assert.That(scenarioDetails.First(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-3.632"));
}
///
/// RiverLevel must be specified in locations.csv, shapefile or scenarios.csv
/// In this test reading from shapefile is skipped, RiverLevel is defined in locations, not in scenarios
///
[Test]
public void ImportRiverLevelFromLocationsTest()
{
// Setup folder for situation where RiverLevel is specified in locations
string importFolder = Path.Combine(tmpTestFolder, "TmpImportFilesRiverLevelFromLocations");
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = importFolder
}
};
// Create basic datafiles that are needed to succeed the import method
CreateBasicDataFiles(importFolder);
// Create locations.csv that includes RiverLevel
string importLocationsFile = importFolder + "\\locations.csv";
CreateLocationsFileWithRiverLevel(importLocationsFile);
// Create scenarios.csv that does NOT include RiverLevel
string importScenarioFile = importFolder + "\\scenarios.csv";
CreateScenariosFileWithoutRiverLevel(importScenarioFile);
dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
dataPluginImporter.ImportDataForDike(null);
// Expected: The values of location are used for scenario, because it was not specified in scenarios.csv
string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("1.2"));
scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("2.2"));
// Expected: no error messages
Assert.That(dataPluginImporter.ImportLogMessages.Count, Is.EqualTo(0));
}
///
/// RiverLevel must be specified in locations.csv, shapefile or scenarios.csv
/// In this test reading from shapefile is skipped, RiverLevel is defined in locations and in scenarios
///
[Test]
public void ImportRiverLevelFromScenariosTest()
{
// Setup folder for situation where RiverLevel is specified in locations and scenarios
string importFolder = Path.Combine(tmpTestFolder, "TmpImportFilesRiverLevelFromScenarios");
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = importFolder
}
};
// Create basic datafiles that are needed to succeed the import method
CreateBasicDataFiles(importFolder);
// Create locations.csv that includes RiverLevel
string importLocationsFile = importFolder + "\\locations.csv";
CreateLocationsFileWithRiverLevel(importLocationsFile);
// Create scenarios.csv that includes RiverLevel
string importScenarioFile = importFolder + "\\scenarios.csv";
CreateScenariosFileWithRiverLevel(importScenarioFile);
dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
dataPluginImporter.ImportDataForDike(null);
// Expected: The values of scenarios are used for scenario
string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("0.1"));
scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("0.2"));
// Expected: no error messages
Assert.That(dataPluginImporter.ImportLogMessages.Count, Is.EqualTo(0));
}
///
/// RiverLevel must be specified in locations.csv, shapefile or scenarios.csv
/// In this test reading from shapefile is skipped, RiverLevel is NOT defined in locations or scenarios
///
[Test]
public void ImportRiverLevelNotSpecifiedTest()
{
// Setup folder for situation where RiverLevel is NOT specified in locations and scenarios
string importFolder = Path.Combine(tmpTestFolder, "TmpImportFilesRiverLevelNotSpecified");
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = importFolder
}
};
// Create basic datafiles that are needed to succeed the import method
CreateBasicDataFiles(importFolder);
// Create locations.csv that includes RiverLevel
string importLocationsFile = importFolder + "\\locations.csv";
CreateLocationsFileWithoutRiverLevel(importLocationsFile);
// Create scenarios.csv that includes RiverLevel
string importScenarioFile = importFolder + "\\scenarios.csv";
CreateScenariosFileWithoutRiverLevel(importScenarioFile);
dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
dataPluginImporter.ImportDataForDike(null);
// Expected: The values are null
string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null));
scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null));
// Expected: no error messages
Assert.That(dataPluginImporter.ImportLogMessages.Count, Is.EqualTo(0));
}
///
/// Test for values that can be read from both scenarios.csv and locations.csv/shapefile for situation:
/// Locations.csv: filled with only required values (none)
/// Shapefiles: none
/// Scenarios.csv: filled with only required values (none)
/// Expected result: scenario will be filled with defaults
/// See Log.xlsx for all the values that are in all the files, expected values in column Locations_basic.csv + Scenario_basic.csv
///
[Test]
public void ImportHemPolderScenarioDefaultsTest()
{
// Copy import data to test folder
string importFolder = Path.Combine(tmpTestFolder, "ImportHemPolderScenarioDefaultsTest");
if (Directory.Exists(importFolder))
{
Directory.Delete(importFolder, true);
}
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
string testDataFolderCsv = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\csvfiles");
File.Copy(Path.Combine(testDataFolderCsv, "characteristicpoints.csv"), Path.Combine(importFolder, "characteristicpoints.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "segments.csv"), Path.Combine(importFolder, "segments.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "soilprofiles.csv"), Path.Combine(importFolder, "soilprofiles.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "surfacelines.csv"), Path.Combine(importFolder, "surfacelines.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "locations_basic.csv"), Path.Combine(importFolder, "locations.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv"));
// create importer
SetupInvoerHemPolderWithoutShapeFiles(importFolder);
dataPluginImporter.ImportDataForDike(null);
// check values for location 1
string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("1.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("1.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("1.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1"));
// check values for location 2
scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("1.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("1.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("1.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo(null));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1"));
}
///
/// Test for values that can be read from both scenarios.csv and locations.csv/shapefile for situation:
/// Locations.csv: completely filled
/// Shapefiles: none
/// Scenarios.csv: filled with only required values (waterheight)
/// Expected result: scenario will be filled with values from locations.csv
/// See Log.xlsx for all the values that are in all the files, expected values in column Locations_complete.csv + Scenario_basic.csv
///
[Test]
public void ImportHemPolderScenarioFromLocationsCsvTest()
{
// Copy import data to test folder
string importFolder = Path.Combine(tmpTestFolder, "ImportHemPolderScenarioFromLocationsCsvTest");
if (Directory.Exists(importFolder))
{
Directory.Delete(importFolder, true);
}
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
string testDataFolderCsv = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\csvfiles");
File.Copy(Path.Combine(testDataFolderCsv, "characteristicpoints.csv"), Path.Combine(importFolder, "characteristicpoints.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "segments.csv"), Path.Combine(importFolder, "segments.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "soilprofiles.csv"), Path.Combine(importFolder, "soilprofiles.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "surfacelines.csv"), Path.Combine(importFolder, "surfacelines.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "locations_complete.csv"), Path.Combine(importFolder, "locations.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv"));
// create importer
SetupInvoerHemPolderWithoutShapeFiles(importFolder);
dataPluginImporter.ImportDataForDike(null);
// check values for location 1
string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.55"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.56"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.57"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.58"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.59"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.6"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("0.88"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("0.77"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("2.88"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("1.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("1.77"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("1.09"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1.12"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1.14"));
// check values for location 2
scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.65"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.66"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.67"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.68"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.69"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.7"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("0.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("0.66"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("2.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("1.22"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("1.88"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("1.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1.13"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1.15"));
}
///
/// Test for values that can be read from both scenarios.csv and locations.csv/shapefile for situation:
/// Locations.csv: filled completely
/// Shapefiles: line shapes filled completely
/// Scenarios.csv: filled with only required values (waterheight)
/// Expected result: scenario will be filled with values from shapefiles
/// See Log.xlsx for all the values that are in all the files, expected values in column Locations_complete.csv + LijnScenario.shp + Scenario_basic.csv
///
[Test]
public void ImportHemPolderLineShapeOverLocationsCsvTest()
{
// Copy import data to test folder
string importFolder = Path.Combine(tmpTestFolder, "ImportHemPolderLineShapeOverLocationsCsvTest");
if (Directory.Exists(importFolder))
{
Directory.Delete(importFolder, true);
}
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
string testDataFolderCsv = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\csvfiles");
string testDataFolderShape = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\shapefiles");
File.Copy(Path.Combine(testDataFolderCsv, "characteristicpoints.csv"), Path.Combine(importFolder, "characteristicpoints.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "segments.csv"), Path.Combine(importFolder, "segments.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "soilprofiles.csv"), Path.Combine(importFolder, "soilprofiles.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "surfacelines.csv"), Path.Combine(importFolder, "surfacelines.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "locations_complete.csv"), Path.Combine(importFolder, "locations.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv"));
string[] shapefiles = Directory.GetFiles(testDataFolderShape);
foreach (string shapefile in shapefiles)
{
string fileName = Path.GetFileName(shapefile);
File.Copy(Path.Combine(testDataFolderShape, fileName), Path.Combine(importFolder, fileName));
}
// create importer
SetupInvoerHemPolderWithShapeFiles(importFolder, "LijnScenario.shp");
dataPluginImporter.ImportDataForDike(null);
// check values for location 1
string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.21"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.22"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.23"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("False"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.24"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("False"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("3"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("4"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("3.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("2.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("0.6"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.63"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.66"));
// check values for location 2
scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.99"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.11"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.12"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.13"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("False"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.14"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.15"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("4"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("3"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("3"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("0.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.53"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.56"));
}
///
/// Test for values that can be read from both scenarios.csv and locations.csv/shapefile for situation:
/// Locations.csv: filled completely
/// Shapefiles: area shapes filled completely
/// Scenarios.csv: filled with only required values (waterheight)
/// Expected result: scenario will be filled with values from shapefiles
/// See Log.xlsx for all the values that are in all the files, expected values in column Locations_complete.csv + VlakScenario.shp + Scenario_basic.csv
///
[Test]
public void ImportHemPolderAreaShapeOverLocationsCsvTest()
{
// Copy import data to test folder
string importFolder = Path.Combine(tmpTestFolder, "ImportHemPolderAreaShapeOverLocationsCsvTest");
if (Directory.Exists(importFolder))
{
Directory.Delete(importFolder, true);
}
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
string testDataFolderCsv = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\csvfiles");
string testDataFolderShape = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\shapefiles");
File.Copy(Path.Combine(testDataFolderCsv, "characteristicpoints.csv"), Path.Combine(importFolder, "characteristicpoints.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "segments.csv"), Path.Combine(importFolder, "segments.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "soilprofiles.csv"), Path.Combine(importFolder, "soilprofiles.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "surfacelines.csv"), Path.Combine(importFolder, "surfacelines.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "locations_complete.csv"), Path.Combine(importFolder, "locations.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv"));
string[] shapefiles = Directory.GetFiles(testDataFolderShape);
foreach (string shapefile in shapefiles)
{
string fileName = Path.GetFileName(shapefile);
File.Copy(Path.Combine(testDataFolderShape, fileName), Path.Combine(importFolder, fileName));
}
// create importer
SetupInvoerHemPolderWithShapeFiles(importFolder, "VlakScenario.shp");
dataPluginImporter.ImportDataForDike(null);
// check values for location 1
string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.05"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.06"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.07"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.08"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.09"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("False"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.1"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("4"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("6"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("4.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("3.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("0.81"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.83"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.85"));
// check values for location 2
scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.15"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.16"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.17"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.18"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("False"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.19"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.2"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("3"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("4"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("4"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("3"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("0.7"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.75"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.8"));
}
///
/// Test for values that can be read from both scenarios.csv and locations.csv/shapefile for situation:
/// Locations.csv: filled completely
/// Shapefiles: line shapes filled completely
/// Scenarios.csv: filled completely
/// Expected result: scenario will be filled with values from scenarios.csv
/// See Log.xlsx for all the values that are in all the files, expected values in column Locations_complete.csv + LijnScenario.shp + Scenario_complete.csv
///
[Test]
public void ImportHemPolderScenarioOverShapeAndLocationsCsvTest()
{
// Copy import data to test folder
string importFolder = Path.Combine(tmpTestFolder, "ImportHemPolderScenarioOverShapeAndLocationsCsvTest");
if (Directory.Exists(importFolder))
{
Directory.Delete(importFolder, true);
}
if (!Directory.Exists(importFolder))
{
Directory.CreateDirectory(importFolder);
}
string testDataFolderCsv = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\csvfiles");
string testDataFolderShape = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\HempolderImport\shapefiles");
File.Copy(Path.Combine(testDataFolderCsv, "characteristicpoints.csv"), Path.Combine(importFolder, "characteristicpoints.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "segments.csv"), Path.Combine(importFolder, "segments.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "soilprofiles.csv"), Path.Combine(importFolder, "soilprofiles.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "surfacelines.csv"), Path.Combine(importFolder, "surfacelines.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "locations_complete.csv"), Path.Combine(importFolder, "locations.csv"));
File.Copy(Path.Combine(testDataFolderCsv, "scenarios_complete.csv"), Path.Combine(importFolder, "scenarios.csv"));
string[] shapefiles = Directory.GetFiles(testDataFolderShape);
foreach (string shapefile in shapefiles)
{
string fileName = Path.GetFileName(shapefile);
File.Copy(Path.Combine(testDataFolderShape, fileName), Path.Combine(importFolder, fileName));
}
// create importer
SetupInvoerHemPolderWithShapeFiles(importFolder, "LijnScenario.shp");
dataPluginImporter.ImportDataForDike(null);
// check values for location 1
string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault();
IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId);
NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("0.75"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("0.76"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("0.77"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("0.78"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("0.79"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.8"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("0.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("0.91"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("0.92"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("1.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("1.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("0.93"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.94"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.95"));
// check values for location 2
scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault();
scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId);
nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray();
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtRiver")).ParameterValue, Is.EqualTo("1.75"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeTopAtPolder")).ParameterValue, Is.EqualTo("1.76"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowShoulderBaseInside")).ParameterValue, Is.EqualTo("1.77"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeToeAtPolder")).ParameterValue, Is.EqualTo("1.78"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetBelowDikeCrestMiddle")).ParameterValue, Is.EqualTo("1.79"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UsePlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("True"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("PlLineOffsetFactorBelowShoulderCrest")).ParameterValue, Is.EqualTo("0.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionStability")).ParameterValue, Is.EqualTo("1.9"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("UpliftCriterionPiping")).ParameterValue, Is.EqualTo("1.91"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("DikeTableHeight")).ParameterValue, Is.EqualTo("1.92"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("2.5"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevelLow")).ParameterValue, Is.EqualTo("2.25"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorPiping")).ParameterValue, Is.EqualTo("1.93"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1.94"));
Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1.95"));
}
private void SetupInvoer1WithShapeFiles()
{
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = invoer1DirectoryWithCsvFiles
},
new DataSource
{
DataSourceType = DataSourceType.DataShapeFiles,
DataLocation = invoer1DirectoryWithDataShapeFiles
}
};
dataPluginImporter = new DataPluginImporter
{
Attributes = new[]
{
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.LocationAttributeId,
AttributeName = "LocationId",
DataSource = "Locationv2.shp"
},
// Head Pl2 will be put in location, Head Pl3 will be put in scenario if not already imported from scenarios.csv
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.HeadPl3AttributeId,
AttributeName = "stijgh_m",
DataSource = "winterstijg_zonderDSM.shp"
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.HeadPl2AttributeId,
AttributeName = "PLHIGH",
DataSource = "Polderpeilen.shp"
}
}
};
dataPluginImporter.SetDataSources("", srcDataSources);
}
private void SetupInvoer1WithoutShapeFiles()
{
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = invoer1DirectoryWithCsvFiles
}
};
dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
}
private void SetupInvoerHemPolderWithShapeFiles(string folder, string shapefile)
{
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = folder
},
new DataSource
{
DataSourceType = DataSourceType.DataShapeFiles,
DataLocation = folder
}
};
dataPluginImporter = new DataPluginImporter
{
Attributes = new[]
{
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.LocationAttributeId,
AttributeName = "LocationId",
DataSource = "Locations.shp"
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.HeadPl3AttributeId,
AttributeName = "HEADPL3",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.HeadPl4AttributeId,
AttributeName = "HEADPL4",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetBelowDikeTopAtRiverAttributeId,
AttributeName = "PLOBDTOPR",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetBelowDikeTopAtPolderAttributeId,
AttributeName = "PLOBDTOPP",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetBelowShoulderBaseInsideAttributeId,
AttributeName = "PLOBSB",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetBelowDikeToeAtPolderAttributeId,
AttributeName = "PLOBDTOEP",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.UsePlLineOffsetBelowDikeCrestMiddleAttributeId,
AttributeName = "USEPLOBDCM",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetBelowDikeCrestMiddleAttributeId,
AttributeName = "PLOBDCM",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.UsePlLineOffsetFactorBelowShoulderCrestAttributeId,
AttributeName = "USEPLOFBSC",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.PlLineOffsetFactorBelowShoulderCrestAttributeId,
AttributeName = "PLOFBSC",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.UpliftCriterionStabilityAttributeId,
AttributeName = "UPLSTAB",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.UpliftCriterionPipingAttributeId,
AttributeName = "UPLPIPING",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.DikeTableHeightAttributeId,
AttributeName = "DTH",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.RiverLevelAttributeId,
AttributeName = "WHEIGHT",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.RiverLevelLowAttributeId,
AttributeName = "WHEIGHTLOW",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.RequiredSafetyFactorPipingAttributeId,
AttributeName = "FPIPING",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.RequiredSafetyFactorStabilityInnerSlopeAttributeId,
AttributeName = "FSTABIN",
DataSource = shapefile
},
new DataAttribute
{
AttributeId = LocationShapeFileAttributeMap.RequiredSafetyFactorStabilityOuterSlopeAttributeId,
AttributeName = "FSTABOUT",
DataSource = shapefile
}
}
};
dataPluginImporter.SetDataSources("", srcDataSources);
}
private void SetupInvoerHemPolderWithoutShapeFiles(string folder)
{
srcDataSources = new List
{
new DataSource
{
DataSourceType = DataSourceType.CsvFiles,
DataLocation = folder
}
};
dataPluginImporter = new DataPluginImporter();
dataPluginImporter.SetDataSources("", srcDataSources);
}
private void CreateBasicDataFiles(string importFolder)
{
string importFile = importFolder + "\\characteristicpoints.csv";
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using (StreamWriter 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_Insteek geul;Y_Insteek geul;Z_Insteek geul;X_Teen geul;Y_Teen geul;Z_Teen geul;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts");
}
importFile = importFolder + "\\segments.csv";
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using (StreamWriter writer = File.CreateText(importFile))
{
writer.WriteLine("segment_id;soilprofile_id;probability;calculation_type");
}
importFile = importFolder + "\\soilprofiles.csv";
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using (StreamWriter writer = File.CreateText(importFile))
{
writer.WriteLine("soilprofile_id;top_level;soil_name;is_aquifer");
}
importFile = importFolder + "\\surfacelines.csv";
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using (StreamWriter writer = File.CreateText(importFile))
{
writer.WriteLine("LOCATIONID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)");
}
}
private void CreateLocationsFileWithRiverLevel(string importFile)
{
// A valid locations.csv has at least 3 columns
// Required are location_id, surfaceline_id, segment_id.
// For the test we need dikering_id as well.
// Include column for RiverLevel=water_height
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using StreamWriter writer = File.CreateText(importFile);
writer.WriteLine("location_id;dikering_id;surfaceline_id;segment_id;water_height");
writer.WriteLine("RK210-560;Actualisatie;RK210-560;1;1.2");
writer.WriteLine("RK210-570;Actualisatie;RK210-570;1;2.2");
}
private void CreateLocationsFileWithoutRiverLevel(string importFile)
{
// A valid locations.csv has at least 3 columns
// Required are location_id, surfaceline_id, segment_id.
// For the test we need dikering_id as well.
// Do NOT include column for RiverLevel=water_height
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using StreamWriter writer = File.CreateText(importFile);
writer.WriteLine("location_id;dikering_id;surfaceline_id;segment_id;polderlevel");
writer.WriteLine("RK210-560;Actualisatie;RK210-560;1;1.2");
writer.WriteLine("RK210-570;Actualisatie;RK210-570;1;2.2");
}
private void CreateScenariosFileWithRiverLevel(string importFile)
{
// A valid scenarios.csv has at least 2 columns
// Required are location_id, location_scenario_id
// Include column for RiverLevel=water_height
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using StreamWriter writer = File.CreateText(importFile);
writer.WriteLine("location_id;location_scenario_id;water_height;polderlevel");
writer.WriteLine("RK210-560;1;0.1;3.14");
writer.WriteLine("RK210-570;1;0.2;3.14");
}
private void CreateScenariosFileWithoutRiverLevel(string importFile)
{
// A valid scenarios.csv has at least 2 columns
// Required are location_id, location_scenario_id
// Do NOT include column for RiverLevel=water_height
if (File.Exists(importFile))
{
File.Delete(importFile);
}
using StreamWriter writer = File.CreateText(importFile);
writer.WriteLine("location_id;location_scenario_id;polderlevel");
writer.WriteLine("RK210-560;1;3.14");
writer.WriteLine("RK210-570;1;3.14");
}
}
}