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 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); } }
public void ForeColor_DuneLocationsPresent_ReturnControlText() { // Setup var failureMechanism = new DuneErosionFailureMechanism(); failureMechanism.SetDuneLocations(new[] { new TestDuneLocation() }); var calculationsGroupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext( new ObservableList <DuneLocationCalculationsForTargetProbability>(), failureMechanism, new AssessmentSectionStub()); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); // Call Color textColor = info.ForeColor(calculationsGroupContext); // Assert Assert.AreEqual(Color.FromKnownColor(KnownColor.ControlText), textColor); } }
public void CreateFileExporter_Always_ReturnFileExporter() { // Setup var mocks = new MockRepository(); var assessmentSection = mocks.Stub <IAssessmentSection>(); mocks.ReplayAll(); var context = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(new ObservableList <DuneLocationCalculationsForTargetProbability>(), new DuneErosionFailureMechanism(), assessmentSection); using (var plugin = new DuneErosionPlugin()) { ExportInfo info = GetExportInfo(plugin); // Call IFileExporter fileExporter = info.CreateFileExporter(context, "test"); // Assert Assert.IsInstanceOf <DuneLocationCalculationsExporter>(fileExporter); } mocks.VerifyAll(); }
public void IsEnabled_CalculationsWithoutOutput_ReturnFalse() { // Setup var mocks = new MockRepository(); var assessmentSection = mocks.Stub <IAssessmentSection>(); mocks.ReplayAll(); var failureMechanism = new DuneErosionFailureMechanism(); failureMechanism.SetDuneLocations(new[] { new TestDuneLocation() }); var context = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(new ObservableList <DuneLocationCalculationsForTargetProbability>(), failureMechanism, assessmentSection); using (var plugin = new DuneErosionPlugin()) { ExportInfo info = GetExportInfo(plugin); // Call bool isEnabled = info.IsEnabled(context); // Assert Assert.IsFalse(isEnabled); } mocks.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 ContextMenuStrip_Always_CallsContextMenuBuilderMethods() { // Setup var mockRepository = new MockRepository(); IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mockRepository); var orderedMockRepository = new MockRepository(); var menuBuilder = orderedMockRepository.StrictMock <IContextMenuBuilder>(); using (orderedMockRepository.Ordered()) { menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddExportItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddDeleteChildrenItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.Build()).Return(null); } orderedMockRepository.ReplayAll(); var nodeData = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext( new ObservableList <DuneLocationCalculationsForTargetProbability>(), new DuneErosionFailureMechanism(), assessmentSection); using (var treeViewControl = new TreeViewControl()) { var gui = mockRepository.Stub <IGui>(); gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); gui.Stub(g => g.ViewHost).Return(mockRepository.Stub <IViewHost>()); mockRepository.ReplayAll(); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); plugin.Gui = gui; // Call info.ContextMenuStrip(nodeData, null, treeViewControl); } } // Assert orderedMockRepository.VerifyAll(); mockRepository.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 ContextMenuStrip_Always_AddCustomItems() { // Setup IAssessmentSection assessmentSection = new AssessmentSectionStub(); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); var nodeData = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext( new ObservableList <DuneLocationCalculationsForTargetProbability>(), new DuneErosionFailureMechanism(), assessmentSection); var mockRepository = new MockRepository(); using (var treeViewControl = new TreeViewControl()) { IGui gui = StubFactory.CreateGuiStub(mockRepository); gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(menuBuilder); gui.Stub(cmp => cmp.MainWindow).Return(mockRepository.Stub <IMainWindow>()); mockRepository.ReplayAll(); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); plugin.Gui = gui; // Call using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // Assert Assert.AreEqual(10, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuAddTargetProbabilityIndex, "Doelkans toevoegen", "Voeg een nieuwe doelkans toe aan deze map.", RiskeerCommonFormsResources.GenericInputOutputIcon, false); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateAllIndex, "Alles be&rekenen", "Er is geen hydraulische belastingendatabase geïmporteerd.", RiskeerCommonFormsResources.CalculateAllIcon, false); } } } // Assert mockRepository.VerifyAll(); }
public void ContextMenuStrip_NoDuneLocationsPresent_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup var failureMechanism = new DuneErosionFailureMechanism(); var assessmentSection = new AssessmentSectionStub { HydraulicBoundaryDatabase = { FilePath = validFilePath } }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); var groupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(new ObservableList <DuneLocationCalculationsForTargetProbability>(), failureMechanism, assessmentSection); var mocks = new MockRepository(); using (var treeViewControl = new TreeViewControl()) { var gui = mocks.Stub <IGui>(); gui.Stub(cmp => cmp.Get(groupContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); gui.Stub(g => g.ViewHost).Return(mocks.Stub <IViewHost>()); mocks.ReplayAll(); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); plugin.Gui = gui; // Call using (ContextMenuStrip contextMenu = info.ContextMenuStrip(groupContext, null, treeViewControl)) { // Assert ToolStripItem contextMenuItem = contextMenu.Items[contextMenuCalculateAllIndex]; StringAssert.Contains("Geen van de locaties is geschikt voor een hydraulische belastingenberekening.", contextMenuItem.ToolTipText); Assert.IsFalse(contextMenuItem.Enabled); } } } mocks.VerifyAll(); }
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); } }
public void ContextMenuStrip_HydraulicBoundaryDatabaseNotLinked_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup var duneLocation = new TestDuneLocation("Test"); var failureMechanism = new DuneErosionFailureMechanism(); var assessmentSection = new AssessmentSectionStub(); failureMechanism.SetDuneLocations(new[] { duneLocation }); var groupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(new ObservableList <DuneLocationCalculationsForTargetProbability>(), failureMechanism, assessmentSection); var mocks = new MockRepository(); using (var treeViewControl = new TreeViewControl()) { var gui = mocks.Stub <IGui>(); gui.Stub(cmp => cmp.Get(groupContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); gui.Stub(g => g.ViewHost).Return(mocks.Stub <IViewHost>()); mocks.ReplayAll(); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); plugin.Gui = gui; // Call using (ContextMenuStrip contextMenu = info.ContextMenuStrip(groupContext, null, treeViewControl)) { // Assert ToolStripItem contextMenuItem = contextMenu.Items[contextMenuCalculateAllIndex]; StringAssert.Contains("Er is geen hydraulische belastingendatabase geïmporteerd.", contextMenuItem.ToolTipText); Assert.IsFalse(contextMenuItem.Enabled); } } } mocks.VerifyAll(); }
public void CanDrop_DraggedDataOfUnsupportedDataType_ReturnsFalse() { // Setup using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); var targetData = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext( new ObservableList <DuneLocationCalculationsForTargetProbability>(), new DuneErosionFailureMechanism(), new AssessmentSectionStub()); // Call bool canDrop = info.CanDrop(new object(), targetData); // Assert Assert.IsFalse(canDrop); } }
public void Constructor_ExpectedValues() { // Setup var mockRepository = new MockRepository(); var assessmentSection = mockRepository.Stub <IAssessmentSection>(); mockRepository.ReplayAll(); var calculations = new ObservableList <DuneLocationCalculationsForTargetProbability>(); var failureMechanism = new DuneErosionFailureMechanism(); // Call var context = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext( calculations, failureMechanism, assessmentSection); // Assert Assert.IsInstanceOf <ObservableWrappedObjectContextBase <ObservableList <DuneLocationCalculationsForTargetProbability> > >(context); Assert.AreSame(calculations, context.WrappedData); Assert.AreSame(failureMechanism, context.FailureMechanism); Assert.AreSame(assessmentSection, context.AssessmentSection); mockRepository.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); }
public void GivenValidCalculations_WhenCalculatingAllFromContextMenu_ThenAllCalculationsScheduled() { // Given var assessmentSection = new AssessmentSectionStub { HydraulicBoundaryDatabase = { FilePath = validFilePath } }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); var failureMechanism = new DuneErosionFailureMechanism { DuneLocationCalculationsForUserDefinedTargetProbabilities = { new DuneLocationCalculationsForTargetProbability(0.1), new DuneLocationCalculationsForTargetProbability(0.01) } }; var duneLocation = new TestDuneLocation("Test"); failureMechanism.SetDuneLocations(new[] { duneLocation }); var groupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities, failureMechanism, assessmentSection); var mocks = new MockRepository(); using (var treeViewControl = new TreeViewControl()) { IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mocks); var gui = mocks.Stub <IGui>(); gui.Stub(g => g.MainWindow).Return(mainWindow); gui.Stub(cmp => cmp.Get(groupContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); gui.Stub(g => g.DocumentViewController).Return(mocks.Stub <IDocumentViewController>()); gui.Stub(g => g.ViewHost).Return(mocks.Stub <IViewHost>()); var calculatorFactory = mocks.Stub <IHydraRingCalculatorFactory>(); var dunesBoundaryConditionsCalculator = new TestDunesBoundaryConditionsCalculator { Converged = false }; calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull)) .WhenCalled(invocation => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), (HydraRingCalculationSettings)invocation.Arguments[0]); }) .Return(dunesBoundaryConditionsCalculator).Repeat.Times(2); mocks.ReplayAll(); using (var plugin = new DuneErosionPlugin()) { TreeNodeInfo info = GetInfo(plugin); plugin.Gui = gui; plugin.Activate(); using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(groupContext, null, treeViewControl)) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // When void Call() => contextMenuAdapter.Items[contextMenuCalculateAllIndex].PerformClick(); // Then TestHelper.AssertLogMessages(Call, messages => { string[] msgs = messages.ToArray(); Assert.AreEqual(16, msgs.Length); const string calculationTypeDisplayName = "Hydraulische belastingen"; const string calculationDisplayName = "Hydraulische belastingenberekening"; HydraulicBoundaryLocationCalculationActivityLogTestHelper.AssertHydraulicBoundaryLocationCalculationMessages( duneLocation.Name, calculationTypeDisplayName, calculationDisplayName, "1/10", msgs, 0); HydraulicBoundaryLocationCalculationActivityLogTestHelper.AssertHydraulicBoundaryLocationCalculationMessages( duneLocation.Name, calculationTypeDisplayName, calculationDisplayName, "1/100", msgs, 8); }); } } } mocks.VerifyAll(); }