Esempio n. 1
0
        public void OnNodeRemoved_WithContexts_RemovesFailureMechanismFromCollectionAndNotifiesObservers()
        {
            // Setup
            var assessmentSection = mocks.Stub <IAssessmentSection>();
            var observer          = mocks.StrictMock <IObserver>();

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

            var failureMechanism = new SpecificFailureMechanism();
            var context          = new SpecificFailureMechanismContext(failureMechanism, assessmentSection);

            var failureMechanisms = new ObservableList <SpecificFailureMechanism>
            {
                failureMechanism
            };

            failureMechanisms.Attach(observer);
            var parentContext = new SpecificFailureMechanismsContext(failureMechanisms, assessmentSection);

            // Call
            info.OnNodeRemoved(context, parentContext);

            // Assert
            CollectionAssert.IsEmpty(failureMechanisms);
        }
Esempio n. 2
0
        public void OnDrop_DataDroppedToDifferentIndex_DroppedDataCorrectlyMovedAndObserversNotified()
        {
            // Setup
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var unmovedFailureMechanism = new SpecificFailureMechanism();
            var movedFailureMechanism   = new SpecificFailureMechanism();
            var failureMechanisms       = new ObservableList <SpecificFailureMechanism>
            {
                unmovedFailureMechanism,
                movedFailureMechanism
            };

            failureMechanisms.Attach(observer);

            var parentData  = new SpecificFailureMechanismsContext(failureMechanisms, assessmentSection);
            var draggedData = new SpecificFailureMechanismContext(movedFailureMechanism, assessmentSection);

            // Call
            info.OnDrop(draggedData, parentData, parentData, 0, null);

            // Assert
            CollectionAssert.AreEqual(new[]
            {
                movedFailureMechanism,
                unmovedFailureMechanism
            }, failureMechanisms);
        }
Esempio n. 3
0
        public void UpdateTest()
        {
            Logger logger = new Logger();
            var    list   = new ObservableList <string>();

            list.Attach(logger);
            string str1 = "string1",
                   str2 = "string2",
                   str3 = "string3";

            list.Add(str1);
            list.Add(str2);
            list.Insert(2, str3);

            list.Remove(str1);
            list.Detach(logger);
            list.Clear();

            foreach (string entry in logger.Log)
            {
                Trace.WriteLine(entry);
            }

            Assert.AreEqual(logger.Log.Count, 4);
        }
Esempio n. 4
0
        public void ContextMenuStrip_ClickOnAddTargetProbabilityItem_CalculationsForTargetProbabilityAddedAndObserversNotified()
        {
            // Given
            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
            {
                HydraulicBoundaryDatabase =
                {
                    Locations =
                    {
                        new TestHydraulicBoundaryLocation("Location 1"),
                        new TestHydraulicBoundaryLocation("Location 2")
                    }
                }
            };

            var calculations = new ObservableList <HydraulicBoundaryLocationCalculationsForTargetProbability>();
            var context      = new WaveHeightCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculations, assessmentSection);

            var mockRepository       = new MockRepository();
            var calculationsObserver = mockRepository.StrictMock <IObserver>();

            calculationsObserver.Expect(o => o.UpdateObserver());
            calculations.Attach(calculationsObserver);

            using (var treeViewControl = new TreeViewControl())
            {
                IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mockRepository);

                IGui gui = StubFactory.CreateGuiStub(mockRepository);
                gui.Stub(g => g.MainWindow).Return(mainWindow);
                gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder());
                gui.Stub(g => g.ProjectStore).Return(mockRepository.Stub <IStoreProject>());
                gui.Stub(g => g.DocumentViewController).Return(mockRepository.Stub <IDocumentViewController>());

                mockRepository.ReplayAll();

                using (var plugin = new RiskeerPlugin())
                {
                    TreeNodeInfo info = GetInfo(plugin);
                    plugin.Gui = gui;
                    plugin.Activate();

                    using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl))
                    {
                        // When
                        contextMenuAdapter.Items[contextMenuAddTargetProbabilityIndex].PerformClick();

                        // Then
                        Assert.AreEqual(1, calculations.Count);
                        Assert.AreEqual(0.01, calculations[0].TargetProbability);
                        Assert.AreEqual(2, calculations[0].HydraulicBoundaryLocationCalculations.Count);
                    }
                }
            }

            mockRepository.VerifyAll();
        }
Esempio n. 5
0
        public void ContextMenuStrip_ClickOnAddTargetProbabilityItem_CalculationsForTargetProbabilityAddedAndObserversNotified()
        {
            // Given
            var failureMechanism = new DuneErosionFailureMechanism();

            failureMechanism.SetDuneLocations(new[]
            {
                new TestDuneLocation("Location 1"),
                new TestDuneLocation("Location 2")
            });

            var calculations = new ObservableList <DuneLocationCalculationsForTargetProbability>();
            var context      = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculations,
                                                                                                         failureMechanism,
                                                                                                         new AssessmentSectionStub());

            var mockRepository       = new MockRepository();
            var calculationsObserver = mockRepository.StrictMock <IObserver>();

            calculationsObserver.Expect(o => o.UpdateObserver());
            calculations.Attach(calculationsObserver);

            using (var treeViewControl = new TreeViewControl())
            {
                IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mockRepository);

                IGui gui = StubFactory.CreateGuiStub(mockRepository);
                gui.Stub(g => g.MainWindow).Return(mainWindow);
                gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder());

                mockRepository.ReplayAll();

                using (var plugin = new DuneErosionPlugin())
                {
                    TreeNodeInfo info = GetInfo(plugin);
                    plugin.Gui = gui;
                    plugin.Activate();

                    using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl))
                    {
                        // When
                        contextMenuAdapter.Items[contextMenuAddTargetProbabilityIndex].PerformClick();

                        // Then
                        Assert.AreEqual(1, calculations.Count);
                        Assert.AreEqual(0.01, calculations[0].TargetProbability);
                        Assert.AreEqual(2, calculations[0].DuneLocationCalculations.Count);
                    }
                }
            }

            mockRepository.VerifyAll();
        }
