// Copyright (C) Stichting Deltares 2024. 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.Linq; using Deltares.Dam.Data.CsvImporters; using Deltares.Dam.Data.Importers; using Deltares.Maps; using NetTopologySuite.Geometries; using NUnit.Framework; using Rhino.Mocks; using DataAttribute = Deltares.Dam.Data.DataPlugins.Configuration.DataAttribute; namespace Deltares.Dam.Tests.Importers { [TestFixture] public class LocationShapeFileImporterTest { //TODO: .net 6 replace by substitute //private ICollection locations; //private LocationShapeFileImporter importer; //private MockRepository mocks; //private IFeatureRepository repository; //private Feature loc3, loc4; //[Test] //public void Importer_GivenEmptyLocationList_ShouldNotThrow() //{ // Assert.DoesNotThrow(() => // { // _ = new LocationShapeFileImporter(null, null); // mocks.ReplayAll(); // }); //} //[Test] //public void Importer_UsingValidConfiguredAttributed_NewLocationsAddedToImportedItems() //{ // const string locAttributeName = "LID"; // const string dridAttributeName = "DRID"; // var configuredAttributes = new List // { // new DataAttribute // { // AttributeId = LocationShapeFileAttributeMap.LocationAttributeId, // AttributeName = locAttributeName // }, // new DataAttribute // { // AttributeId = LocationShapeFileAttributeMap.DikeRingAttributeId, // AttributeName = dridAttributeName // } // }; // importer = new LocationShapeFileImporter(locations, configuredAttributes) // { // Repository = repository // }; // var l3 = Feature.Create(new Coordinate(1, 1)); // l3.AddAttribute(locAttributeName, "loc3"); // l3.AddAttribute(dridAttributeName, "ring5"); // var l4 = Feature.Create(new Coordinate(2, 2)); // l4.AddAttribute(locAttributeName, "loc4"); // l4.AddAttribute(dridAttributeName, "ring5"); // Expect.Call(repository.Features).Return(new[] // { // l3, // l4 // }); // mocks.ReplayAll(); // importer.Import(); // Assert.That(importer.ImportedItems.Count(), Is.EqualTo(4)); //} //[Test] //public void Import_UsingValidRepository_NewLocationsAddedToImportedItems() //{ // var configuredAttributes = new List // { // new DataAttribute // { // AttributeId = LocationShapeFileAttributeMap.LocationAttributeId // }, // new DataAttribute // { // AttributeId = LocationShapeFileAttributeMap.DikeRingAttributeId // } // }; // // Add existing location to test if that is handled correctly // var location = new CsvImporterLocations.LocationRecord // { // LocationId = "loc3", // DikeRingId = "ring5", // GeoX = 111.11, // GeoY = 222.22 // }; // locations = new List // { // location // }; // importer = new LocationShapeFileImporter(locations, configuredAttributes) // { // Repository = repository // }; // Expect.Call(repository.Features).Return(new[] // { // loc3, // loc4 // }); // mocks.ReplayAll(); // importer.Import(); // // ImportedItems should contain the total list of imported locations // // In this test a location is already in the locations list having same id as // // one feature returned by the feature repository // // This will cause that the importer overriders the existing location // // because of having the same name (id) // // Total should be 2 // Assert.That(importer.ImportedItems.Count(), Is.EqualTo(2)); // CsvImporterLocations.LocationRecord location2 = importer.ImportedItems.Single(l => l.LocationId == "loc3"); // Assert.That(loc3.Geometry.Coordinate.X, Is.EqualTo(location2.GeoX)); // Assert.That(loc3.Geometry.Coordinate.Y, Is.EqualTo(location2.GeoY)); //} //#region Setup/Teardown //[SetUp] //public void FixtureSetup() //{ // mocks = new MockRepository(); //} //[SetUp] //public void TestSetup() //{ // locations = new List // { // new CsvImporterLocations.LocationRecord // { // LocationId = "Location1" // }, // new CsvImporterLocations.LocationRecord // { // LocationId = "Location2" // } // }; // repository = mocks.DynamicMock(); // LocationAttributeMapping lm = LocationShapeFileAttributeMap.GetAttributeMapping(LocationShapeFileAttributeMap.LocationAttributeId); // LocationAttributeMapping drm = LocationShapeFileAttributeMap.GetAttributeMapping(LocationShapeFileAttributeMap.DikeRingAttributeId); // loc3 = Feature.Create(new Coordinate(1, 1)); // loc3.AddAttribute(lm.Name, "loc3"); // loc3.AddAttribute(drm.Name, "ring5"); // loc4 = Feature.Create(new Coordinate(2, 2)); // loc4.AddAttribute(lm.Name, "loc4"); // loc4.AddAttribute(drm.Name, "ring5"); //} //[TearDown] //public void TestTearDown() //{ // mocks.VerifyAll(); //} //[TearDown] //public void FixtureTearDown() {} //#endregion } }