Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -rd5aaf92be1f8aaa2c59c28d10f8397dc01324b7b -rce9b991f7116ccba947c49bbb379e7a0728a7bd3 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision d5aaf92be1f8aaa2c59c28d10f8397dc01324b7b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision ce9b991f7116ccba947c49bbb379e7a0728a7bd3) @@ -482,7 +482,7 @@ CreateInstance = section => new AssessmentSectionView(section) }; - yield return CreateFailureMechanismWithDetailedAssessmentViewInfo( + yield return CreateFailureMechanismWithDetailedAssessmentViewInfo( context => new FailureMechanismWithDetailedAssessmentView( context.WrappedData, context.Parent, @@ -491,6 +491,15 @@ () => MacroStabilityOutwardsAssemblyMapDataFeaturesFactory.CreateTailorMadeAssemblyFeatures(context.WrappedData, context.Parent), () => MacroStabilityOutwardsAssemblyMapDataFeaturesFactory.CreateCombinedAssemblyFeatures(context.WrappedData, context.Parent))); + yield return CreateFailureMechanismWithDetailedAssessmentViewInfo( + context => new FailureMechanismWithDetailedAssessmentView( + context.WrappedData, + context.Parent, + () => MicrostabilityAssemblyMapDataFeaturesFactory.CreateSimpleAssemblyFeatures(context.WrappedData), + () => MicrostabilityAssemblyMapDataFeaturesFactory.CreateDetailedAssemblyFeatures(context.WrappedData), + () => MicrostabilityAssemblyMapDataFeaturesFactory.CreateTailorMadeAssemblyFeatures(context.WrappedData), + () => MicrostabilityAssemblyMapDataFeaturesFactory.CreateCombinedAssemblyFeatures(context.WrappedData))); + yield return new ViewInfo, FailureMechanismView> { GetViewName = (view, context) => context.WrappedData.Name, @@ -1261,13 +1270,14 @@ #region FailureMechanismWithDetailedAssessmentView ViewInfo - private static ViewInfo, FailureMechanismWithDetailedAssessmentView> CreateFailureMechanismWithDetailedAssessmentViewInfo< - TFailureMechanism, TSectionResult>( - Func, FailureMechanismWithDetailedAssessmentView> createInstanceFunc) + private static ViewInfo> CreateFailureMechanismWithDetailedAssessmentViewInfo< + TFailureMechanismContext, TFailureMechanism, TSectionResult>( + Func> createInstanceFunc) where TSectionResult : FailureMechanismSectionResult where TFailureMechanism : FailureMechanismBase, IHasSectionResults + where TFailureMechanismContext : IFailureMechanismContext { - return new ViewInfo, + return new ViewInfo> { GetViewName = (view, context) => context.WrappedData.Name, Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Ringtoets.Integration.Plugin.Test.csproj =================================================================== diff -u -rd5aaf92be1f8aaa2c59c28d10f8397dc01324b7b -rce9b991f7116ccba947c49bbb379e7a0728a7bd3 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Ringtoets.Integration.Plugin.Test.csproj (.../Ringtoets.Integration.Plugin.Test.csproj) (revision d5aaf92be1f8aaa2c59c28d10f8397dc01324b7b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Ringtoets.Integration.Plugin.Test.csproj (.../Ringtoets.Integration.Plugin.Test.csproj) (revision ce9b991f7116ccba947c49bbb379e7a0728a7bd3) @@ -149,6 +149,7 @@ + Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsPluginTest.cs =================================================================== diff -u -rd5aaf92be1f8aaa2c59c28d10f8397dc01324b7b -rce9b991f7116ccba947c49bbb379e7a0728a7bd3 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsPluginTest.cs (.../RingtoetsPluginTest.cs) (revision d5aaf92be1f8aaa2c59c28d10f8397dc01324b7b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsPluginTest.cs (.../RingtoetsPluginTest.cs) (revision ce9b991f7116ccba947c49bbb379e7a0728a7bd3) @@ -394,7 +394,7 @@ ViewInfo[] viewInfos = plugin.GetViewInfos().ToArray(); // Assert - Assert.AreEqual(23, viewInfos.Length); + Assert.AreEqual(24, viewInfos.Length); PluginTestHelper.AssertViewInfoDefined( viewInfos, @@ -527,8 +527,13 @@ PluginTestHelper.AssertViewInfoDefined( viewInfos, - typeof(IFailureMechanismContext), + typeof(MacroStabilityOutwardsFailureMechanismContext), typeof(FailureMechanismWithDetailedAssessmentView)); + + PluginTestHelper.AssertViewInfoDefined( + viewInfos, + typeof(MicrostabilityFailureMechanismContext), + typeof(FailureMechanismWithDetailedAssessmentView)); } } Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MacroStabilityOutwardsFailureMechanismViewInfoTest.cs =================================================================== diff -u -rd5aaf92be1f8aaa2c59c28d10f8397dc01324b7b -rce9b991f7116ccba947c49bbb379e7a0728a7bd3 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MacroStabilityOutwardsFailureMechanismViewInfoTest.cs (.../MacroStabilityOutwardsFailureMechanismViewInfoTest.cs) (revision d5aaf92be1f8aaa2c59c28d10f8397dc01324b7b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MacroStabilityOutwardsFailureMechanismViewInfoTest.cs (.../MacroStabilityOutwardsFailureMechanismViewInfoTest.cs) (revision ce9b991f7116ccba947c49bbb379e7a0728a7bd3) @@ -65,8 +65,8 @@ public void Initialized_Always_ExpectedPropertiesSet() { // Assert - Assert.AreEqual(typeof(IFailureMechanismContext), info.DataType); - Assert.AreEqual(typeof(IFailureMechanismContext), info.ViewDataType); + Assert.AreEqual(typeof(MacroStabilityOutwardsFailureMechanismContext), info.DataType); + Assert.AreEqual(typeof(MacroStabilityOutwardsFailureMechanismContext), info.ViewDataType); } [Test] Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MicrostabilityFailureMechanismViewInfoTest.cs =================================================================== diff -u --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MicrostabilityFailureMechanismViewInfoTest.cs (revision 0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/MicrostabilityFailureMechanismViewInfoTest.cs (revision ce9b991f7116ccba947c49bbb379e7a0728a7bd3) @@ -0,0 +1,236 @@ +// Copyright (C) Stichting Deltares 2018. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets 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.Drawing; +using System.Linq; +using Core.Common.Controls.Views; +using Core.Common.Gui.Plugin; +using Core.Common.TestUtil; +using Core.Components.Gis.Features; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Forms.PresentationObjects; +using Ringtoets.Integration.Data.StandAlone; +using Ringtoets.Integration.Data.StandAlone.SectionResults; +using Ringtoets.Integration.Forms.PresentationObjects.StandAlone; +using Ringtoets.Integration.Forms.Views; +using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; + +namespace Ringtoets.Integration.Plugin.Test.ViewInfos +{ + [TestFixture] + public class MicrostabilityFailureMechanismViewInfoTest + { + private MockRepository mocks; + private RingtoetsPlugin plugin; + private ViewInfo info; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + plugin = new RingtoetsPlugin(); + info = plugin.GetViewInfos().First( + tni => tni.ViewType == typeof(FailureMechanismWithDetailedAssessmentView)); + } + + [TearDown] + public void TearDown() + { + plugin.Dispose(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Assert + Assert.AreEqual(typeof(MicrostabilityFailureMechanismContext), info.DataType); + Assert.AreEqual(typeof(MicrostabilityFailureMechanismContext), info.ViewDataType); + } + + [Test] + public void GetViewName_WithFailureMechanismContext_ReturnsNameOfFailureMechanism() + { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MicrostabilityFailureMechanism(); + var failureMechanismContext = new MicrostabilityFailureMechanismContext(failureMechanism, assessmentSection); + + // Call + string viewName = info.GetViewName(null, failureMechanismContext); + + // Assert + Assert.AreEqual(failureMechanism.Name, viewName); + } + + [Test] + public void Image_Always_ReturnsGenericInputOutputIcon() + { + // Call + Image image = info.Image; + + // Assert + TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.CalculationIcon, image); + } + + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var otherAssessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MicrostabilityFailureMechanism(); + + using (FailureMechanismWithDetailedAssessmentView view = + CreateView(failureMechanism, assessmentSection)) + { + // Call + bool closeForData = info.CloseForData(view, otherAssessmentSection); + + // Assert + Assert.IsFalse(closeForData); + } + + mocks.VerifyAll(); + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new MicrostabilityFailureMechanism(); + + using (FailureMechanismWithDetailedAssessmentView view = + CreateView(failureMechanism, assessmentSection)) + { + // Call + bool closeForData = info.CloseForData(view, assessmentSection); + + // Assert + Assert.IsTrue(closeForData); + } + } + + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new MicrostabilityFailureMechanism(); + var otherFailureMechanism = new MicrostabilityFailureMechanism(); + + using (FailureMechanismWithDetailedAssessmentView view = + CreateView(failureMechanism, assessmentSection)) + { + // Call + bool closeForData = info.CloseForData(view, otherFailureMechanism); + + // Assert + Assert.IsFalse(closeForData); + } + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new MicrostabilityFailureMechanism(); + + using (FailureMechanismWithDetailedAssessmentView view = + CreateView(failureMechanism, assessmentSection)) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant) + { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MicrostabilityFailureMechanism + { + IsRelevant = isRelevant + }; + + var context = new MicrostabilityFailureMechanismContext(failureMechanism, assessmentSection); + + // Call + bool result = info.AdditionalDataCheck(context); + + // Assert + Assert.AreEqual(isRelevant, result); + mocks.VerifyAll(); + } + + [Test] + public void CreateInstance_WithData_ReturnFailureMechanismView() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new MicrostabilityFailureMechanism(); + + var context = new MicrostabilityFailureMechanismContext(failureMechanism, assessmentSection); + + // Call + IView view = info.CreateInstance(context); + + // Assert + Assert.IsInstanceOf>(view); + + var failureMechanismView = (FailureMechanismWithDetailedAssessmentView) view; + Assert.AreSame(failureMechanism, failureMechanismView.FailureMechanism); + Assert.AreSame(assessmentSection, failureMechanismView.AssessmentSection); + } + + private static FailureMechanismWithDetailedAssessmentView CreateView( + MicrostabilityFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + { + return new FailureMechanismWithDetailedAssessmentView( + failureMechanism, + assessmentSection, + Enumerable.Empty, + Enumerable.Empty, + Enumerable.Empty, + Enumerable.Empty); + } + } +} \ No newline at end of file