public void IsEnabled_CalculationsWithoutOutput_ReturnFalse()
        {
            // Setup
            var mocks             = new MockRepository();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1)
            {
                DuneLocationCalculations =
                {
                    new DuneLocationCalculation(new TestDuneLocation())
                }
            };

            var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
                                                                                             new DuneErosionFailureMechanism(),
                                                                                             assessmentSection);

            using (var plugin = new DuneErosionPlugin())
            {
                ExportInfo info = GetExportInfo(plugin);

                // Call
                bool isEnabled = info.IsEnabled(context);

                // Assert
                Assert.IsFalse(isEnabled);
            }

            mocks.VerifyAll();
        }
コード例 #2
0
 private static void AssertDuneLocationCalculationCollectionEntity(
     DuneLocationCalculationsForTargetProbability expectedCalculations,
     DuneLocationCalculationForTargetProbabilityCollectionEntity entity)
 {
     Assert.AreEqual(expectedCalculations.TargetProbability, entity.TargetProbability);
     Assert.AreEqual(expectedCalculations.DuneLocationCalculations.Count, entity.DuneLocationCalculationEntities.Count);
 }
        public void GivenContextWithObserverAttached_WhenNotifyingObserversOfDuneLocationCalculationsForUserDefinedTargetProbability_ThenObserverCorrectlyNotified()
        {
            // Given
            var mockRepository = new MockRepository();
            var observer       = mockRepository.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mockRepository.ReplayAll();

            var assessmentSection = new AssessmentSectionStub();
            var failureMechanism  = new DuneErosionFailureMechanism();
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1);

            failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Add(calculationsForTargetProbability);
            var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
                                                                                             failureMechanism,
                                                                                             assessmentSection);

            context.Attach(observer);

            // When
            failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.First().NotifyObservers();

            // Then
            mockRepository.VerifyAll();
        }
コード例 #4
0
        public void CreateCalculationActivitiesForFailureMechanism_WithValidDataAndUsePreprocessorStates_ReturnsExpectedActivities(bool usePreprocessor)
        {
            // Setup
            AssessmentSectionStub assessmentSection = CreateAssessmentSection(usePreprocessor);

            var duneLocationCalculationsForTargetProbability1 = new DuneLocationCalculationsForTargetProbability(0.1);
            var duneLocationCalculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(0.01);

            var failureMechanism = new DuneErosionFailureMechanism
            {
                DuneLocationCalculationsForUserDefinedTargetProbabilities =
                {
                    duneLocationCalculationsForTargetProbability1,
                    duneLocationCalculationsForTargetProbability2
                }
            };

            var duneLocation1 = new DuneLocation(1, "locationName1", new Point2D(1, 1), new DuneLocation.ConstructionProperties());
            var duneLocation2 = new DuneLocation(2, "locationName2", new Point2D(2, 2), new DuneLocation.ConstructionProperties());

            failureMechanism.SetDuneLocations(new[]
            {
                duneLocation1,
                duneLocation2
            });

            // Call
            CalculatableActivity[] activities = DuneLocationCalculationActivityFactory.CreateCalculationActivities(failureMechanism, assessmentSection).ToArray();

            // Assert
            Assert.AreEqual(4, activities.Length);

            HydraulicBoundaryDatabase hydraulicBoundaryDatabase = assessmentSection.HydraulicBoundaryDatabase;

            AssertDuneLocationCalculationActivity(activities[0],
                                                  "1/10",
                                                  duneLocation1.Name,
                                                  duneLocation1.Id,
                                                  duneLocationCalculationsForTargetProbability1.TargetProbability,
                                                  hydraulicBoundaryDatabase);
            AssertDuneLocationCalculationActivity(activities[1],
                                                  "1/10",
                                                  duneLocation2.Name,
                                                  duneLocation2.Id,
                                                  duneLocationCalculationsForTargetProbability1.TargetProbability,
                                                  hydraulicBoundaryDatabase);

            AssertDuneLocationCalculationActivity(activities[2],
                                                  "1/100",
                                                  duneLocation1.Name,
                                                  duneLocation1.Id,
                                                  duneLocationCalculationsForTargetProbability2.TargetProbability,
                                                  hydraulicBoundaryDatabase);
            AssertDuneLocationCalculationActivity(activities[3],
                                                  "1/100",
                                                  duneLocation2.Name,
                                                  duneLocation2.Id,
                                                  duneLocationCalculationsForTargetProbability2.TargetProbability,
                                                  hydraulicBoundaryDatabase);
        }