Esempio n. 6
0
        public void NotifyObservers_MultipleObserversDetachingOrAttachingOthers_NoUpdatesForAttachedAndDetachedObservers()
        {
            // Setup
            var mocks          = new MockRepository();
            var observableList = new ObservableList <double>();

            var observer1 = mocks.Stub <IObserver>();
            var observer2 = mocks.Stub <IObserver>();
            var observer3 = mocks.Stub <IObserver>();
            var observer4 = mocks.Stub <IObserver>();
            var observer5 = mocks.Stub <IObserver>();
            var observer6 = mocks.Stub <IObserver>();

            observableList.Attach(observer1);
            observableList.Attach(observer2);
            observableList.Attach(observer3);
            observableList.Attach(observer4);
            observableList.Attach(observer6);

            observer1.Expect(o => o.UpdateObserver());
            observer2.Expect(o => o.UpdateObserver()).Do((Action)(() => observableList.Detach(observer3)));
            observer3.Expect(o => o.UpdateObserver()).Repeat.Never(); // A detached observer should no longer be updated
            observer4.Expect(o => o.UpdateObserver()).Do((Action)(() => observableList.Attach(observer5)));
            observer5.Expect(o => o.UpdateObserver()).Repeat.Never(); // An attached observer should not be updated too
            observer6.Expect(o => o.UpdateObserver());

            mocks.ReplayAll();

            // Call
            observableList.NotifyObservers();

            // Assert
            mocks.VerifyAll();
        }
Esempio n. 7
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();
            }
        }
Esempio n. 8
0
        public void Observers_WhenAttachingObserver_ContainsExpectedObserver()
        {
            // Setup
            var mocks = new MockRepository();
            var testObservableList = new ObservableList <object>();
            var observer           = mocks.Stub <IObserver>();

            testObservableList.Attach(observer);
            mocks.ReplayAll();

            // Call
            IEnumerable <IObserver> observers = testObservableList.Observers;

            // Assert
            Assert.AreSame(observer, observers.Single());

            mocks.VerifyAll();
        }
Esempio n. 9
0
        public void NotifyObserver_AttachedObserverDetachedAgain_ObserverNoLongerNotified()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            mocks.ReplayAll();

            var observableList = new ObservableList <object>();

            observableList.Attach(observer);
            observableList.Detach(observer);

            // Call
            observableList.NotifyObservers();

            // Assert
            mocks.VerifyAll(); // Expect no calls on 'observer'
        }
Esempio n. 10
0
        public void NotifyObservers_WithObserverAttached_ObserverIsNotified()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver()); // Expect to be called once
            mocks.ReplayAll();

            var observableList = new ObservableList <object>();

            observableList.Attach(observer);

            // Call
            observableList.NotifyObservers();

            // Assert
            mocks.VerifyAll();
        }
Esempio n. 11
0
        public void Finish_FileImportActivityWithFileImporterObservableTargetAndNoneState_ObserversOfTargetAreNotNotified()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            mocks.ReplayAll();

            var target = new ObservableList <object>();

            target.Attach(observer);

            var fileImporter       = new SimpleFileImporter <ObservableList <object> >(target);
            var fileImportActivity = new TestFileImportActivity(fileImporter, "", ActivityState.None);

            // Call
            fileImportActivity.Finish();

            // Assert
            mocks.VerifyAll();
        }
Esempio n. 12
0
        public void OnNodeRemoved_WithContexts_RemovesItemAndNotifiesObservers()
        {
            // Setup
            IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks);

            var failureMechanism = new DuneErosionFailureMechanism();

            var calculationObserver = mocks.StrictMock <IObserver>();

            calculationObserver.Expect(o => o.UpdateObserver());

            mocks.ReplayAll();

            var calculationForFirstTargetProbability  = new DuneLocationCalculationsForTargetProbability(0.1);
            var calculationForSecondTargetProbability = new DuneLocationCalculationsForTargetProbability(0.01);
            var calculations = new ObservableList <DuneLocationCalculationsForTargetProbability>
            {
                calculationForFirstTargetProbability,
                calculationForSecondTargetProbability
            };

            calculations.Attach(calculationObserver);

            var parentContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculations,
                                                                                                          failureMechanism,
                                                                                                          assessmentSection);

            var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationForFirstTargetProbability,
                                                                                             failureMechanism,
                                                                                             assessmentSection);

            // Call
            info.OnNodeRemoved(context, parentContext);

            // Assert
            Assert.AreEqual(1, calculations.Count);
            CollectionAssert.DoesNotContain(calculations, calculationForFirstTargetProbability);
        }