using System.Drawing; using Deltares.DSoilModel.Data; using Deltares.Geotechnics; using Deltares.Standard.Forms; using NUnit.Framework; namespace Deltares.DSoilModel.Forms.Tests { [TestFixture, RequiresSTA] class SosSoilLayer1DControlTests : ControlTester { protected override IPropertyControl CreatePropertyControl() { return new SosSoilLayer1DControl(); } /// /// Class to mock complex property with very specific logic, so it becomes much more testable. /// private class MockedSosSoilLayer1D : SosSoilLayer1D { public override double BottomLevel { get; set; } } [Test] public void ControlBindingsTest() { var p = new DSoilModelProject(); var soil1 = new Soil("TestSoil1", Color.Beige); var soil2 = new Soil("TestSoil2", Color.Red); p.Soils.Add(soil2); p.Soils.Add(soil1); var layer = new MockedSosSoilLayer1D { TopLevel = 9.9, BottomLevel = 1.1, MaximumTopLevel = 9, MinimumTopLevel = -1, RemarkTopLevel = "remark testSos1", IsAquifer = true, Soil = soil1 }; SoilLayer.DomainProvider = p; PropertyControl.SelectedObject = layer; TestLabelControlVisibleValue(PropertyControl, "SoilLabel", true, "Materiaal"); TestComboBoxVisibleEnabledValue(PropertyControl, "SoilEdit", true, true, layer, l => l.Soil, soil2); TestLabelControlVisibleValue(PropertyControl, "TopLabel", true, "Bovenkant [m NAP]"); TestSpinEditVisibleEnabledValue(PropertyControl, "TopEdit", true, true, layer, l => l.TopLevel, 9.1); TestLabelControlVisibleValue(PropertyControl, "BottomLabel", true, "Onderkant [m NAP]"); TestSpinEditVisibleEnabledValue(PropertyControl, "BottomEdit", true, true, layer, l => l.BottomLevel, 2.2); TestLabelControlVisibleValue(PropertyControl, "HeightLabel", true, "Hoogte [m]"); TestSpinEditVisibleEnabledValue(PropertyControl, "HeightEdit", true, false, layer, l => l.Height); // only getter TestLabelControlVisibleValue(PropertyControl, "MaxDepthTopLevelLabel", true, "Maximale waarde bovenkant [m NAP]"); TestSpinEditVisibleEnabledValue(PropertyControl, "MaxDepthTopLevelEdit", true, false, layer, l => l.MaximumTopLevel); TestLabelControlVisibleValue(PropertyControl, "MinDepthTopLevelLabel", true, "Minimale waarde bovenkant [m NAP]"); TestSpinEditVisibleEnabledValue(PropertyControl, "MinDepthTopLevelEdit", true, false, layer, l => l.MinimumTopLevel); TestLabelControlVisibleValue(PropertyControl, "RemarkTopLevelLabel", true, "Opmerking"); TestTextEditVisibleEnabledValue(PropertyControl, "RemarkTopLevelEdit", true, false, layer, l => l.RemarkTopLevel, "Other remark"); TestCheckEditVisibleEnabledValue(PropertyControl, "AquiferCheckEdit", true, true, layer, l => l.IsAquifer, "Is aquifer", false); } [Test] public void TestSelectedObject_SosSoilLayer1D() { var layer = new SosSoilLayer1D(); SoilLayer.DomainProvider = new DSoilModelProject(); Assert.AreNotSame(layer, PropertyControl.SelectedObject); PropertyControl.SelectedObject = layer; Assert.AreSame(layer, PropertyControl.SelectedObject); } [Test] public void TestSelectedObject_SoilLayerSurface() { SoilLayer.DomainProvider = new DSoilModelProject(); var layerSurface = new SoilLayerSurface(); layerSurface.SoilLayer = new SosSoilLayer1D(); Assert.AreNotSame(layerSurface.SoilLayer, PropertyControl.SelectedObject); PropertyControl.SelectedObject = layerSurface; Assert.AreSame(layerSurface.SoilLayer, PropertyControl.SelectedObject); } [Test] public void TestIsVisible_AlwaysTrue() { Assert.IsTrue(PropertyControl.IsVisible); } } }