コード例 #5
0
        private static IEnumerable <TestCaseData> GetTargetProbabilityItemShiftActionTestCases()
        {
            foreach (string displayNameFormat in GetOutputDisplayNameFormats())
            {
                yield return(new TestCaseData(
                                 new Action <ObservableList <DuneLocationCalculationsForTargetProbability> >(col =>
                {
                    DuneLocationCalculationsForTargetProbability itemToMove = col.First();
                    col.Remove(itemToMove);
                    col.Add(itemToMove);
                }),
                                 $"{displayNameFormat}", $"{displayNameFormat} (2)")
                             .SetName(string.Format(displayNameFormat, "MoveItemDown")));

                yield return(new TestCaseData(
                                 new Action <ObservableList <DuneLocationCalculationsForTargetProbability> >(col =>
                {
                    DuneLocationCalculationsForTargetProbability itemToMove = col.Last();
                    col.Remove(itemToMove);
                    col.Insert(0, itemToMove);
                }),
                                 $"{displayNameFormat} (2)", $"{displayNameFormat}")
                             .SetName(string.Format(displayNameFormat, "MoveItemUp")));
            }
        }
        public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithAndWithoutOutput_AllCalculationOutputClearedAndReturnsAllAffectedObjects()
        {
            // Setup
            DialogBoxHandler = (name, wnd) =>
            {
                var tester = new MessageBoxTester(wnd);
                tester.ClickOk();
            };

            DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithAndWithoutOutput();
            List <object> expectedAffectedObjects = calculationsForTargetProbability.DuneLocationCalculations
                                                    .Where(dlc => dlc.Output != null)
                                                    .Cast <object>()
                                                    .ToList();

            expectedAffectedObjects.Add(calculationsForTargetProbability);

            var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler(calculationsForTargetProbability);

            IEnumerable <IObservable> affectedObjects = null;

            // Call
            void Call() => affectedObjects = handler.SetPropertyValueAfterConfirmation(() => {});

            // Assert
            var expectedMessages = new[]
            {
                "Alle bijbehorende hydraulische belastingen zijn verwijderd."
            };

            TestHelper.AssertLogMessagesAreGenerated(Call, expectedMessages, 1);
            CollectionAssert.IsEmpty(calculationsForTargetProbability.DuneLocationCalculations.Where(dlc => dlc.Output != null));
            CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects);
        }
        public void GivenDisposedPropertyControlWithData_WhenSingleCalculationUpdated_RefreshRequiredEventNotRaised()
        {
            // Given
            var mocks = new MockRepository();
            var targetProbabilityChangeHandler = mocks.Stub <IObservablePropertyChangeHandler>();

            mocks.ReplayAll();

            var calculation = new DuneLocationCalculation(new TestDuneLocation());
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1)
            {
                DuneLocationCalculations =
                {
                    calculation
                }
            };

            using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(calculationsForTargetProbability, targetProbabilityChangeHandler))
            {
                var refreshRequiredRaised = 0;
                properties.RefreshRequired += (sender, args) => refreshRequiredRaised++;

                properties.Dispose();

                // When
                calculation.NotifyObservers();

                // Then
                Assert.AreEqual(0, refreshRequiredRaised);

                mocks.VerifyAll();
            }
        }
コード例 #8
0
        public void Text_WithContext_ReturnsUniquelyFormattedTargetProbability(double userDefinedTargetProbability1,
                                                                               double userDefinedTargetProbability2,
                                                                               double userDefinedTargetProbability3,
                                                                               string expectedText)
        {
            // Setup
            var failureMechanism = new DuneErosionFailureMechanism();
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability2);

            failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.AddRange(new[]
            {
                new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability1),
                new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability3),
                calculationsForTargetProbability
            });

            var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
                                                                                             failureMechanism,
                                                                                             new AssessmentSectionStub(new[]
            {
                failureMechanism
            }));

            // Call
            string text = info.Text(context);

            // Assert
            Assert.AreEqual(expectedText, text);
        }
