Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -re6e92cb42b1e4983add2406300958b6b116ba781 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision e6e92cb42b1e4983add2406300958b6b116ba781) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.18444 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -117,15 +117,6 @@ } /// - /// Looks up a localized string similar to Berekeningen. - /// - public static string FailureMechanism_Calculations_DisplayName { - get { - return ResourceManager.GetString("FailureMechanism_Calculations_DisplayName", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Invoer. /// public static string FailureMechanism_Inputs_DisplayName { Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx =================================================================== diff -u -re6e92cb42b1e4983add2406300958b6b116ba781 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision e6e92cb42b1e4983add2406300958b6b116ba781) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -136,9 +136,6 @@ ..\Resources\folder_output.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - Berekeningen - Invoer Index: Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs =================================================================== diff -u -r55ad1d69b06d380c225f26750cf93631f5851ada -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision 55ad1d69b06d380c225f26750cf93631f5851ada) +++ Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -61,7 +61,7 @@ surfaceLinesImporter.Import(pipingFailureMechanism.SoilProfiles, tempPath.FilePath); } - var calculation = pipingFailureMechanism.Calculations.GetPipingCalculations().First(); + var calculation = pipingFailureMechanism.CalculationsGroup.GetPipingCalculations().First(); calculation.InputParameters.SurfaceLine = pipingFailureMechanism.SurfaceLines.First(sl => sl.Name == "PK001_0001"); calculation.InputParameters.SoilProfile = pipingFailureMechanism.SoilProfiles.First(sl => sl.Name == "AD640M00_Segment_36005_1D2"); } Index: Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -70,8 +70,8 @@ var surfaceLines = demoAssessmentSection.PipingFailureMechanism.SurfaceLines.ToArray(); Assert.AreEqual(4, surfaceLines.Length); - Assert.AreEqual(1, demoAssessmentSection.PipingFailureMechanism.Calculations.Count); - var calculation = demoAssessmentSection.PipingFailureMechanism.Calculations.GetPipingCalculations().First(); + Assert.AreEqual(1, demoAssessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Count); + var calculation = demoAssessmentSection.PipingFailureMechanism.CalculationsGroup.GetPipingCalculations().First(); AssertCalculationAbleToCalculate(calculation); mocks.VerifyAll(); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs =================================================================== diff -u -red0b4ea830beb801bcc0e3eb5b28993001ed2981 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs (.../IPipingCalculationItem.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs (.../IPipingCalculationItem.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -8,9 +8,9 @@ public interface IPipingCalculationItem : IObservable { /// - /// Gets or sets the name the user gave this this calculation object. + /// Gets the name of this calculation object. /// - string Name { get; set; } + string Name { get; } /// /// Gets a value indicating whether this calculation item contains piping calculation outputs. Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -42,6 +42,9 @@ /// public PlaceholderWithReadonlyName CalculationReport { get; private set; } + /// + /// Gets or sets the name of this calculation. + /// public string Name { get; set; } /// Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs (.../PipingCalculationGroup.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs (.../PipingCalculationGroup.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Core.Common.Base; @@ -12,12 +13,26 @@ /// public class PipingCalculationGroup : Observable, IPipingCalculationItem { + private string name; + /// + /// Initializes a new instance of the class + /// with an editable name. + /// + public PipingCalculationGroup() : this(Resources.PipingCalculationGroup_DefaultName, true) + { + + } + + /// /// Initializes a new instance of the class. /// - public PipingCalculationGroup() + /// The name of the group. + /// Determines if the name of the group is editable (true) or not. + public PipingCalculationGroup(string newName, bool canEditName) { - Name = Resources.PipingCalculationGroup_DefaultName; + name = newName; + NameIsEditable = canEditName; Children = new List(); } @@ -26,7 +41,24 @@ /// public ICollection Children { get; private set; } - public string Name { get; set; } + /// + /// Gets or sets the name of this calculation grouping object. + /// + public string Name + { + get + { + return name; + } + set + { + if (!NameIsEditable) + { + throw new InvalidOperationException(Resources.PipingCalculationGroup_Setting_readonly_name_error_message); + } + name = value; + } + } public bool HasOutput { @@ -35,5 +67,10 @@ return Children.Any(c => c.HasOutput); } } + + /// + /// Gets a value indicating whether is editable or not. + /// + public bool NameIsEditable { get; private set; } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs =================================================================== diff -u -r6b639dc3027f47a35279aa8b4925ca5ed1c71b5f -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision 6b639dc3027f47a35279aa8b4925ca5ed1c71b5f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -4,6 +4,7 @@ using Ringtoets.Common.Data; using Ringtoets.Common.Placeholder; +using Ringtoets.Piping.Data.Properties; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; @@ -23,7 +24,9 @@ SurfaceLines = new ObservableList(); SoilProfiles = new ObservableList(); BoundaryConditions = new InputPlaceholder(RingtoetsCommonDataResources.FailureMechanism_BoundaryConditions_DisplayName); - Calculations = new List { new PipingCalculation() }; + var pipingCalculationGroup = new PipingCalculationGroup(Resources.PipingFailureMechanism_Calculations_DisplayName, false); + pipingCalculationGroup.Children.Add(new PipingCalculation()); + CalculationsGroup = pipingCalculationGroup; AssessmentResult = new OutputPlaceholder(RingtoetsCommonDataResources.FailureMechanism_AssessmentResult_DisplayName); } @@ -50,7 +53,7 @@ /// /// Gets all available piping calculations. /// - public ICollection Calculations { get; private set; } + public PipingCalculationGroup CalculationsGroup { get; private set; } /// /// Gets the calculation results for this failure mechanism. Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -151,6 +151,24 @@ } /// + /// Looks up a localized string similar to Kan niet de naam aanpassen van deze group omdat 'NameIsEditable' op 'false' staat.. + /// + internal static string PipingCalculationGroup_Setting_readonly_name_error_message { + get { + return ResourceManager.GetString("PipingCalculationGroup_Setting_readonly_name_error_message", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Berekeningen. + /// + internal static string PipingFailureMechanism_Calculations_DisplayName { + get { + return ResourceManager.GetString("PipingFailureMechanism_Calculations_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Een punt in de geometrie voor de profielmeting heeft geen waarde.. /// internal static string RingtoetsPipingSurfaceLine_A_point_in_the_collection_was_null { Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -162,4 +162,10 @@ Nieuwe map + + Kan niet de naam aanpassen van deze group omdat 'NameIsEditable' op 'false' staat. + + + Berekeningen + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Drawing; -using System.Linq; using System.Windows.Forms; using Core.Common.Base.Service; using Core.Common.Controls; @@ -69,21 +68,24 @@ protected override bool CanRemove(object parentNodeData, PipingCalculationContext nodeData) { - var calculationsFolder = parentNodeData as PipingCalculationsTreeFolder; - if (calculationsFolder != null) + var calculationGroupContext = parentNodeData as PipingCalculationGroupContext; + if (calculationGroupContext != null) { - return calculationsFolder.Contents.OfType().Contains(nodeData); + return calculationGroupContext.WrappedData.Children.Contains(nodeData.WrappedData); } return base.CanRemove(parentNodeData, nodeData); } protected override bool RemoveNodeData(object parentNodeData, PipingCalculationContext nodeData) { - var calculationsFolder = parentNodeData as PipingCalculationsTreeFolder; - if (calculationsFolder != null) + var calculationGroupContext = parentNodeData as PipingCalculationGroupContext; + if (calculationGroupContext != null) { - var succesfullyRemovedData = calculationsFolder.ParentFailureMechanism.Calculations.Remove(nodeData.WrappedData); - calculationsFolder.ParentFailureMechanism.NotifyObservers(); + var succesfullyRemovedData = calculationGroupContext.WrappedData.Children.Remove(nodeData.WrappedData); + if (succesfullyRemovedData) + { + calculationGroupContext.NotifyObservers(); + } return succesfullyRemovedData; } return base.RemoveNodeData(parentNodeData, nodeData); Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -32,7 +32,7 @@ public override bool CanRenameNode(ITreeNode node) { - return true; + return node.Parent == null || !(node.Parent.Tag is PipingFailureMechanism); } public override bool CanRenameNodeTo(ITreeNode node, string newName) @@ -55,12 +55,6 @@ protected override bool CanRemove(object parentNodeData, PipingCalculationGroupContext nodeData) { - var failureMechanism = parentNodeData as PipingFailureMechanism; - if (failureMechanism != null) - { - return failureMechanism.Calculations.Contains(nodeData.WrappedData); - } - var group = parentNodeData as PipingCalculationGroupContext; if (group != null) { @@ -72,14 +66,6 @@ protected override bool RemoveNodeData(object parentNodeData, PipingCalculationGroupContext nodeData) { - var failureMechanism = parentNodeData as PipingFailureMechanism; - if (failureMechanism != null) - { - var removeNodeData = failureMechanism.Calculations.Remove(nodeData.WrappedData); - failureMechanism.NotifyObservers(); - return removeNodeData; - } - var group = parentNodeData as PipingCalculationGroupContext; if (group != null) { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -43,7 +43,7 @@ protected override IEnumerable GetChildNodeObjects(PipingFailureMechanism failureMechanism) { yield return new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Inputs_DisplayName, GetInputs(failureMechanism), TreeFolderCategory.Input); - yield return new PipingCalculationsTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Calculations_DisplayName, failureMechanism); + yield return new PipingCalculationGroupContext(failureMechanism.CalculationsGroup, failureMechanism.SurfaceLines, failureMechanism.SoilProfiles); yield return new CategoryTreeFolder(RingtoetsCommonFormsResources.FailureMechanism_Outputs_DisplayName, GetOutputs(failureMechanism), TreeFolderCategory.Output); } @@ -116,19 +116,19 @@ { var calculation = new PipingCalculationGroup { - Name = NamingHelper.GetUniqueName(failureMechanism.Calculations, PipingDataResources.PipingCalculationGroup_DefaultName, c => c.Name) + Name = NamingHelper.GetUniqueName(failureMechanism.CalculationsGroup.Children, PipingDataResources.PipingCalculationGroup_DefaultName, c => c.Name) }; - failureMechanism.Calculations.Add(calculation); + failureMechanism.CalculationsGroup.Children.Add(calculation); failureMechanism.NotifyObservers(); } private static void AddCalculation(PipingFailureMechanism failureMechanism) { var calculation = new PipingCalculation { - Name = NamingHelper.GetUniqueName(failureMechanism.Calculations, PipingDataResources.PipingCalculation_DefaultName, c => c.Name) + Name = NamingHelper.GetUniqueName(failureMechanism.CalculationsGroup.Children, PipingDataResources.PipingCalculation_DefaultName, c => c.Name) }; - failureMechanism.Calculations.Add(calculation); + failureMechanism.CalculationsGroup.Children.Add(calculation); failureMechanism.NotifyObservers(); } @@ -147,7 +147,7 @@ private static IEnumerable GetAllPipingCalculationsResursively(PipingFailureMechanism failureMechanism) { - return failureMechanism.Calculations.GetPipingCalculations().ToArray(); + return failureMechanism.CalculationsGroup.GetPipingCalculations().ToArray(); } } } \ No newline at end of file Fisheye: Tag 6bcbd610ececdc293a8883b50448f369e1fa4a25 refers to a dead (removed) revision in file `Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingCalculationsTreeFolder.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingCalculationGroupContextProperties.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingCalculationGroupContextProperties.cs (.../PipingCalculationGroupContextProperties.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingCalculationGroupContextProperties.cs (.../PipingCalculationGroupContextProperties.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,5 +1,6 @@ using Core.Common.Gui; using Core.Common.Utils; +using Core.Common.Utils.ComponentModel; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; @@ -13,6 +14,7 @@ [ResourcesDisplayName(typeof(Resources), "PipingCalculationGroupContextProperties_DisplayName")] public class PipingCalculationGroupContextProperties : ObjectProperties { + [DynamicReadOnly] [ResourcesCategory(typeof(Resources), "Categories_General")] [ResourcesDisplayName(typeof(Resources), "PipingCalculationGroup_Name_DisplayName")] [ResourcesDescription(typeof(Resources), "PipingCalculationGroup_Name_Description")] @@ -28,5 +30,10 @@ data.NotifyObservers(); } } + [DynamicReadOnlyValidationMethod] + public bool DynamicReadonlyValidator(string propertyName) + { + return !data.WrappedData.NameIsEditable; + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj =================================================================== diff -u -r95837098c8fbc25212797c64431f6f16496814b3 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision 95837098c8fbc25212797c64431f6f16496814b3) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -64,7 +64,6 @@ - Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -33,16 +33,19 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { + yield return new PipingFailureMechanismNodePresenter(Gui.ContextMenuProvider) + { + RunActivitiesAction = ActivityProgressDialogRunner.Run + }; yield return new PipingCalculationContextNodePresenter(Gui.ContextMenuProvider) { RunActivityAction = ActivityProgressDialogRunner.Run }; - yield return new PipingCalculationGroupContextNodePresenter(Gui.ContextMenuProvider); - yield return new PipingInputContextNodePresenter(Gui.ContextMenuProvider); - yield return new PipingFailureMechanismNodePresenter(Gui.ContextMenuProvider) + yield return new PipingCalculationGroupContextNodePresenter(Gui.ContextMenuProvider) { - RunActivitiesAction = ActivityProgressDialogRunner.Run + RunActivityAction = ActivityProgressDialogRunner.Run }; + yield return new PipingInputContextNodePresenter(Gui.ContextMenuProvider); yield return new PipingSurfaceLineCollectionNodePresenter(Gui.ContextMenuProvider); yield return new PipingSurfaceLineNodePresenter(Gui.ContextMenuProvider); yield return new PipingSoilProfileCollectionNodePresenter(Gui.ContextMenuProvider); Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs (.../PipingCalculationGroupTest.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs (.../PipingCalculationGroupTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,5 +1,7 @@ -using Core.Common.Base; +using System; +using Core.Common.Base; + using NUnit.Framework; using Rhino.Mocks; @@ -18,12 +20,68 @@ // Assert Assert.IsInstanceOf(group); Assert.IsInstanceOf(group); + Assert.IsTrue(group.NameIsEditable); Assert.AreEqual("Nieuwe map", group.Name); Assert.IsFalse(group.HasOutput); CollectionAssert.IsEmpty(group.Children); } [Test] + [TestCase(true)] + [TestCase(false)] + public void ParameterdConstructor_ExpectedValues(bool isNameEditable) + { + // Setup + const string newName = "new Name"; + + // Call + var group = new PipingCalculationGroup(newName, isNameEditable); + + // Assert + Assert.IsInstanceOf(group); + Assert.IsInstanceOf(group); + Assert.AreEqual(isNameEditable, group.NameIsEditable); + Assert.AreEqual(newName, group.Name); + Assert.IsFalse(group.HasOutput); + CollectionAssert.IsEmpty(group.Children); + } + + [Test] + public void Name_SettingValueWhileNameEditable_ChangeName() + { + // Setup + var group = new PipingCalculationGroup("a", true); + + // Precondtion + Assert.IsTrue(group.NameIsEditable); + + // Call + const string newName = "new Name"; + group.Name = newName; + + // Assert + Assert.AreEqual(newName, group.Name); + } + + [Test] + public void Name_SettingValueWhileNameNotEditable_ThrowInvalidOperationException() + { + // Setup + var group = new PipingCalculationGroup("a", false); + + // Precondtion + Assert.IsFalse(group.NameIsEditable); + + // Call + const string newName = "new Name"; + TestDelegate call = () => group.Name = newName; + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("Kan niet de naam aanpassen van deze group omdat 'NameIsEditable' op 'false' staat.", exception.Message); + } + + [Test] public void Children_AddPipingCalculation_CalculationAddedToCollection() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs =================================================================== diff -u -red0b4ea830beb801bcc0e3eb5b28993001ed2981 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Linq; using Core.Common.Base; using NUnit.Framework; @@ -31,7 +31,9 @@ CollectionAssert.IsEmpty(piping.SurfaceLines); Assert.IsInstanceOf>(piping.SurfaceLines); CollectionAssert.IsEmpty(piping.SoilProfiles); - Assert.AreEqual(1, piping.Calculations.Count); + Assert.AreEqual("Berekeningen", piping.CalculationsGroup.Name); + Assert.AreEqual(1, piping.CalculationsGroup.Children.Count); + Assert.IsInstanceOf(piping.CalculationsGroup.Children.First()); Assert.AreEqual("Randvoorwaarden", piping.BoundaryConditions.Name); Assert.AreEqual("Oordeel", piping.AssessmentResult.Name); @@ -139,10 +141,10 @@ var failureMechanism = new PipingFailureMechanism(); // Call - failureMechanism.Calculations.Add(calculation); + failureMechanism.CalculationsGroup.Children.Add(calculation); // Assert - CollectionAssert.Contains(failureMechanism.Calculations, calculation); + CollectionAssert.Contains(failureMechanism.CalculationsGroup.Children, calculation); } [Test] @@ -152,13 +154,13 @@ var calculation = new PipingCalculation(); var failureMechanism = new PipingFailureMechanism(); - failureMechanism.Calculations.Add(calculation); + failureMechanism.CalculationsGroup.Children.Add(calculation); // Call - failureMechanism.Calculations.Remove(calculation); + failureMechanism.CalculationsGroup.Children.Remove(calculation); // Assert - CollectionAssert.DoesNotContain(failureMechanism.Calculations, calculation); + CollectionAssert.DoesNotContain(failureMechanism.CalculationsGroup.Children, calculation); } [Test] @@ -170,10 +172,10 @@ var failureMechanism = new PipingFailureMechanism(); // Call - failureMechanism.Calculations.Add(folder); + failureMechanism.CalculationsGroup.Children.Add(folder); // Assert - CollectionAssert.Contains(failureMechanism.Calculations, folder); + CollectionAssert.Contains(failureMechanism.CalculationsGroup.Children, folder); } [Test] @@ -183,13 +185,13 @@ var folder = new PipingCalculationGroup(); var failureMechanism = new PipingFailureMechanism(); - failureMechanism.Calculations.Add(folder); + failureMechanism.CalculationsGroup.Children.Add(folder); // Call - failureMechanism.Calculations.Remove(folder); + failureMechanism.CalculationsGroup.Children.Remove(folder); // Assert - CollectionAssert.DoesNotContain(failureMechanism.Calculations, folder); + CollectionAssert.DoesNotContain(failureMechanism.CalculationsGroup.Children, folder); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -129,22 +129,18 @@ CollectionAssert.AreEqual(pipingCalculationContext.AvailablePipingSoilProfiles, pipingInputContext.AvailablePipingSoilProfiles); Assert.AreSame(pipingCalculationContext.WrappedData.Output, children[2]); Assert.AreSame(pipingCalculationContext.WrappedData.CalculationReport, children[3]); - mockRepository.VerifyAll(); // Expect no calls on tree node } [Test] public void GetChildNodeObjects_WithoutOutput_ReturnNoChildNodes() { // Setup - mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); var pipingCalculationContext = new PipingCalculationContext(new PipingCalculation(), Enumerable.Empty(), Enumerable.Empty()); - // Precondition Assert.IsFalse(pipingCalculationContext.WrappedData.HasOutput); @@ -161,7 +157,6 @@ Assert.IsInstanceOf(children[2]); Assert.IsInstanceOf(children[3]); - mockRepository.VerifyAll(); // Expect no calls on tree node } [Test] @@ -484,36 +479,55 @@ } [Test] - public void CanRemove_ParentIsPipingCalculationsTreeFolder_ReturnTrue() + [TestCase(true)] + [TestCase(false)] + public void CanRemove_ParentIsPipingCalculationGroupWithCalculation_ReturnTrue(bool groupNameEditable) { // Setup - var pipingFailureMechanism = new PipingFailureMechanism(); - var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); + mockRepository.ReplayAll(); + var calculationToBeRemoved = new PipingCalculation(); + var group = new PipingCalculationGroup("", groupNameEditable); + group.Children.Add(calculationToBeRemoved); + + var calculationContext = new PipingCalculationContext(calculationToBeRemoved, + Enumerable.Empty(), + Enumerable.Empty()); + var groupContext = new PipingCalculationGroupContext(group, + Enumerable.Empty(), + Enumerable.Empty()); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call - bool removalAllowed = nodePresenter.CanRemove(pipingCalculationsFolder, pipingCalculationsFolder.Contents.OfType().First()); + bool removalAllowed = nodePresenter.CanRemove(groupContext, calculationContext); // Assert Assert.IsTrue(removalAllowed); } [Test] - public void CanRemove_ParentIsPipingCalculationsTreeFolderForCalculationNotInFolder_ReturnFalse() + [TestCase(true)] + [TestCase(false)] + public void CanRemove_ParentIsPipingCalculationGroupWithoutCalculation_ReturnFalse(bool groupNameEditable) { // Setup - var pipingFailureMechanism = new PipingFailureMechanism(); - var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); + mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); + var calculationToBeRemoved = new PipingCalculation(); + var group = new PipingCalculationGroup("", groupNameEditable); - var calculationContext = new PipingCalculationContext(new PipingCalculation(), + var calculationContext = new PipingCalculationContext(calculationToBeRemoved, Enumerable.Empty(), Enumerable.Empty()); + var groupContext = new PipingCalculationGroupContext(group, + Enumerable.Empty(), + Enumerable.Empty()); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); + // Call - bool removalAllowed = nodePresenter.CanRemove(pipingCalculationsFolder, calculationContext); + bool removalAllowed = nodePresenter.CanRemove(groupContext, calculationContext); // Assert Assert.IsFalse(removalAllowed); @@ -541,7 +555,9 @@ } [Test] - public void RemoveNodeData_ParentIsPipingCalculationsTreeFolder_RemoveCalculationFromFailureMechanism() + [TestCase(true)] + [TestCase(false)] + public void RemoveNodeData_ParentIsPipingCalculationGroupContext_RemoveCalculationFromGroup(bool groupNameEditable) { // Setup var mocks = new MockRepository(); @@ -551,33 +567,37 @@ var elementToBeRemoved = new PipingCalculation(); - var pipingFailureMechanism = new PipingFailureMechanism(); - pipingFailureMechanism.Calculations.Add(elementToBeRemoved); - pipingFailureMechanism.Calculations.Add(new PipingCalculation()); - pipingFailureMechanism.Attach(observer); + var group = new PipingCalculationGroup(); + group.Children.Add(elementToBeRemoved); + group.Children.Add(new PipingCalculation()); + group.Attach(observer); - var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); + var calculationContext = new PipingCalculationContext(elementToBeRemoved, + Enumerable.Empty(), + Enumerable.Empty()); + var groupContext = new PipingCalculationGroupContext(group, + Enumerable.Empty(), + Enumerable.Empty()); var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Precondition - var treeElementToRemove = pipingCalculationsFolder.Contents.OfType().ElementAt(1); - Assert.IsTrue(nodePresenter.CanRemove(pipingCalculationsFolder, treeElementToRemove)); - Assert.AreEqual(3, pipingFailureMechanism.Calculations.Count); + Assert.IsTrue(nodePresenter.CanRemove(groupContext, calculationContext)); + Assert.AreEqual(2, group.Children.Count); // Call - bool removalSuccesful = nodePresenter.RemoveNodeData(pipingCalculationsFolder, treeElementToRemove); + bool removalSuccesful = nodePresenter.RemoveNodeData(groupContext, calculationContext); // Assert Assert.IsTrue(removalSuccesful); - Assert.AreEqual(2, pipingFailureMechanism.Calculations.Count); - CollectionAssert.DoesNotContain(pipingFailureMechanism.Calculations, elementToBeRemoved); + Assert.AreEqual(1, group.Children.Count); + CollectionAssert.DoesNotContain(group.Children, elementToBeRemoved); mocks.VerifyAll(); } [Test] - public void RemoveNodeData_Always_ThrowsInvalidOperationException() + public void RemoveNodeData_EverythingElse_ThrowsInvalidOperationException() { // Setup var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -101,11 +101,17 @@ } [Test] - public void CanRenameNode_Always_ReturnTrue() + public void CanRenameNode_ParentIsPipingFailureMechanismNode_ReturnFalse() { // Setup + var failureMechanism = new PipingFailureMechanism(); + var mocks = new MockRepository(); + var parentNode = mocks.Stub(); + parentNode.Tag = failureMechanism; + var node = mocks.StrictMock(); + node.Expect(n => n.Parent).Return(parentNode).Repeat.Twice(); mocks.ReplayAll(); var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); @@ -114,11 +120,32 @@ bool isRenamingAllowed = nodePresenter.CanRenameNode(node); // Assert - Assert.IsTrue(isRenamingAllowed); + Assert.IsFalse(isRenamingAllowed); mocks.VerifyAll(); } [Test] + public void CanRenameNode_EverythingElse_ReturnTrue() + { + // Setup + var parentNode = mockRepository.Stub(); + parentNode.Tag = new object(); + + var node = mockRepository.StrictMock(); + node.Expect(n => n.Parent).Return(parentNode).Repeat.Twice(); + mockRepository.ReplayAll(); + + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); + + // Call + bool isRenamingAllowed = nodePresenter.CanRenameNode(node); + + // Assert + Assert.IsTrue(isRenamingAllowed); + mockRepository.VerifyAll(); + } + + [Test] public void CanRenamedNodeTo_Always_ReturnTrue() { // Setup @@ -163,7 +190,7 @@ } [Test] - public void CanRemove_ParentIsFailureMechanismContainingGroup_ReturnTrue() + public void CanRemove_ParentIsFailureMechanism_ReturnFalse() { // Setup var group = new PipingCalculationGroup(); @@ -172,36 +199,14 @@ Enumerable.Empty()); var parentNodeData = new PipingFailureMechanism(); - parentNodeData.Calculations.Add(group); + parentNodeData.CalculationsGroup.Children.Add(group); var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call bool isRemovalAllowed = nodePresenter.CanRemove(parentNodeData, nodeData); // Assert - Assert.IsTrue(isRemovalAllowed); - } - - [Test] - public void CanRemove_ParentIsFailureMechanismNotContainingGroup_ReturnFalse() - { - // Setup - var nodeData = new PipingCalculationGroupContext(new PipingCalculationGroup(), - Enumerable.Empty(), - Enumerable.Empty()); - - var parentNodeData = new PipingFailureMechanism(); - - var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); - - // Precondition - CollectionAssert.DoesNotContain(parentNodeData.Calculations, nodeData); - - // Call - bool isRemovalAllowed = nodePresenter.CanRemove(parentNodeData, nodeData); - - // Assert Assert.IsFalse(isRemovalAllowed); } @@ -257,38 +262,6 @@ } [Test] - public void CanRemove_ParentIsFailureMechanismContainingGroup_RemoveGroupAndNotifyObservers() - { - // Setup - var mocks = new MockRepository(); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - mocks.ReplayAll(); - - var group = new PipingCalculationGroup(); - var nodeData = new PipingCalculationGroupContext(group, - Enumerable.Empty(), - Enumerable.Empty()); - - var parentNodeData = new PipingFailureMechanism(); - parentNodeData.Calculations.Add(group); - parentNodeData.Attach(observer); - - var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); - - // Precondition - Assert.IsTrue(nodePresenter.CanRemove(parentNodeData, nodeData)); - - // Call - bool removealSuccesful = nodePresenter.RemoveNodeData(parentNodeData, nodeData); - - // Assert - Assert.IsTrue(removealSuccesful); - CollectionAssert.DoesNotContain(parentNodeData.Calculations, nodeData); - mocks.VerifyAll(); - } - - [Test] public void CanRemove_ParentIsPipingCalculationGroupContainingGroup_RemoveGroupAndNotifyObservers() { // Setup @@ -388,7 +361,7 @@ // Setup var mocks = new MockRepository(); var calculationItem = mocks.Stub(); - calculationItem.Name = "Nieuwe map"; + calculationItem.Expect(ci => ci.Name).Return("Nieuwe map"); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); @@ -427,7 +400,7 @@ // Setup var mocks = new MockRepository(); var calculationItem = mocks.Stub(); - calculationItem.Name = "Nieuwe berekening"; + calculationItem.Expect(ci => ci.Name).Return("Nieuwe berekening"); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs =================================================================== diff -u -rd02fa527769665fe275986468c6ac570fbad5e48 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -98,8 +98,8 @@ var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); var pipingFailureMechanism = new PipingFailureMechanism(); - pipingFailureMechanism.Calculations.Add(new PipingCalculation()); - pipingFailureMechanism.Calculations.Add(new PipingCalculation()); + pipingFailureMechanism.CalculationsGroup.Children.Add(new PipingCalculation()); + pipingFailureMechanism.CalculationsGroup.Children.Add(new PipingCalculation()); // Call var children = nodePresenter.GetChildNodeObjects(pipingFailureMechanism).OfType().ToArray(); @@ -117,18 +117,11 @@ pipingFailureMechanism.BoundaryConditions }, inputsFolder.Contents); - var calculationsFolder = (CategoryTreeFolder)children[1]; - Assert.AreEqual("Berekeningen", calculationsFolder.Name); - Assert.AreEqual(TreeFolderCategory.General, calculationsFolder.Category); - var pipingCalculationChildObjects = calculationsFolder.Contents.Cast() - .Take(pipingFailureMechanism.Calculations.Count) - .ToArray(); - CollectionAssert.AreEqual(pipingFailureMechanism.Calculations, pipingCalculationChildObjects.Select(pci => pci.WrappedData).ToArray()); - foreach (var pipingCalculationContext in pipingCalculationChildObjects) - { - Assert.AreSame(pipingFailureMechanism.SurfaceLines, pipingCalculationContext.AvailablePipingSurfaceLines); - Assert.AreSame(pipingFailureMechanism.SoilProfiles, pipingCalculationContext.AvailablePipingSoilProfiles); - } + var calculationsFolder = (PipingCalculationGroupContext)children[1]; + Assert.AreEqual("Berekeningen", calculationsFolder.WrappedData.Name); + CollectionAssert.AreEqual(pipingFailureMechanism.CalculationsGroup.Children, calculationsFolder.WrappedData.Children); + Assert.AreSame(pipingFailureMechanism.SurfaceLines, calculationsFolder.AvailablePipingSurfaceLines); + Assert.AreSame(pipingFailureMechanism.SoilProfiles, calculationsFolder.AvailablePipingSoilProfiles); var outputsFolder = (CategoryTreeFolder)children[2]; Assert.AreEqual("Uitvoer", outputsFolder.Name); @@ -389,16 +382,16 @@ contextMenuProvider.Expect(cmp => cmp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(null, nodeMock)); var dataMock = mocks.StrictMock(); - dataMock.Calculations.Add(new PipingCalculation + dataMock.CalculationsGroup.Children.Add(new PipingCalculation { Output = new TestPipingOutput() }); - dataMock.Calculations.Add(new PipingCalculation + dataMock.CalculationsGroup.Children.Add(new PipingCalculation { Output = new TestPipingOutput() }); - dataMock.Calculations.ElementAt(0).Attach(observer); - dataMock.Calculations.ElementAt(1).Attach(observer); + dataMock.CalculationsGroup.Children.ElementAt(0).Attach(observer); + dataMock.CalculationsGroup.Children.ElementAt(1).Attach(observer); var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuProvider); @@ -410,7 +403,7 @@ contextMenuAdapter.Items[contextMenuClearIndex].PerformClick(); // Then - CollectionAssert.IsEmpty(dataMock.Calculations.Where(c => c.HasOutput)); + Assert.IsFalse(dataMock.CalculationsGroup.HasOutput); mocks.VerifyAll(); } @@ -483,7 +476,7 @@ var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock(); - dataMock.Calculations.Add(new PipingCalculation + dataMock.CalculationsGroup.Children.Add(new PipingCalculation { Output = new TestPipingOutput() }); @@ -522,16 +515,16 @@ mocks.ReplayAll(); // Precondition - Assert.AreEqual(1, failureMechanism.Calculations.Count); + Assert.AreEqual(1, failureMechanism.CalculationsGroup.Children.Count); // Call ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, failureMechanism); ToolStripItem addCalculationItem = contextMenu.Items[contextMenuAddCalculationIndex]; addCalculationItem.PerformClick(); // Assert - Assert.AreEqual(2, failureMechanism.Calculations.Count); - IPipingCalculationItem addedItem = failureMechanism.Calculations.ElementAt(1); + Assert.AreEqual(2, failureMechanism.CalculationsGroup.Children.Count); + IPipingCalculationItem addedItem = failureMechanism.CalculationsGroup.Children.ElementAt(1); Assert.AreEqual("Nieuwe berekening (1)", addedItem.Name); Assert.IsInstanceOf(addedItem); mocks.VerifyAll(); @@ -549,24 +542,24 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.Attach(observerMock); - failureMechanism.Calculations.Clear(); - failureMechanism.Calculations.Add(new PipingCalculationGroup()); + failureMechanism.CalculationsGroup.Children.Clear(); + failureMechanism.CalculationsGroup.Children.Add(new PipingCalculationGroup()); var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); mocks.ReplayAll(); // Precondition - Assert.AreEqual(1, failureMechanism.Calculations.Count); + Assert.AreEqual(1, failureMechanism.CalculationsGroup.Children.Count); // Call ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, failureMechanism); ToolStripItem addCalculationItem = contextMenu.Items[contextMenuAddFolderIndex]; addCalculationItem.PerformClick(); // Assert - Assert.AreEqual(2, failureMechanism.Calculations.Count); - IPipingCalculationItem addedItem = failureMechanism.Calculations.ElementAt(1); + Assert.AreEqual(2, failureMechanism.CalculationsGroup.Children.Count); + IPipingCalculationItem addedItem = failureMechanism.CalculationsGroup.Children.ElementAt(1); Assert.AreEqual("Nieuwe map (1)", addedItem.Name); Assert.IsInstanceOf(addedItem); mocks.VerifyAll(); Fisheye: Tag 6bcbd610ececdc293a8883b50448f369e1fa4a25 refers to a dead (removed) revision in file `Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingCalculationsTreeFolderTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingCalculationGroupContextPropertiesTest.cs =================================================================== diff -u -r495647ee1c652fecc15eea7fefeab29ae01347fe -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingCalculationGroupContextPropertiesTest.cs (.../PipingCalculationGroupContextPropertiesTest.cs) (revision 495647ee1c652fecc15eea7fefeab29ae01347fe) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingCalculationGroupContextPropertiesTest.cs (.../PipingCalculationGroupContextPropertiesTest.cs) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -2,6 +2,8 @@ using Core.Common.Base; using Core.Common.Gui; +using Core.Common.Utils.ComponentModel; +using Core.Common.Utils.Reflection; using NUnit.Framework; @@ -11,6 +13,8 @@ using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.PropertyClasses; +using PropertyInfo = System.Reflection.PropertyInfo; + namespace Ringtoets.Piping.Forms.Test.PropertyClasses { [TestFixture] @@ -69,5 +73,31 @@ Assert.AreEqual(name, group.Name); mocks.VerifyAll(); } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void Name_GroupHasEditableName_NameShouldNotBeReadonly(bool nameIsEditable) + { + // Setup + var group = new PipingCalculationGroup("A", nameIsEditable); + + var properties = new PipingCalculationGroupContextProperties + { + Data = new PipingCalculationGroupContext(group, + Enumerable.Empty(), + Enumerable.Empty()) + }; + + string propertyName = TypeUtils.GetMemberName(p => p.Name); + PropertyInfo nameProperty = properties.GetType().GetProperty(propertyName); + + // Call + object[] namePropertyAttributes = nameProperty.GetCustomAttributes(false); + + // Assert + Assert.AreEqual(1, namePropertyAttributes.OfType().Count()); + Assert.AreEqual(!nameIsEditable, DynamicReadOnlyAttribute.IsDynamicReadOnly(properties, propertyName)); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj =================================================================== diff -u -r7a8e3d1718cb12c53c2b0573b056037ed02e9913 -r6bcbd610ececdc293a8883b50448f369e1fa4a25 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision 7a8e3d1718cb12c53c2b0573b056037ed02e9913) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision 6bcbd610ececdc293a8883b50448f369e1fa4a25) @@ -61,7 +61,6 @@ -