Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DTests.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DTests.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DTests.cs (revision 5066) @@ -0,0 +1,74 @@ +// Copyright (C) Stichting Deltares 2024. All rights reserved. +// +// This file is part of the Dam Engine. +// +// The Dam Engine is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero 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 Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero 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.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.TestHelpers.Factories; +using KellermanSoftware.CompareNetObjects; +using NUnit.Framework; + +namespace Deltares.DamEngine.Data.Tests.Geotechnics; + +[TestFixture] +public class SoilProfile2DTests +{ + [Test] + public void GivenProfile2DWhenCloningThenClonedProfile2DEqualsOriginal() + { + // Given + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); + soilProfile2D.Surfaces.Last().IsAquifer = true; + soilProfile2D.Surfaces.Last().WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic; + soilProfile2D.Name = ""; + var preConsolidationStress = new PreConsolidationStress + { + Name = "Preconsolidation stress name" + }; + soilProfile2D.PreconsolidationStresses.Add(preConsolidationStress); + + // When + SoilProfile2D cloneSoilProfile2D = soilProfile2D.Clone(); + + // Then + CompareSoilProfile2D(soilProfile2D, cloneSoilProfile2D); + } + + private void CompareSoilProfile2D(SoilProfile2D sourceSoilProfile2D, SoilProfile2D targetSoilProfile2D) + { + Assert.That(targetSoilProfile2D, Is.Not.SameAs(sourceSoilProfile2D)); + var compare = new CompareLogic + { + Config = + { + MaxDifferences = 100 + } + }; + compare.Config.MembersToIgnore = new List + { + "Surfaces", + "Geometry", + "PreconsolidationStresses" + }; + ComparisonResult result = compare.Compare(sourceSoilProfile2D, targetSoilProfile2D); + Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write Input object"); + } +} \ No newline at end of file