コード例 #9
0
        public void Create_WithValidCollection_ReturnsEntityWithExpectedResults()
        {
            // Setup
            var random = new Random(21);
            int order  = random.Next();

            var duneLocation = new TestDuneLocation();
            var calculation  = new DuneLocationCalculation(duneLocation);

            var calculations = new DuneLocationCalculationsForTargetProbability(random.NextDouble(0, 0.1))
            {
                DuneLocationCalculations =
                {
                    calculation
                }
            };

            var duneLocationEntity = new DuneLocationEntity();
            var registry           = new PersistenceRegistry();

            registry.Register(duneLocationEntity, duneLocation);

            // Call
            DuneLocationCalculationForTargetProbabilityCollectionEntity entity = calculations.Create(order, registry);

            // Assert
            Assert.IsNotNull(entity);
            Assert.AreEqual(order, entity.Order);
            Assert.AreEqual(calculations.TargetProbability, entity.TargetProbability);

            DuneLocationCalculationEntity duneLocationCalculationEntity = entity.DuneLocationCalculationEntities.Single();

            Assert.AreSame(duneLocationEntity, duneLocationCalculationEntity.DuneLocationEntity);
            CollectionAssert.IsEmpty(duneLocationCalculationEntity.DuneLocationCalculationOutputEntities);
        }
        public void TargetProbability_Always_InputChangedAndObservablesNotified()
        {
            // Setup
            var mocks      = new MockRepository();
            var observable = mocks.StrictMock <IObservable>();

            observable.Expect(o => o.NotifyObservers());
            mocks.ReplayAll();

            var customHandler = new SetPropertyValueAfterConfirmationParameterTester(new[]
            {
                observable
            });

            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1)
            {
                DuneLocationCalculations =
                {
                    new DuneLocationCalculation(new TestDuneLocation())
                }
            };

            var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(
                calculationsForTargetProbability, customHandler);

            // Call
            properties.TargetProbability = 0.01;

            // Assert
            mocks.VerifyAll();
        }
コード例 #11
0
        public void SetDuneLocations_Always_PreviousLocationsAndCalculationsCleared()
        {
            // Setup
            var calculationsForTargetProbability1 = new DuneLocationCalculationsForTargetProbability(0.1);
            var calculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(0.01);
            var failureMechanism = new DuneErosionFailureMechanism
            {
                DuneLocationCalculationsForUserDefinedTargetProbabilities =
                {
                    calculationsForTargetProbability1,
                    calculationsForTargetProbability2
                }
            };

            failureMechanism.SetDuneLocations(new DuneLocation[]
            {
                new TestDuneLocation()
            });

            // Precondition
            CollectionAssert.IsNotEmpty(failureMechanism.DuneLocations);
            CollectionAssert.IsNotEmpty(calculationsForTargetProbability1.DuneLocationCalculations);
            CollectionAssert.IsNotEmpty(calculationsForTargetProbability2.DuneLocationCalculations);

            // Call
            failureMechanism.SetDuneLocations(Enumerable.Empty <DuneLocation>());

            // Assert
            CollectionAssert.IsEmpty(failureMechanism.DuneLocations);
            CollectionAssert.IsEmpty(calculationsForTargetProbability1.DuneLocationCalculations);
            CollectionAssert.IsEmpty(calculationsForTargetProbability2.DuneLocationCalculations);
        }
コード例 #12
0
        public void CanDrop_DraggedDataPartOfGroupContext_ReturnsTrue()
        {
            // Setup
            using (var plugin = new DuneErosionPlugin())
            {
                TreeNodeInfo info = GetInfo(plugin);

                var assessmentSectionStub            = new AssessmentSectionStub();
                var failureMechanism                 = new DuneErosionFailureMechanism();
                var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1);

                var targetData = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(
                    new ObservableList <DuneLocationCalculationsForTargetProbability>
                {
                    calculationsForTargetProbability
                },
                    failureMechanism,
                    assessmentSectionStub);

                var draggedData = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(
                    calculationsForTargetProbability,
                    failureMechanism,
                    assessmentSectionStub);

                // Call
                bool canDrop = info.CanDrop(draggedData, targetData);

                // Assert
                Assert.IsTrue(canDrop);
            }
        }
        public void Constructor_WithData_ReturnExpectedValues()
        {
            // Setup
            var mocks = new MockRepository();
            var targetProbabilityChangeHandler = mocks.Stub <IObservablePropertyChangeHandler>();

            mocks.ReplayAll();

            var calculation = new DuneLocationCalculation(new TestDuneLocation());
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1)
            {
                DuneLocationCalculations =
                {
                    calculation
                }
            };

            // Call
            using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(calculationsForTargetProbability, targetProbabilityChangeHandler))
            {
                // Assert
                Assert.IsInstanceOf <ObjectProperties <DuneLocationCalculationsForTargetProbability> >(properties);
                Assert.IsInstanceOf <IDisposable>(properties);

                Assert.AreSame(calculationsForTargetProbability, properties.Data);

                Assert.AreEqual(calculationsForTargetProbability.TargetProbability, properties.TargetProbability);

                Assert.AreEqual(1, properties.Calculations.Length);
                Assert.AreSame(calculation, properties.Calculations[0].Data);

                mocks.VerifyAll();
            }
        }
