Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensions.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensions.cs (.../GrassCoverErosionInwardsFailureMechanismCreateExtensions.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensions.cs (.../GrassCoverErosionInwardsFailureMechanismCreateExtensions.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -47,6 +47,8 @@
AddEntitiesForDikeProfiles(mechanism, registry, entity);
AddEntitiesForSectionResults(mechanism.SectionResults, registry);
+ entity.CalculationGroupEntity = mechanism.CalculationsGroup.Create(registry, 0);
+
registry.Register(entity, mechanism);
return entity;
}
Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/CalculationGroupEntityReadExtentions.cs
===================================================================
diff -u -rbba617101367a21a38bf41ad520662058b9012af -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/CalculationGroupEntityReadExtentions.cs (.../CalculationGroupEntityReadExtentions.cs) (revision bba617101367a21a38bf41ad520662058b9012af)
+++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/CalculationGroupEntityReadExtentions.cs (.../CalculationGroupEntityReadExtentions.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -44,7 +44,8 @@
/// The object keeping track of read operations.
/// The calculation input parameters for piping.
/// A new .
- /// Thrown when is null.
+ /// Thrown when
+ /// or is null.
internal static CalculationGroup ReadPipingCalculationGroup(this CalculationGroupEntity entity, ReadConversionCollector collector,
GeneralPipingInput generalPipingInput)
{
@@ -56,10 +57,12 @@
{
throw new ArgumentNullException("generalPipingInput");
}
+
var group = new CalculationGroup(entity.Name, Convert.ToBoolean(entity.IsEditable))
{
StorageId = entity.CalculationGroupEntityId
};
+
foreach (object childEntity in GetChildEntitiesInOrder(entity))
{
var childCalculationGroupEntity = childEntity as CalculationGroupEntity;
@@ -77,6 +80,46 @@
return group;
}
+ ///
+ /// Read the and use the information to construct
+ /// a .
+ ///
+ /// The to create
+ /// for.
+ /// The object keeping track of read operations.
+ /// A new .
+ /// Thrown when is null.
+ internal static CalculationGroup ReadAsGrassCoverErosionInwardsCalculationGroup(this CalculationGroupEntity entity,
+ ReadConversionCollector collector)
+ {
+ if (collector == null)
+ {
+ throw new ArgumentNullException("collector");
+ }
+
+ var group = new CalculationGroup(entity.Name, Convert.ToBoolean(entity.IsEditable))
+ {
+ StorageId = entity.CalculationGroupEntityId
+ };
+
+ foreach (object childEntity in GetChildEntitiesInOrder(entity))
+ {
+ var childCalculationGroupEntity = childEntity as CalculationGroupEntity;
+ if (childCalculationGroupEntity != null)
+ {
+ group.Children.Add(childCalculationGroupEntity.ReadAsGrassCoverErosionInwardsCalculationGroup(collector));
+ }
+ var childPipingCalculationEntity = childEntity as GrassCoverErosionInwardsCalculationEntity;
+ if (childPipingCalculationEntity != null)
+ {
+ // TODO
+ //group.Children.Add(childPipingCalculationEntity.Read(collector, generalPipingInput));
+ }
+ }
+
+ return group;
+ }
+
private static IEnumerable GetChildEntitiesInOrder(CalculationGroupEntity entity)
{
var sortedList = new SortedList();
@@ -88,6 +131,7 @@
{
sortedList.Add(pipingCalculationEntity.Order, pipingCalculationEntity);
}
+ //TODO Grass Cover Erosion Inwards Calculations
return sortedList.Values;
}
}
Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -133,7 +133,7 @@
CalculationGroup targetRootCalculationGroup, GeneralPipingInput generalPipingInput,
ReadConversionCollector collector)
{
- var rootCalculationGroup = rootCalculationGroupEntity.ReadPipingCalculationGroup(collector, generalPipingInput);
+ CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadPipingCalculationGroup(collector, generalPipingInput);
targetRootCalculationGroup.StorageId = rootCalculationGroup.StorageId;
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
@@ -156,6 +156,7 @@
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadGeneralCalculationInput(failureMechanism.GeneralInput);
entity.ReadDikeProfiles(failureMechanism.DikeProfiles);
+ ReadRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.CalculationsGroup, collector);
entity.ReadGrassCoverErosionInwardsMechanismSectionResults(failureMechanism, collector);
}
@@ -184,6 +185,18 @@
}
}
+ private static void ReadRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
+ CalculationGroup targetRootCalculationGroup,
+ ReadConversionCollector collector)
+ {
+ CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsGrassCoverErosionInwardsCalculationGroup(collector);
+ targetRootCalculationGroup.StorageId = rootCalculationGroup.StorageId;
+ foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
+ {
+ targetRootCalculationGroup.Children.Add(calculationBase);
+ }
+ }
+
#endregion
#region Height Structures
Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensions.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensions.cs (.../GrassCoverErosionInwardsFailureMechanismUpdateExtensions.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensions.cs (.../GrassCoverErosionInwardsFailureMechanismUpdateExtensions.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -68,6 +68,7 @@
UpdateDikeProfiles(mechanism, registry, entity, context);
mechanism.UpdateFailureMechanismSections(registry, entity, context);
UpdateSectionResults(mechanism, registry, context);
+ mechanism.CalculationsGroup.Update(registry, context);
registry.Register(entity, mechanism);
}
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensionsTest.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensionsTest.cs (.../GrassCoverErosionInwardsFailureMechanismCreateExtensionsTest.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwardsFailureMechanismCreateExtensionsTest.cs (.../GrassCoverErosionInwardsFailureMechanismCreateExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -28,6 +28,8 @@
using Core.Common.Base.Geometry;
using NUnit.Framework;
+
+using Ringtoets.Common.Data.Calculation;
using Ringtoets.GrassCoverErosionInwards.Data;
namespace Application.Ringtoets.Storage.Test.Create
@@ -162,5 +164,40 @@
// Assert
Assert.AreEqual(2, entity.DikeProfileEntities.Count);
}
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void Create_WithCalculationGroup_ReturnFailureMechanismEntityWithCalculationGroupEntities(bool isRelevant)
+ {
+ // Setup
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ failureMechanism.CalculationsGroup.Children.Add(new CalculationGroup("A", true));
+ failureMechanism.CalculationsGroup.Children.Add(new CalculationGroup("B", true));
+
+ var registry = new PersistenceRegistry();
+
+ // Call
+ FailureMechanismEntity entity = failureMechanism.Create(registry);
+
+ // Assert
+ Assert.IsNotNull(entity);
+ Assert.AreEqual(failureMechanism.CalculationsGroup.Name, entity.CalculationGroupEntity.Name);
+ Assert.AreEqual(Convert.ToByte(failureMechanism.CalculationsGroup.IsNameEditable), entity.CalculationGroupEntity.IsEditable);
+ Assert.AreEqual(0, entity.CalculationGroupEntity.Order);
+
+ CalculationGroupEntity[] childGroupEntities = entity.CalculationGroupEntity.CalculationGroupEntity1
+ .OrderBy(cge => cge.Order)
+ .ToArray();
+ Assert.AreEqual(2, childGroupEntities.Length);
+ Assert.AreEqual("A", childGroupEntities[0].Name);
+ Assert.AreEqual(1, childGroupEntities[0].IsEditable);
+ Assert.AreEqual(0, childGroupEntities[0].Order);
+ Assert.AreEqual("B", childGroupEntities[1].Name);
+ Assert.AreEqual(1, childGroupEntities[1].IsEditable);
+ Assert.AreEqual(1, childGroupEntities[1].Order);
+ }
+
+ // TODO: With calculations in root folder
}
}
\ No newline at end of file
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -805,6 +805,7 @@
{
AssertPipingCalculationScenario(expectedPipingCalculation, (PipingCalculationScenario) actualChild);
}
+ // TODO GEBK Berekening
}
}
@@ -883,11 +884,12 @@
}
}
- private static void AssertGrassCoverErosionInwardsFailureMechanism(GrassCoverErosionInwardsFailureMechanism expectedFailureMechanism,
+ private void AssertGrassCoverErosionInwardsFailureMechanism(GrassCoverErosionInwardsFailureMechanism expectedFailureMechanism,
GrassCoverErosionInwardsFailureMechanism actualFailureMechanism)
{
Assert.AreEqual(expectedFailureMechanism.GeneralInput.N, actualFailureMechanism.GeneralInput.N);
AssertDikeProfiles(expectedFailureMechanism.DikeProfiles, actualFailureMechanism.DikeProfiles);
+ AssertCalculationGroup(expectedFailureMechanism.CalculationsGroup, actualFailureMechanism.CalculationsGroup);
}
private static void AssertDikeProfiles(IList expectedDikeProfiles, IList actualDikeProfiles)
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs
===================================================================
diff -u -r15583423fc85999780f51034039e46af720211ab -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs (.../AssessmentSectionEntityReadExtensionsTest.cs) (revision 15583423fc85999780f51034039e46af720211ab)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs (.../AssessmentSectionEntityReadExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -412,6 +412,7 @@
var entity = CreateAssessmentSectionEntity();
var entityId = new Random(21).Next(1, 502);
+ var rootGroupEntity = new CalculationGroupEntity();
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = entityId,
@@ -424,7 +425,8 @@
GrassCoverErosionInwardsFailureMechanismMetaEntityId = 2,
N = 1
}
- }
+ },
+ CalculationGroupEntity = rootGroupEntity
};
entity.FailureMechanismEntities.Add(failureMechanismEntity);
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/CalculationGroupEntityReadExtentionsTest.cs
===================================================================
diff -u -rbba617101367a21a38bf41ad520662058b9012af -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/CalculationGroupEntityReadExtentionsTest.cs (.../CalculationGroupEntityReadExtentionsTest.cs) (revision bba617101367a21a38bf41ad520662058b9012af)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/CalculationGroupEntityReadExtentionsTest.cs (.../CalculationGroupEntityReadExtentionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -297,5 +297,126 @@
Assert.AreEqual("group2", rootChildGroup2.Name);
Assert.AreEqual(4, rootChildGroup2.StorageId);
}
+
+ [Test]
+ public void ReadAsGrassCoverErosionInwardsCalculationGroup_CollectorIsNull_ThrowArgumentNullException()
+ {
+ // Setup
+ var entity = new CalculationGroupEntity();
+
+ // Call
+ TestDelegate call = () => entity.ReadAsGrassCoverErosionInwardsCalculationGroup(null);
+
+ // Assert
+ string paramName = Assert.Throws(call).ParamName;
+ Assert.AreEqual("collector", paramName);
+ }
+
+ [Test]
+ [TestCase(345, "HAbba", 1)]
+ [TestCase(45, "Dooeis", 0)]
+ public void ReadAsGrassCoverErosionInwardsCalculationGroup_EntityWithoutChildren_CreateCalculationGroupWithoutChildren(
+ long id, string name, byte isEditable)
+ {
+ // Setup
+ var entity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = id,
+ Name = name,
+ IsEditable = isEditable
+ };
+
+ var collector = new ReadConversionCollector();
+
+ // Call
+ CalculationGroup group = entity.ReadAsGrassCoverErosionInwardsCalculationGroup(collector);
+
+ // Assert
+ Assert.AreEqual(id, group.StorageId);
+ Assert.AreEqual(name, group.Name);
+ Assert.AreEqual(Convert.ToBoolean(isEditable), group.IsNameEditable);
+ CollectionAssert.IsEmpty(group.Children);
+ }
+
+ [Test]
+ public void ReadAsGrassCoverErosionInwardsCalculationGroup_EntityWithChildGroups_CreateCalculationGroupWithChildGroups()
+ {
+ // Setup
+ var rootGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 1,
+ Name = "A",
+ CalculationGroupEntity1 =
+ {
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 2,
+ Name = "AA",
+ IsEditable = 1,
+ Order = 0
+ },
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 3,
+ Name = "AB",
+ IsEditable = 0,
+ CalculationGroupEntity1 =
+ {
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 4,
+ Name = "ABA",
+ IsEditable = 0,
+ Order = 0
+ },
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 5,
+ Name = "ABB",
+ IsEditable = 1,
+ Order = 1
+ }
+ },
+ Order = 1
+ }
+ }
+ };
+
+ var collector = new ReadConversionCollector();
+
+ // Call
+ var rootGroup = rootGroupEntity.ReadAsGrassCoverErosionInwardsCalculationGroup(collector);
+
+ // Assert
+ Assert.AreEqual(1, rootGroup.StorageId);
+ Assert.AreEqual("A", rootGroup.Name);
+ Assert.IsFalse(rootGroup.IsNameEditable);
+
+ ICalculationBase[] rootChildren = rootGroup.Children.ToArray();
+ var rootChildGroup1 = (CalculationGroup)rootChildren[0];
+ Assert.AreEqual("AA", rootChildGroup1.Name);
+ Assert.AreEqual(2, rootChildGroup1.StorageId);
+ Assert.IsTrue(rootChildGroup1.IsNameEditable);
+ CollectionAssert.IsEmpty(rootChildGroup1.Children);
+ var rootChildGroup2 = (CalculationGroup)rootChildren[1];
+ Assert.AreEqual("AB", rootChildGroup2.Name);
+ Assert.AreEqual(3, rootChildGroup2.StorageId);
+ Assert.IsFalse(rootChildGroup2.IsNameEditable);
+
+ ICalculationBase[] rootChildGroup2Children = rootChildGroup2.Children.ToArray();
+ var rootChildGroup1Child1 = (CalculationGroup)rootChildGroup2Children[0];
+ Assert.AreEqual("ABA", rootChildGroup1Child1.Name);
+ Assert.AreEqual(4, rootChildGroup1Child1.StorageId);
+ Assert.IsFalse(rootChildGroup1Child1.IsNameEditable);
+ CollectionAssert.IsEmpty(rootChildGroup1Child1.Children);
+ var rootChildGroup1Child2 = (CalculationGroup)rootChildGroup2Children[1];
+ Assert.AreEqual("ABB", rootChildGroup1Child2.Name);
+ Assert.AreEqual(5, rootChildGroup1Child2.StorageId);
+ Assert.IsTrue(rootChildGroup1Child2.IsNameEditable);
+ CollectionAssert.IsEmpty(rootChildGroup1Child2.Children);
+ }
+
+ // TODO Calculations
+ // TODO Groups and Calculations
}
}
\ No newline at end of file
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -39,6 +39,8 @@
[TestFixture]
public class FailureMechanismEntityReadExtensionsTest
{
+ #region Piping
+
[Test]
public void ReadAsPipingFailureMechanism_WithoutFailureMechanism_ThrowsArgumentNullException()
{
@@ -52,7 +54,7 @@
var parameter = Assert.Throws(test).ParamName;
Assert.AreEqual("failureMechanism", parameter);
}
-
+
[Test]
public void ReadAsPipingFailureMechanism_WithoutCollector_ThrowsArgumentNullException()
{
@@ -255,13 +257,17 @@
ICalculationBase child1 = failureMechanism.CalculationsGroup.Children[0];
Assert.AreEqual("Child1", child1.Name);
- Assert.AreEqual(childGroup1Id, ((CalculationGroup) child1).StorageId);
+ Assert.AreEqual(childGroup1Id, ((CalculationGroup)child1).StorageId);
ICalculationBase child2 = failureMechanism.CalculationsGroup.Children[1];
Assert.AreEqual("Child2", child2.Name);
- Assert.AreEqual(childGroup2Id, ((CalculationGroup) child2).StorageId);
+ Assert.AreEqual(childGroup2Id, ((CalculationGroup)child2).StorageId);
}
+ #endregion
+
+ #region Grass Cover Erosion Inwards
+
[Test]
[TestCase(true)]
[TestCase(false)]
@@ -283,6 +289,10 @@
GrassCoverErosionInwardsFailureMechanismMetaEntityId = inputId,
N = 3
}
+ },
+ CalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 456
}
};
var collector = new ReadConversionCollector();
@@ -335,6 +345,10 @@
DikeGeometryData = emptyDikeGeometryBinaryData,
ForeShoreData = emptyForeshoreBinaryData
}
+ },
+ CalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 567
}
};
GrassCoverErosionInwardsFailureMechanism failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
@@ -382,6 +396,10 @@
GrassCoverErosionInwardsFailureMechanismMetaEntityId = 2,
N = 1
}
+ },
+ CalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = 9867
}
};
var collector = new ReadConversionCollector();
@@ -396,6 +414,74 @@
}
[Test]
+ public void ReadAsGrassCoverErosionInwardsFailureMechanism_WithCalculationGroup_ReturnsNewGrassCoverErosionInwardsFailureMechanismWithCalculationGroupSet()
+ {
+ // Setup
+ var entityId = new Random(984356).Next(1, 502);
+ const int rootGroupId = 1;
+ const int childGroup1Id = 2;
+ const int childGroup2Id = 3;
+
+ var entity = new FailureMechanismEntity
+ {
+ FailureMechanismEntityId = entityId,
+ CalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = rootGroupId,
+ IsEditable = 0,
+ Name = "Berekeningen",
+ Order = 0,
+ CalculationGroupEntity1 =
+ {
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = childGroup1Id,
+ IsEditable = 1,
+ Name = "Child1",
+ Order = 0
+ },
+ new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = childGroup2Id,
+ IsEditable = 1,
+ Name = "Child2",
+ Order = 1
+ },
+ }
+ },
+ GrassCoverErosionInwardsFailureMechanismMetaEntities =
+ {
+ new GrassCoverErosionInwardsFailureMechanismMetaEntity
+ {
+ GrassCoverErosionInwardsFailureMechanismMetaEntityId = 3456,
+ N = 1
+ }
+ }
+ };
+ var collector = new ReadConversionCollector();
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+
+ // Call
+ entity.ReadAsGrassCoverErosionInwardsFailureMechanism(failureMechanism, collector);
+
+ // Assert
+ Assert.AreEqual(rootGroupId, failureMechanism.CalculationsGroup.StorageId);
+ Assert.AreEqual(2, failureMechanism.CalculationsGroup.Children.Count);
+
+ ICalculationBase child1 = failureMechanism.CalculationsGroup.Children[0];
+ Assert.AreEqual("Child1", child1.Name);
+ Assert.AreEqual(childGroup1Id, ((CalculationGroup)child1).StorageId);
+
+ ICalculationBase child2 = failureMechanism.CalculationsGroup.Children[1];
+ Assert.AreEqual("Child2", child2.Name);
+ Assert.AreEqual(childGroup2Id, ((CalculationGroup)child2).StorageId);
+ }
+
+ // TODO Calculations
+
+ #endregion
+
+ [Test]
[TestCase(true)]
[TestCase(false)]
public void ReadAsStandAloneFailureMechanism_WithoutSectionsSet_ReturnsNewStandAloneFailureMechanism(bool isRelevant)
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs
===================================================================
diff -u -r15583423fc85999780f51034039e46af720211ab -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs (.../AssessmentSectionUpdateExtensionsTest.cs) (revision 15583423fc85999780f51034039e46af720211ab)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs (.../AssessmentSectionUpdateExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -160,6 +160,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -215,6 +219,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -270,6 +278,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -324,6 +336,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -392,6 +408,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -451,6 +471,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -507,6 +531,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -593,6 +621,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity
{
PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId,
@@ -686,6 +718,10 @@
GrassCoverErosionInwards =
{
StorageId = failureMechanismId++,
+ CalculationsGroup =
+ {
+ StorageId = 5986
+ },
GeneralInput =
{
StorageId = 12
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensionsTest.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensionsTest.cs (.../GrassCoverErosionInwardsFailureMechanismUpdateExtensionsTest.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwardsFailureMechanismUpdateExtensionsTest.cs (.../GrassCoverErosionInwardsFailureMechanismUpdateExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -30,6 +30,8 @@
using Core.Common.Base.Geometry;
using NUnit.Framework;
using Rhino.Mocks;
+
+using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.GrassCoverErosionInwards.Data;
@@ -141,6 +143,10 @@
{
StorageId = 62981,
N = 13
+ },
+ CalculationsGroup =
+ {
+ StorageId = 209
}
};
@@ -149,17 +155,23 @@
GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId,
N = 2
};
+ var rootCalculationGroup = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId
+ };
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = failureMechanism.StorageId,
IsRelevant = Convert.ToByte(false),
GrassCoverErosionInwardsFailureMechanismMetaEntities =
{
generalInputEntity
- }
+ },
+ CalculationGroupEntity = rootCalculationGroup
};
ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroup);
ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(generalInputEntity);
// Call
@@ -203,14 +215,24 @@
new RoughnessPoint(new Point2D(4, 4), 1)
},
new Point2D[0], null, new DikeProfile.ConstructionProperties())
+ },
+ CalculationsGroup =
+ {
+ StorageId = 765
}
};
+ var rootGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId
+ };
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = failureMechanism.StorageId,
+ CalculationGroupEntity = rootGroupEntity
};
ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootGroupEntity);
ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
{
GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId
@@ -261,14 +283,24 @@
{
StorageId = 4
}
+ },
+ CalculationsGroup =
+ {
+ StorageId = 405986
}
};
+ var rootGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId
+ };
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = failureMechanism.StorageId,
+ CalculationGroupEntity = rootGroupEntity
};
ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootGroupEntity);
ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
{
GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId
@@ -309,19 +341,29 @@
GeneralInput =
{
StorageId = 2
+ },
+ CalculationsGroup =
+ {
+ StorageId = 30495
}
};
failureMechanism.AddSection(new FailureMechanismSection("", new[]
{
new Point2D(0, 0)
}));
+ var rootGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId
+ };
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = failureMechanism.StorageId,
+ CalculationGroupEntity = rootGroupEntity
};
ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootGroupEntity);
ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
{
GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId
@@ -352,6 +394,10 @@
GeneralInput =
{
StorageId = 2
+ },
+ CalculationsGroup =
+ {
+ StorageId = 4968
}
};
var testName = "testName";
@@ -363,20 +409,26 @@
StorageId = 1
});
+ var rootGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId
+ };
var failureMechanismSectionEntity = new FailureMechanismSectionEntity
{
- FailureMechanismSectionEntityId = 1,
+ FailureMechanismSectionEntityId = 1
};
var failureMechanismEntity = new FailureMechanismEntity
{
FailureMechanismEntityId = 1,
FailureMechanismSectionEntities =
{
failureMechanismSectionEntity
- }
+ },
+ CalculationGroupEntity = rootGroupEntity
};
ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootGroupEntity);
ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
{
GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId
@@ -393,5 +445,139 @@
mocks.VerifyAll();
}
+
+ [Test]
+ public void Update_ContextWithNewCalculationGroup_CalculationGroupEntityAdded()
+ {
+ // Setup
+ MockRepository mocks = new MockRepository();
+ var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks);
+ mocks.ReplayAll();
+
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism
+ {
+ StorageId = 1,
+ CalculationsGroup =
+ {
+ StorageId = 1
+ },
+ GeneralInput =
+ {
+ StorageId = 2
+ }
+ };
+ var newCalculationGroup = new CalculationGroup
+ {
+ Name = "new group"
+ };
+ failureMechanism.CalculationsGroup.Children.Add(newCalculationGroup);
+
+ var rootCalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId,
+ Name = "Berekeningen",
+ IsEditable = 0,
+ Order = 0
+ };
+ var failureMechanismEntity = new FailureMechanismEntity
+ {
+ FailureMechanismEntityId = failureMechanism.StorageId,
+ CalculationGroupEntity = rootCalculationGroupEntity
+ };
+ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity);
+ ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
+ {
+ GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId,
+ FailureMechanismEntityId = failureMechanism.StorageId
+ });
+
+ var registry = new PersistenceRegistry();
+
+ // Call
+ failureMechanism.Update(registry, ringtoetsEntities);
+
+ // Assert
+ Assert.AreEqual(1, rootCalculationGroupEntity.CalculationGroupEntity1.Count);
+ CalculationGroupEntity newlyAddedGroupEntity = rootCalculationGroupEntity.CalculationGroupEntity1.First();
+ Assert.AreEqual(newCalculationGroup.Name, newlyAddedGroupEntity.Name);
+ Assert.AreEqual(1, newlyAddedGroupEntity.IsEditable);
+ Assert.AreEqual(0, newlyAddedGroupEntity.Order);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Update_ContextWithUnchangedCalculationGroup_NoNewCalculationGroupEntityAdded()
+ {
+ // Setup
+ MockRepository mocks = new MockRepository();
+ var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks);
+ mocks.ReplayAll();
+
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism
+ {
+ StorageId = 1,
+ CalculationsGroup =
+ {
+ StorageId = 1
+ },
+ GeneralInput =
+ {
+ StorageId = 1
+ }
+ };
+ var alreadySavedChildGroup = new CalculationGroup
+ {
+ Name = "saved child group",
+ StorageId = 2
+ };
+ failureMechanism.CalculationsGroup.Children.Add(alreadySavedChildGroup);
+
+ var childGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = alreadySavedChildGroup.StorageId,
+ Name = alreadySavedChildGroup.Name,
+ IsEditable = 1,
+ Order = 0
+ };
+ var rootCalculationGroupEntity = new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = failureMechanism.CalculationsGroup.StorageId,
+ Name = "Berekeningen",
+ IsEditable = 0,
+ Order = 0,
+ CalculationGroupEntity1 =
+ {
+ childGroupEntity
+ }
+ };
+ var failureMechanismEntity = new FailureMechanismEntity
+ {
+ FailureMechanismEntityId = failureMechanism.StorageId,
+ CalculationGroupEntity = rootCalculationGroupEntity
+ };
+ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity);
+ ringtoetsEntities.CalculationGroupEntities.Add(childGroupEntity);
+ ringtoetsEntities.GrassCoverErosionInwardsFailureMechanismMetaEntities.Add(new GrassCoverErosionInwardsFailureMechanismMetaEntity
+ {
+ GrassCoverErosionInwardsFailureMechanismMetaEntityId = failureMechanism.GeneralInput.StorageId,
+ FailureMechanismEntityId = failureMechanism.StorageId
+ });
+
+ var registry = new PersistenceRegistry();
+
+ // Call
+ failureMechanism.Update(registry, ringtoetsEntities);
+
+ // Assert
+ Assert.AreEqual(1, rootCalculationGroupEntity.CalculationGroupEntity1.Count);
+ CalculationGroupEntity retainedCalculationGroupEntity = rootCalculationGroupEntity.CalculationGroupEntity1.First();
+ Assert.AreEqual(alreadySavedChildGroup.Name, retainedCalculationGroupEntity.Name);
+ Assert.AreEqual(1, retainedCalculationGroupEntity.IsEditable);
+ Assert.AreEqual(0, retainedCalculationGroupEntity.Order);
+ Assert.AreEqual(alreadySavedChildGroup.StorageId, retainedCalculationGroupEntity.CalculationGroupEntityId);
+ mocks.VerifyAll();
+ }
}
}
\ No newline at end of file
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs
===================================================================
diff -u -r15583423fc85999780f51034039e46af720211ab -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs (.../ProjectUpdateExtensionsTest.cs) (revision 15583423fc85999780f51034039e46af720211ab)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs (.../ProjectUpdateExtensionsTest.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -252,6 +252,10 @@
GrassCoverErosionInwards =
{
StorageId = 1,
+ CalculationsGroup =
+ {
+ StorageId = 854563
+ },
GeneralInput =
{
StorageId = 3
@@ -350,6 +354,10 @@
{
CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId
});
+ ringtoetsEntities.CalculationGroupEntities.Add(new CalculationGroupEntity
+ {
+ CalculationGroupEntityId = section.GrassCoverErosionInwards.CalculationsGroup.StorageId
+ });
ringtoetsEntities.FailureMechanismEntities.Add(new FailureMechanismEntity
{
FailureMechanismEntityId = 1
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectHelper.cs
===================================================================
diff -u -r43041b7b9647e0b5e8b3758443206b53a3c16511 -r93f4c75ba2309bb82de7e2362bafca5aa516d545
--- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectHelper.cs (.../RingtoetsProjectHelper.cs) (revision 43041b7b9647e0b5e8b3758443206b53a3c16511)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectHelper.cs (.../RingtoetsProjectHelper.cs) (revision 93f4c75ba2309bb82de7e2362bafca5aa516d545)
@@ -294,6 +294,18 @@
Orientation = 7.7,
X0 = 8.8
}));
+ failureMechanism.CalculationsGroup.Children.Add(new CalculationGroup
+ {
+ Name = "GEKB A"
+ });
+ failureMechanism.CalculationsGroup.Children.Add(new CalculationGroup
+ {
+ Name = "GEKB B"
+ });
+ failureMechanism.CalculationsGroup.Children.Add(new CalculationGroup
+ {
+ Name = "GEKB C"
+ });
}
private static void SetSectionResults(IEnumerable sectionResults)