Index: src/Deltares.DSoilModel.Forms.Tests/DSoilModelPluginTests.cs =================================================================== diff -u -r439 -r440 --- src/Deltares.DSoilModel.Forms.Tests/DSoilModelPluginTests.cs (.../DSoilModelPluginTests.cs) (revision 439) +++ src/Deltares.DSoilModel.Forms.Tests/DSoilModelPluginTests.cs (.../DSoilModelPluginTests.cs) (revision 440) @@ -1,174 +1,158 @@ using System.Linq; using System.Reflection; using System.Threading; +using System.Windows.Forms; using Deltares.DSoilModel.Data; using Deltares.Geometry.Forms; +using Deltares.Geotechnics; +using Deltares.Geotechnics.ConePenetrationTest; using Deltares.Geotechnics.Forms; using Deltares.Standard; using Deltares.Standard.Forms; using Deltares.Standard.Forms.DExpress; -using System.Windows.Forms; -using Deltares.Geotechnics; -using Deltares.Geotechnics.ConePenetrationTest; using NUnit.Framework; namespace Deltares.DSoilModel.Forms.Tests { [TestFixture] [RequiresSTA] - class DSoilModelPluginTests + internal class DSoilModelPluginTests { - private MainForm mainForm; - private DSoilModelPlugin plugin; - - [TestFixtureSetUp] - public void SetUp() + [Test] + public void CanDeleteBoringTest_Segments() { - BindSupport.ClearCaches(); + var p = new DSoilModelProject(); + plugin.Project = p; - // to avoid Deltares.Standard.About class error - About.IgnoreAssemblyErrors = true; + var boringUsed = new Boring(); + var boringUnused = new Boring(); + p.Borings.Add(boringUsed); + p.Borings.Add(boringUnused); - mainForm = new MainForm(); - mainForm.Register(new GeometryPlugin()); - mainForm.Register(new GeotechnicsPlugin()); - plugin = new DSoilModelPlugin(); - mainForm.Register(plugin); - mainForm.Visible = true; - mainForm.CreateControl(); - - while (!mainForm.IsMainFormLoaded) + var segment1 = new SoilSegment { - Thread.Sleep(1000); - Application.DoEvents(); - } - } + Borings = + { + new BoringPerSegment + { + Boring = boringUsed + } + } + }; + var segment2 = new SoilSegment + { + Borings = + { + new BoringPerSegment() + } + }; + var segment3 = new SoilSegment(); + p.SoilSegments.Add(segment1); + p.SoilSegments.Add(segment2); + p.SoilSegments.Add(segment3); - [TestFixtureTearDown] - public void TearDown() - { - // Don't call form.Close() because it will raise SaveAs dialog - //System.Windows.Forms.Application.Exit(); - plugin.Dispose(); - mainForm.DynamicPropertyControl.Dispose(); - mainForm.Dispose(); - mainForm = null; - plugin = null; - - BindSupport.ClearCaches(); - About.IgnoreAssemblyErrors = false; + Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); } [Test] - public void HandleIsCreated() + public void CanDeleteBoringTest_SoilProfiles1D() { - Assert.IsTrue(mainForm.IsHandleCreated); - } + var p = new DSoilModelProject(); + plugin.Project = p; - [Test] - public void TestSettingNewProject() - { - Assert.IsNotNull(NewProject(plugin)); - } + var boringUsed = new Boring(); + var boringUnused = new Boring(); + p.Borings.Add(boringUsed); + p.Borings.Add(boringUnused); - [Test] - public void ValidateForEmptyProjectIsOk() - { - NewProject(plugin); - var results = RealTimeBackgroundValidator.ValidationResults; - Assert.IsNotNull(results); - // empty project produces 0 errors if validated - Assert.AreEqual(0, results.ToList().Count); - } + var lookup1 = new BoringLookup1D + { + Boring = boringUsed, SoilProfile1D = new SoilProfile1D() + }; + var lookup2 = new BoringLookup1D(); + p.BoringLookup1Ds.Add(lookup1); + p.BoringLookup1Ds.Add(lookup2); - private DSoilModelProject NewProject(DSoilModelPlugin p) - { - p.Project = new DSoilModelProject(); - - // prevent the realtime validator from running - RealTimeBackgroundValidator.Instance.Stop(); - - // allow events to be processed - Application.DoEvents(); - - return p.Project; + Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); } - private bool CanDelete(DSoilModelPlugin p, string actualCanDeleteName, object obj) - { - return (bool)p.GetType().GetMethod(actualCanDeleteName, BindingFlags.NonPublic | BindingFlags.Instance).Invoke(p, new[] { obj }); - } - [Test] - public void CanDeleteSoilTest_SoilProfiles1D() + public void CanDeleteBoringTest_SoilProfiles2D() { var p = new DSoilModelProject(); plugin.Project = p; - - var soilUsed = new Soil(); - var soilUnused = new Soil(); - p.Soils.Add(soilUnused); - p.Soils.Add(soilUsed); - var sp1 = new SoilProfile1D(0, -1, soilUsed); - var sp2 = new SoilProfile1D(0, -1, soilUsed); - p.SoilProfiles1D.Add(sp1); - p.SoilProfiles1D.Add(sp2); + var boringUsed = new Boring(); + var boringUnused = new Boring(); + p.Borings.Add(boringUsed); + p.Borings.Add(boringUnused); - Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); - } - - [Test] - public void CanDeleteSoilTest_SoilProfiles2D() - { - var p = new DSoilModelProject(); - plugin.Project = p; - - var soilUsed = new Soil(); - var soilUnused = new Soil(); - p.Soils.Add(soilUnused); - p.Soils.Add(soilUsed); + var lookup1 = new BoringLookup2D + { + Boring = boringUsed, SoilProfile2D = new SoilProfile2D() + }; + var lookup2 = new BoringLookup2D(); + p.BoringLookup2Ds.Add(lookup1); + p.BoringLookup2Ds.Add(lookup2); - var sp = new SoilProfile2D {Surfaces = { new SoilLayer2D(), new SoilLayer2D {Soil = soilUsed}}}; - p.SoilProfiles2D.Add(sp); - - Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); + Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); } - + [Test] - public void CanDeleteSoilTest_Segments() + public void CanDeleteCptTest_Segments() { var p = new DSoilModelProject(); plugin.Project = p; - - var soilUsed = new Soil(); - var soilUnused = new Soil(); - p.Soils.Add(soilUnused); - p.Soils.Add(soilUsed); - var seg1 = new SoilSegment {DefaultFillMaterialName = soilUsed}; - var seg2 = new SoilSegment(); - p.SoilSegments.Add(seg1); - p.SoilSegments.Add(seg2); + var cptUsed = new ConePenetrationTestData(); + var cptUnused = new ConePenetrationTestData(); + p.CPTs.Add(cptUsed); + p.CPTs.Add(cptUnused); - Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); + var segment1 = new SoilSegment + { + Cpts = + { + new ConePenetrationTestPerSegment + { + ConePenetrationTestData = cptUsed + } + } + }; + var segment2 = new SoilSegment + { + Cpts = + { + new ConePenetrationTestPerSegment() + } + }; + var segment3 = new SoilSegment(); + p.SoilSegments.Add(segment1); + p.SoilSegments.Add(segment2); + p.SoilSegments.Add(segment3); + + Assert.IsTrue(CanDelete(plugin, "CanDeleteCPT", cptUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteCPT", cptUsed)); } [Test] public void CanDeleteCptTest_SoilProfiles1D() { var p = new DSoilModelProject(); plugin.Project = p; - + var cptUsed = new ConePenetrationTestData(); var cptUnused = new ConePenetrationTestData(); p.CPTs.Add(cptUsed); p.CPTs.Add(cptUnused); - var lookup1 = new ConePenetrationTestLookup1D { ConePenetrationTestData = cptUsed, SoilProfile1D = new SoilProfile1D()}; + var lookup1 = new ConePenetrationTestLookup1D + { + ConePenetrationTestData = cptUsed, SoilProfile1D = new SoilProfile1D() + }; var lookup2 = new ConePenetrationTestLookup1D(); p.CptLookup1Ds.Add(lookup1); p.CptLookup1Ds.Add(lookup2); @@ -188,7 +172,10 @@ p.CPTs.Add(cptUsed); p.CPTs.Add(cptUnused); - var lookup1 = new ConePenetrationTestLookup2D { ConePenetrationTestData = cptUsed, SoilProfile2D = new SoilProfile2D() }; + var lookup1 = new ConePenetrationTestLookup2D + { + ConePenetrationTestData = cptUsed, SoilProfile2D = new SoilProfile2D() + }; var lookup2 = new ConePenetrationTestLookup2D(); p.CptLookup2Ds.Add(lookup1); p.CptLookup2Ds.Add(lookup2); @@ -198,124 +185,209 @@ } [Test] - public void CanDeleteCptTest_Segments() + public void CanDeleteSoilProfileTest_Segments() { var p = new DSoilModelProject(); plugin.Project = p; - var cptUsed = new ConePenetrationTestData(); - var cptUnused = new ConePenetrationTestData(); - p.CPTs.Add(cptUsed); - p.CPTs.Add(cptUnused); + // segments can take 1D and 2D profiles simultaneously, so we'll test them altogether - var segment1 = new SoilSegment { Cpts = { new ConePenetrationTestPerSegment { ConePenetrationTestData = cptUsed } } }; - var segment2 = new SoilSegment { Cpts = { new ConePenetrationTestPerSegment () } }; + var sp1dUsed = new SoilProfile1D(); + var sp1dUnused = new SoilProfile1D(); + p.SoilProfiles1D.Add(sp1dUsed); + p.SoilProfiles1D.Add(sp1dUnused); + + var sp2dUsed = new SoilProfile2D(); + var sp2dUnused = new SoilProfile2D(); + p.SoilProfiles2D.Add(sp2dUsed); + p.SoilProfiles2D.Add(sp2dUnused); + + var segment1 = new SoilSegment + { + StochasticSoilModel = new StochasticSoilModel + { + StochasticSoilProfiles = + { + new StochasticSoilProfile + { + Profile = sp1dUsed + }, + new StochasticSoilProfile + { + Profile = sp2dUsed + } + } + } + }; + + var segment2 = new SoilSegment + { + StochasticSoilModel = new StochasticSoilModel() + }; var segment3 = new SoilSegment(); p.SoilSegments.Add(segment1); p.SoilSegments.Add(segment2); p.SoilSegments.Add(segment3); - Assert.IsTrue(CanDelete(plugin, "CanDeleteCPT", cptUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteCPT", cptUsed)); + Assert.IsTrue(CanDelete(plugin, "CanDeleteSoilProfile", sp1dUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteSoilProfile", sp1dUsed)); + + Assert.IsTrue(CanDelete(plugin, "CanDeleteSoilProfile", sp2dUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteSoilProfile", sp2dUsed)); } [Test] - public void CanDeleteBoringTest_SoilProfiles1D() + public void CanDeleteSoilTest_Segments() { var p = new DSoilModelProject(); plugin.Project = p; - var boringUsed = new Boring(); - var boringUnused = new Boring(); - p.Borings.Add(boringUsed); - p.Borings.Add(boringUnused); + var soilUsed = new Soil(); + var soilUnused = new Soil(); + p.Soils.Add(soilUnused); + p.Soils.Add(soilUsed); - var lookup1 = new BoringLookup1D { Boring = boringUsed, SoilProfile1D = new SoilProfile1D() }; - var lookup2 = new BoringLookup1D(); - p.BoringLookup1Ds.Add(lookup1); - p.BoringLookup1Ds.Add(lookup2); + var seg1 = new SoilSegment + { + DefaultFillMaterialName = soilUsed + }; + var seg2 = new SoilSegment(); + p.SoilSegments.Add(seg1); + p.SoilSegments.Add(seg2); - Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); + Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); } - + [Test] - public void CanDeleteBoringTest_SoilProfiles2D() + public void CanDeleteSoilTest_SoilProfiles1D() { var p = new DSoilModelProject(); plugin.Project = p; - var boringUsed = new Boring(); - var boringUnused = new Boring(); - p.Borings.Add(boringUsed); - p.Borings.Add(boringUnused); + var soilUsed = new Soil(); + var soilUnused = new Soil(); + p.Soils.Add(soilUnused); + p.Soils.Add(soilUsed); - var lookup1 = new BoringLookup2D { Boring = boringUsed, SoilProfile2D = new SoilProfile2D() }; - var lookup2 = new BoringLookup2D(); - p.BoringLookup2Ds.Add(lookup1); - p.BoringLookup2Ds.Add(lookup2); + var sp1 = new SoilProfile1D(0, -1, soilUsed); + var sp2 = new SoilProfile1D(0, -1, soilUsed); + p.SoilProfiles1D.Add(sp1); + p.SoilProfiles1D.Add(sp2); - Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); + Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); } [Test] - public void CanDeleteBoringTest_Segments() + public void CanDeleteSoilTest_SoilProfiles2D() { var p = new DSoilModelProject(); plugin.Project = p; - var boringUsed = new Boring(); - var boringUnused = new Boring(); - p.Borings.Add(boringUsed); - p.Borings.Add(boringUnused); + var soilUsed = new Soil(); + var soilUnused = new Soil(); + p.Soils.Add(soilUnused); + p.Soils.Add(soilUsed); - var segment1 = new SoilSegment { Borings = { new BoringPerSegment { Boring = boringUsed } } }; - var segment2 = new SoilSegment { Borings = { new BoringPerSegment() } }; - var segment3 = new SoilSegment(); - p.SoilSegments.Add(segment1); - p.SoilSegments.Add(segment2); - p.SoilSegments.Add(segment3); + var sp = new SoilProfile2D + { + Surfaces = + { + new SoilLayer2D(), new SoilLayer2D + { + Soil = soilUsed + } + } + }; + p.SoilProfiles2D.Add(sp); - Assert.IsTrue(CanDelete(plugin, "CanDeleteBoring", boringUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteBoring", boringUsed)); + Assert.IsTrue(CanDelete(plugin, "CanDeleteSoil", soilUnused)); + Assert.IsFalse(CanDelete(plugin, "CanDeleteSoil", soilUsed)); } [Test] - public void CanDeleteSoilProfileTest_Segments() + public void HandleIsCreated() { - var p = new DSoilModelProject(); - plugin.Project = p; + Assert.IsTrue(mainForm.IsHandleCreated); + } - // segments can take 1D and 2D profiles simultaneously, so we'll test them altogether + [Test] + public void TestSettingNewProject() + { + Assert.IsNotNull(NewProject(plugin)); + } - var sp1dUsed = new SoilProfile1D(); - var sp1dUnused = new SoilProfile1D(); - p.SoilProfiles1D.Add(sp1dUsed); - p.SoilProfiles1D.Add(sp1dUnused); + [Test] + public void ValidateForEmptyProjectIsOk() + { + NewProject(plugin); + var results = RealTimeBackgroundValidator.ValidationResults; + Assert.IsNotNull(results); + // empty project produces 0 errors if validated + Assert.AreEqual(0, results.ToList().Count); + } - var sp2dUsed = new SoilProfile2D(); - var sp2dUnused = new SoilProfile2D(); - p.SoilProfiles2D.Add(sp2dUsed); - p.SoilProfiles2D.Add(sp2dUnused); + private MainForm mainForm; + private DSoilModelPlugin plugin; - var segment1 = new SoilSegment { StochasticSoilModel = new StochasticSoilModel { StochasticSoilProfiles = + [TestFixtureSetUp] + public void SetUp() + { + BindSupport.ClearCaches(); + + // to avoid Deltares.Standard.About class error + About.IgnoreAssemblyErrors = true; + + mainForm = new MainForm(); + mainForm.Register(new GeometryPlugin()); + mainForm.Register(new GeotechnicsPlugin()); + plugin = new DSoilModelPlugin(); + mainForm.Register(plugin); + mainForm.Visible = true; + mainForm.CreateControl(); + + while (!mainForm.IsMainFormLoaded) { - new StochasticSoilProfile { Profile = sp1dUsed }, - new StochasticSoilProfile { Profile = sp2dUsed } - } } }; + Thread.Sleep(1000); + Application.DoEvents(); + } + } - var segment2 = new SoilSegment { StochasticSoilModel = new StochasticSoilModel() }; - var segment3 = new SoilSegment(); - p.SoilSegments.Add(segment1); - p.SoilSegments.Add(segment2); - p.SoilSegments.Add(segment3); + [TestFixtureTearDown] + public void TearDown() + { + // Don't call form.Close() because it will raise SaveAs dialog + //System.Windows.Forms.Application.Exit(); + plugin.Dispose(); + mainForm.DynamicPropertyControl.Dispose(); + mainForm.Dispose(); + mainForm = null; + plugin = null; - Assert.IsTrue(CanDelete(plugin, "CanDeleteSoilProfile", sp1dUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteSoilProfile", sp1dUsed)); - - Assert.IsTrue(CanDelete(plugin, "CanDeleteSoilProfile", sp2dUnused)); - Assert.IsFalse(CanDelete(plugin, "CanDeleteSoilProfile", sp2dUsed)); + BindSupport.ClearCaches(); + About.IgnoreAssemblyErrors = false; } + + private DSoilModelProject NewProject(DSoilModelPlugin p) + { + p.Project = new DSoilModelProject(); + + // prevent the realtime validator from running + RealTimeBackgroundValidator.Instance.Stop(); + + // allow events to be processed + Application.DoEvents(); + + return p.Project; + } + + private bool CanDelete(DSoilModelPlugin p, string actualCanDeleteName, object obj) + { + return (bool) p.GetType().GetMethod(actualCanDeleteName, BindingFlags.NonPublic | BindingFlags.Instance).Invoke(p, new[] + { + obj + }); + } } -} +} \ No newline at end of file