コード例 #14
0
        public void ChildNodeObjects_NoDuneLocationsPresent_ReturnsExpectedChildData()
        {
            // Setup
            var duneLocationCalculationsForTargetProbability1 = new DuneLocationCalculationsForTargetProbability(0.1);
            var duneLocationCalculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(0.01);

            var calculationsForTargetProbabilities = new ObservableList <DuneLocationCalculationsForTargetProbability>
            {
                duneLocationCalculationsForTargetProbability1,
                duneLocationCalculationsForTargetProbability2
            };

            var calculationsGroupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculationsForTargetProbabilities,
                                                                                                                     new DuneErosionFailureMechanism(),
                                                                                                                     new AssessmentSectionStub());

            using (var plugin = new DuneErosionPlugin())
            {
                TreeNodeInfo info = GetInfo(plugin);

                // Call
                object[] childNodeObjects = info.ChildNodeObjects(calculationsGroupContext);

                // Assert
                CollectionAssert.IsEmpty(childNodeObjects);
            }
        }
コード例 #15
0
        public void Read_EntityWithValidValues_SetsCalculationsWithExpectedValues()
        {
            // Setup
            var random = new Random(21);

            var duneLocationEntityOne          = new DuneLocationEntity();
            var calculationEntityWithoutOutput = new DuneLocationCalculationEntity
            {
                DuneLocationEntity = duneLocationEntityOne
            };

            var duneLocationEntityTwo       = new DuneLocationEntity();
            var calculationEntityWithOutput = new DuneLocationCalculationEntity
            {
                DuneLocationEntity = duneLocationEntityTwo,
                DuneLocationCalculationOutputEntities =
                {
                    new DuneLocationCalculationOutputEntity()
                }
            };

            var collectionEntity = new DuneLocationCalculationForTargetProbabilityCollectionEntity
            {
                TargetProbability = random.NextDouble(0, 0.1),
                DuneLocationCalculationEntities =
                {
                    calculationEntityWithoutOutput,
                    calculationEntityWithOutput
                }
            };

            var duneLocationOne = new TestDuneLocation("1");
            var duneLocationTwo = new TestDuneLocation("2");
            var collector       = new ReadConversionCollector();

            collector.Read(duneLocationEntityOne, duneLocationOne);
            collector.Read(duneLocationEntityTwo, duneLocationTwo);

            // Call
            DuneLocationCalculationsForTargetProbability calculations = collectionEntity.Read(collector);

            // Assert
            Assert.AreEqual(collectionEntity.TargetProbability, calculations.TargetProbability);

            IEnumerable <DuneLocationCalculation> duneLocationCalculations = calculations.DuneLocationCalculations;

            Assert.AreEqual(collectionEntity.DuneLocationCalculationEntities.Count, duneLocationCalculations.Count());

            DuneLocationCalculation calculationOne = duneLocationCalculations.ElementAt(0);

            Assert.AreSame(collector.Get(duneLocationEntityOne), calculationOne.DuneLocation);
            Assert.IsNull(calculationOne.Output);

            DuneLocationCalculation calculationTwo = duneLocationCalculations.ElementAt(1);

            Assert.AreSame(collector.Get(duneLocationEntityTwo), calculationTwo.DuneLocation);
            Assert.IsNotNull(calculationTwo.Output);
        }
