Beispiel #1
0
        private static PersistableSoilLayerCollection CreateSoilLayerCollection(IMacroStabilityInwardsSoilProfileUnderSurfaceLine soilProfile,
                                                                                MacroStabilityInwardsExportStageType stageType, IdFactory idFactory,
                                                                                MacroStabilityInwardsExportRegistry registry)
        {
            var soilLayerCollection = new PersistableSoilLayerCollection
            {
                Id         = idFactory.Create(),
                SoilLayers = MacroStabilityInwardsSoilProfile2DLayersHelper.GetLayersRecursively(soilProfile.Layers)
                             .Select(l => Create(l, stageType, registry))
                             .ToArray()
            };

            registry.AddSoilLayer(stageType, soilLayerCollection.Id);

            return(soilLayerCollection);
        }
        /// <summary>
        /// Asserts whether the <see cref="PersistableSoilLayerCollection"/> contains the data
        /// that is representative for the <paramref name="layers"/>.
        /// </summary>
        /// <param name="layers">The layers that contain the original data.</param>
        /// <param name="soilLayerCollections">The <see cref="PersistableSoilLayerCollection"/>
        /// that needs to be asserted.</param>
        /// <param name="soils">The soils that are used.</param>
        /// <param name="geometries">The geometries that are used.</param>
        /// <exception cref="AssertionException">Thrown when the data in <paramref name="soilLayerCollections"/>
        /// is not correct.</exception>
        public static void AssertPersistableSoilLayers(IEnumerable <MacroStabilityInwardsSoilLayer2D> layers, IEnumerable <PersistableSoilLayerCollection> soilLayerCollections,
                                                       IEnumerable <PersistableSoil> soils, IEnumerable <PersistableGeometry> geometries)
        {
            Assert.AreEqual(2, soilLayerCollections.Count());

            IEnumerable <MacroStabilityInwardsSoilLayer2D> originalLayers = MacroStabilityInwardsSoilProfile2DLayersHelper.GetLayersRecursively(layers);

            for (var i = 0; i < soilLayerCollections.Count(); i++)
            {
                PersistableSoilLayerCollection soilLayerCollection = soilLayerCollections.ElementAt(i);

                Assert.IsNotNull(soilLayerCollection.Id);
                Assert.AreEqual(originalLayers.Count(), soilLayerCollection.SoilLayers.Count());

                for (var j = 0; j < originalLayers.Count(); j++)
                {
                    PersistableSoilLayer persistableSoilLayer = soilLayerCollection.SoilLayers.ElementAt(j);

                    Assert.AreEqual(soils.ElementAt(j).Id, persistableSoilLayer.SoilId);
                    Assert.AreEqual(geometries.ElementAt(i).Layers.ElementAt(j).Id, persistableSoilLayer.LayerId);
                }
            }
        }
        public void Create_WithValidData_ReturnsStages()
        {
            // Setup
            var idFactory = new IdFactory();
            var registry  = new MacroStabilityInwardsExportRegistry();

            var stageTypes = new[]
            {
                MacroStabilityInwardsExportStageType.Daily,
                MacroStabilityInwardsExportStageType.Extreme
            };

            var settingsList   = new List <PersistableCalculationSettings>();
            var geometryList   = new List <PersistableGeometry>();
            var soilLayersList = new List <PersistableSoilLayerCollection>();
            var waternetList   = new List <PersistableWaternet>();
            var waternetCreatorSettingsList = new List <PersistableWaternetCreatorSettings>();
            var stateList = new List <PersistableState>();

            foreach (MacroStabilityInwardsExportStageType stageType in stageTypes)
            {
                var settings = new PersistableCalculationSettings
                {
                    Id = idFactory.Create()
                };
                settingsList.Add(settings);

                var geometry = new PersistableGeometry
                {
                    Id = idFactory.Create()
                };
                geometryList.Add(geometry);

                var persistableSoilLayerCollection = new PersistableSoilLayerCollection
                {
                    Id = idFactory.Create()
                };
                soilLayersList.Add(persistableSoilLayerCollection);

                var waternet = new PersistableWaternet
                {
                    Id = idFactory.Create()
                };
                waternetList.Add(waternet);

                var waternetCreatorSettings = new PersistableWaternetCreatorSettings
                {
                    Id = idFactory.Create()
                };
                waternetCreatorSettingsList.Add(waternetCreatorSettings);

                var state = new PersistableState
                {
                    Id = idFactory.Create()
                };
                stateList.Add(state);

                registry.AddSettings(stageType, settings.Id);
                registry.AddGeometry(stageType, geometry.Id);
                registry.AddSoilLayer(stageType, persistableSoilLayerCollection.Id);
                registry.AddWaternet(stageType, waternet.Id);
                registry.AddWaternetCreatorSettings(stageType, waternetCreatorSettings.Id);
                registry.AddState(stageType, state.Id);
            }

            // Call
            IEnumerable <PersistableStage> stages = PersistableStageFactory.Create(idFactory, registry);

            // Assert
            PersistableDataModelTestHelper.AssertStages(stages, settingsList, geometryList, soilLayersList, waternetList, waternetCreatorSettingsList, stateList);
        }