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); }
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); }
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); }
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(); }
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(); }
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(); }
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(); } }
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(); }
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' }
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(); }
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(); }
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); }