コード例 #16
0
        /// <summary>
        /// Creates a new instance of <see cref="DuneLocationCalculationsForTargetProbabilityChangeHandler"/>.
        /// </summary>
        /// <param name="calculationsForTargetProbability">The calculations to change the target probability for.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="calculationsForTargetProbability"/> is <c>null</c>.</exception>
        public DuneLocationCalculationsForTargetProbabilityChangeHandler(DuneLocationCalculationsForTargetProbability calculationsForTargetProbability)
        {
            if (calculationsForTargetProbability == null)
            {
                throw new ArgumentNullException(nameof(calculationsForTargetProbability));
            }

            this.calculationsForTargetProbability = calculationsForTargetProbability;
        }
コード例 #17
0
        private void UpdateMetaData(IEnumerable <DuneLocationCalculationsForTargetProbability> calculationsForTargetProbabilities)
        {
            var newMetaDataItemsLookups = new Dictionary <DuneLocationCalculationsForTargetProbability, MetaDataItemsLookup>();

            var waterLevelMetaDataItemsCounter = 0;
            var waveHeightMetaDataItemsCounter = 0;
            var wavePeriodMetaDataItemsCounter = 0;

            foreach (string metaData in MapData.MetaData)
            {
                if (metaData.Contains(string.Format(Resources.MetaData_WaterLevel_TargetProbability_0, string.Empty)))
                {
                    AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waterLevelMetaDataItemsCounter),
                                            lookupItem => lookupItem.WaterLevelMetaDataItem = metaData);
                    waterLevelMetaDataItemsCounter++;
                }
                else if (metaData.Contains(string.Format(Resources.MetaData_WaveHeight_TargetProbability_0, string.Empty)))
                {
                    AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waveHeightMetaDataItemsCounter),
                                            lookupItem => lookupItem.WaveHeightMetaDataItem = metaData);
                    waveHeightMetaDataItemsCounter++;
                }
                else if (metaData.Contains(string.Format(Resources.MetaData_WavePeriod_TargetProbability_0, string.Empty)))
                {
                    AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(wavePeriodMetaDataItemsCounter),
                                            lookupItem => lookupItem.WavePeriodMetaDataItem = metaData);
                    wavePeriodMetaDataItemsCounter++;
                }
            }

            string currentSelectedMetaDataAttribute = MapData.SelectedMetaDataAttribute;

            foreach (KeyValuePair <DuneLocationCalculationsForTargetProbability, MetaDataItemsLookup> currentMetaDataItemLookup in currentMetaDataItemsLookups)
            {
                MetaDataItemsLookup currentMetaDataItem = currentMetaDataItemLookup.Value;
                if (currentSelectedMetaDataAttribute == currentMetaDataItem.WaterLevelMetaDataItem ||
                    currentSelectedMetaDataAttribute == currentMetaDataItem.WaveHeightMetaDataItem ||
                    currentSelectedMetaDataAttribute == currentMetaDataItem.WavePeriodMetaDataItem)
                {
                    DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = currentMetaDataItemLookup.Key;
                    if (!newMetaDataItemsLookups.ContainsKey(calculationsForTargetProbability))
                    {
                        MapData.SelectedMetaDataAttribute = RiskeerCommonUtilResources.MetaData_Name;
                    }
                    else
                    {
                        MetaDataItemsLookup newMetaDataItem = newMetaDataItemsLookups[calculationsForTargetProbability];
                        SetSelectedMetaDataAttribute(currentSelectedMetaDataAttribute, currentMetaDataItem.WaterLevelMetaDataItem, newMetaDataItem.WaterLevelMetaDataItem);
                        SetSelectedMetaDataAttribute(currentSelectedMetaDataAttribute, currentMetaDataItem.WaveHeightMetaDataItem, newMetaDataItem.WaveHeightMetaDataItem);
                        SetSelectedMetaDataAttribute(currentSelectedMetaDataAttribute, currentMetaDataItem.WavePeriodMetaDataItem, newMetaDataItem.WavePeriodMetaDataItem);
                    }
                }
            }

            currentMetaDataItemsLookups = newMetaDataItemsLookups;
        }
        public void Constructor_ValidTargetProbability_ExpectedProperties(double validValue)
        {
            // Call
            var duneLocationCalculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(validValue);

            // Assert
            Assert.IsInstanceOf <Observable>(duneLocationCalculationsForTargetProbability);
            Assert.AreEqual(validValue, duneLocationCalculationsForTargetProbability.TargetProbability);
            Assert.IsEmpty(duneLocationCalculationsForTargetProbability.DuneLocationCalculations);
        }
コード例 #19
0
        public void GivenPluginWithGuiSetAndOpenedDuneLocationCalculationsView_WhenUserDefinedTargetProbabilityRemovedFromCollectionAndObserversNotified_ThenViewTitleUpdated()
        {
            // Given
            var mocks             = new MockRepository();
            var projectStore      = mocks.Stub <IStoreProject>();
            var projectMigrator   = mocks.Stub <IMigrateProject>();
            var projectFactory    = mocks.Stub <IProjectFactory>();
            var project           = mocks.Stub <IProject>();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            using (var gui = new GuiCore(new MainWindow(), projectStore, projectMigrator, projectFactory, new GuiCoreSettings()))
            {
                gui.Plugins.AddRange(new PluginBase[]
                {
                    new DuneErosionPlugin()
                });

                gui.Run();
                gui.SetProject(project, null);

                const double targetProbability    = 0.1;
                var          removedCalculations  = new DuneLocationCalculationsForTargetProbability(targetProbability);
                var          affectedCalculations = new DuneLocationCalculationsForTargetProbability(targetProbability);
                var          failureMechanism     = new DuneErosionFailureMechanism
                {
                    DuneLocationCalculationsForUserDefinedTargetProbabilities =
                    {
                        removedCalculations,
                        affectedCalculations
                    }
                };

                gui.DocumentViewController.CloseAllViews();
                gui.DocumentViewController.OpenViewForData(new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(affectedCalculations,
                                                                                                                              failureMechanism,
                                                                                                                              assessmentSection));

                IView view = gui.ViewHost.DocumentViews.First();

                // Precondition
                Assert.IsInstanceOf <DuneLocationCalculationsView>(view);
                Assert.IsTrue(AvalonDockViewHostTestHelper.IsTitleSet((AvalonDockViewHost)gui.ViewHost, view, "Hydraulische belastingen - 1/10 (1)"));

                // When
                failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Remove(removedCalculations);
                failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.NotifyObservers();

                // Then
                Assert.IsTrue(AvalonDockViewHostTestHelper.IsTitleSet((AvalonDockViewHost)gui.ViewHost, view, "Hydraulische belastingen - 1/10"));
                mocks.VerifyAll();
            }
        }
コード例 #20
0
        private static void AddMetaDataItemToLookup(IDictionary <DuneLocationCalculationsForTargetProbability, MetaDataItemsLookup> lookup,
                                                    DuneLocationCalculationsForTargetProbability calculationsForTargetProbability,
                                                    Action <MetaDataItemsLookup> setMetaDataAction)
        {
            if (!lookup.ContainsKey(calculationsForTargetProbability))
            {
                lookup.Add(calculationsForTargetProbability, new MetaDataItemsLookup());
            }

            setMetaDataAction(lookup[calculationsForTargetProbability]);
        }
        public void TargetProbability_ValidValue_NewValueSet(double validValue)
        {
            // Setup
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.01);

            // Call
            calculationsForTargetProbability.TargetProbability = validValue;

            // Assert
            Assert.AreEqual(validValue, calculationsForTargetProbability.TargetProbability);
        }
コード例 #22
0
        public void OnDrop_DataDroppedToDifferentIndex_DroppedDataCorrectlyMovedAndObserversNotified()
        {
            // Setup
            using (var plugin = new DuneErosionPlugin())
            {
                TreeNodeInfo info = GetInfo(plugin);

                var assessmentSectionStub = new AssessmentSectionStub();
                var failureMechanism      = new DuneErosionFailureMechanism();

                var calculationsForTargetProbability1 = new DuneLocationCalculationsForTargetProbability(0.1);
                var calculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(0.01);
                var calculationsForTargetProbability3 = new DuneLocationCalculationsForTargetProbability(0.001);

                var calculationsForTargetProbabilities = new ObservableList <DuneLocationCalculationsForTargetProbability>
                {
                    calculationsForTargetProbability1,
                    calculationsForTargetProbability2,
                    calculationsForTargetProbability3
                };

                var parentData = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(
                    calculationsForTargetProbabilities,
                    failureMechanism,
                    assessmentSectionStub);

                var droppedData = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(
                    calculationsForTargetProbability3,
                    failureMechanism,
                    assessmentSectionStub);

                var mockRepository = new MockRepository();
                var observer       = mockRepository.StrictMock <IObserver>();
                observer.Expect(o => o.UpdateObserver());
                mockRepository.ReplayAll();

                calculationsForTargetProbabilities.Attach(observer);

                // Call
                info.OnDrop(droppedData, parentData, parentData, 1, null);

                // Assert
                CollectionAssert.AreEquivalent(new[]
                {
                    calculationsForTargetProbability1,
                    calculationsForTargetProbability3,
                    calculationsForTargetProbability2
                }, calculationsForTargetProbabilities);

                mockRepository.VerifyAll();
            }
        }
コード例 #23
0
        public void GivenPluginWithGuiSetAndOpenedDuneLocationCalculationsView_WhenRemovingDataForOpenedViewAndObserversNotified_ThenNoExceptionThrown()
        {
            // Given
            var mocks             = new MockRepository();
            var projectStore      = mocks.Stub <IStoreProject>();
            var projectMigrator   = mocks.Stub <IMigrateProject>();
            var projectFactory    = mocks.Stub <IProjectFactory>();
            var project           = mocks.Stub <IProject>();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            using (var gui = new GuiCore(new MainWindow(), projectStore, projectMigrator, projectFactory, new GuiCoreSettings()))
            {
                gui.Plugins.AddRange(new PluginBase[]
                {
                    new DuneErosionPlugin()
                });
                gui.Run();
                gui.SetProject(project, null);

                var calculations     = new DuneLocationCalculationsForTargetProbability(0.1);
                var failureMechanism = new DuneErosionFailureMechanism
                {
                    DuneLocationCalculationsForUserDefinedTargetProbabilities =
                    {
                        calculations
                    }
                };

                gui.SetProject(project, null);

                gui.DocumentViewController.CloseAllViews();
                gui.DocumentViewController.OpenViewForData(new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculations,
                                                                                                                              failureMechanism,
                                                                                                                              assessmentSection));

                IView view = gui.ViewHost.DocumentViews.First();

                // Precondition
                Assert.IsInstanceOf <DuneLocationCalculationsView>(view);

                // When
                failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Remove(calculations);
                void Call() => failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.NotifyObservers();

                // Then
                Assert.DoesNotThrow(Call);
                mocks.VerifyAll();
            }
        }
        public void TargetProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double invalidValue)
        {
            // Setup
            var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.01);

            // Call
            void Call() => calculationsForTargetProbability.TargetProbability = invalidValue;

            // Assert
            const string expectedMessage = "De waarde van de doelkans moet groter zijn dan 0 en kleiner dan of gelijk aan 0,1.";
            var          exception       = Assert.Throws <ArgumentOutOfRangeException>(Call);

            StringAssert.StartsWith(expectedMessage, exception.Message);
        }
コード例 #25
0
        public void Create_PersistenceRegistryNull_ThrowsArgumentNullException()
        {
            // Setup
            var random       = new Random(21);
            var calculations = new DuneLocationCalculationsForTargetProbability(random.NextDouble(0, 0.1));

            // Call
            void Call() => calculations.Create(random.Next(), null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("registry", exception.ParamName);
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            var assessmentSection = new AssessmentSectionStub();
            var failureMechanism  = new DuneErosionFailureMechanism();
            var duneLocationCalculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1);

            // Call
            var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(duneLocationCalculationsForTargetProbability,
                                                                                             failureMechanism,
                                                                                             assessmentSection);

            // Assert
            Assert.IsInstanceOf <LocationCalculationsContext <DuneLocationCalculationsForTargetProbability, DuneLocationCalculationsForTargetProbability> >(context);
            Assert.AreSame(duneLocationCalculationsForTargetProbability, context.WrappedData);
            Assert.AreSame(assessmentSection, context.AssessmentSection);
        }
コード例 #27
0
        public void ChildNodeObjects_DuneLocationsPresent_ReturnsExpectedChildData()
        {
            // Setup
            var assessmentSection = new AssessmentSectionStub();
            var failureMechanism  = new DuneErosionFailureMechanism();

            failureMechanism.SetDuneLocations(new[]
            {
                new TestDuneLocation()
            });

            var duneLocationCalculationsForTargetProbability1 = new DuneLocationCalculationsForTargetProbability(0.1);
            var duneLocationCalculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(0.01);

            var calculationsForTargetProbabilities = new ObservableList <DuneLocationCalculationsForTargetProbability>
            {
                duneLocationCalculationsForTargetProbability1,
                duneLocationCalculationsForTargetProbability2
            };

            var calculationsGroupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(
                calculationsForTargetProbabilities, failureMechanism, assessmentSection);

            using (var plugin = new DuneErosionPlugin())
            {
                TreeNodeInfo info = GetInfo(plugin);

                // Call
                object[] childNodeObjects = info.ChildNodeObjects(calculationsGroupContext);

                // Assert
                Assert.AreEqual(2, childNodeObjects.Length);

                DuneLocationCalculationsForUserDefinedTargetProbabilityContext[] calculationsContexts = childNodeObjects.OfType <DuneLocationCalculationsForUserDefinedTargetProbabilityContext>().ToArray();
                Assert.AreEqual(2, calculationsContexts.Length);

                Assert.AreSame(duneLocationCalculationsForTargetProbability1, calculationsContexts[0].WrappedData);
                Assert.AreSame(failureMechanism, calculationsContexts[0].FailureMechanism);
                Assert.AreSame(assessmentSection, calculationsContexts[0].AssessmentSection);

                Assert.AreSame(duneLocationCalculationsForTargetProbability2, calculationsContexts[1].WrappedData);
                Assert.AreSame(failureMechanism, calculationsContexts[1].FailureMechanism);
                Assert.AreSame(assessmentSection, calculationsContexts[1].AssessmentSection);
            }
        }
コード例 #28
0
        public void GivenMapLayerWithDuneLocations_WhenNotSelectedTargetProbabilityRemovedAndNotified_ThenMapDataUpdated(string displayName)
        {
            // Given
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mocks.ReplayAll();

            var failureMechanism = new DuneErosionFailureMechanism();

            failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Add(
                new DuneLocationCalculationsForTargetProbability(0.1));
            failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Add(
                new DuneLocationCalculationsForTargetProbability(0.001));
            failureMechanism.SetDuneLocations(new[]
            {
                new TestDuneLocation("test1")
            });

            using (var mapLayer = new DuneErosionLocationsMapLayer(failureMechanism))
            {
                DuneLocationCalculationsForTargetProbability calculationsForTargetProbabilityToRemove = failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.First();
                DuneLocationCalculationsForTargetProbability calculationsForTargetProbability         = failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Last();
                mapLayer.MapData.SelectedMetaDataAttribute = string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability));
                mapLayer.MapData.NotifyObservers();

                mapLayer.MapData.Attach(observer);

                // Precondition
                AssertDuneLocationsMapData(failureMechanism, mapLayer.MapData);

                // When
                failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Remove(calculationsForTargetProbabilityToRemove);
                failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.NotifyObservers();

                // Then
                AssertDuneLocationsMapData(failureMechanism, mapLayer.MapData);
                Assert.AreEqual(string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability)),
                                mapLayer.MapData.SelectedMetaDataAttribute);
            }

            mocks.VerifyAll();
        }
        public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_ReturnsAffectedObjectsAndDoesNotLog()
        {
            // Setup
            DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithoutOutput();
            var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler(
                calculationsForTargetProbability);

            DuneLocationCalculationsForTargetProbability[] expectedAffectedObjects =
            {
                calculationsForTargetProbability
            };

            IEnumerable <IObservable> affectedObjects = null;

            // Call
            void Call() => affectedObjects = handler.SetPropertyValueAfterConfirmation(() => {});

            // Assert
            TestHelper.AssertLogMessagesCount(Call, 0);
            CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects);
        }
        public void SetPropertyValueAfterConfirmation_ConfirmationNotGiven_SetValueNotCalledReturnsNoAffectedObjects()
        {
            // Setup
            DialogBoxHandler = (name, wnd) =>
            {
                var tester = new MessageBoxTester(wnd);
                tester.ClickCancel();
            };

            DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithAndWithoutOutput();
            var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler(calculationsForTargetProbability);

            var propertySet = 0;

            // Call
            IEnumerable <IObservable> affectedObjects = handler.SetPropertyValueAfterConfirmation(() => propertySet++);

            // Assert
            Assert.AreEqual(0, propertySet);
            Assert.AreEqual(2, calculationsForTargetProbability.DuneLocationCalculations.Count(dlc => dlc.Output != null));
            CollectionAssert.IsEmpty(affectedObjects);
        }