예제 #1
0
        public void CloseViewForData_ForNonMatchingContext_ReturnsFalse()
        {
            // Setup
            const double targetProbability = 0.01;

            var context = new WaterLevelCalculationsForUserDefinedTargetProbabilityContext(
                new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability),
                new AssessmentSectionStub());

            var otherCalculations = new ObservableList <HydraulicBoundaryLocationCalculation>();

            using (var view = new DesignWaterLevelCalculationsView(otherCalculations,
                                                                   new AssessmentSectionStub(),
                                                                   () => targetProbability,
                                                                   () => "1/100"))
                using (var plugin = new RiskeerPlugin())
                {
                    view.Data = otherCalculations;

                    ViewInfo info = GetViewInfo(plugin);

                    // Call
                    bool closeForData = info.CloseForData(view, context);

                    // Assert
                    Assert.IsFalse(closeForData);
                }
        }
        public void CalculateForSelectedButton_OneSelected_CallsCalculateDesignWaterLevels()
        {
            // Setup
            IObservableEnumerable <HydraulicBoundaryLocationCalculation> hydraulicBoundaryLocationCalculations = GetTestHydraulicBoundaryLocationCalculations();

            DesignWaterLevelCalculationsView view = ShowFullyConfiguredDesignWaterLevelCalculationsView(hydraulicBoundaryLocationCalculations, testForm);

            DataGridViewControl       calculationsDataGridViewControl = GetCalculationsDataGridViewControl();
            DataGridViewRowCollection rows = calculationsDataGridViewControl.Rows;

            rows[0].Cells[calculateColumnIndex].Value = true;

            var guiService = mockRepository.StrictMock <IHydraulicBoundaryLocationCalculationGuiService>();

            HydraulicBoundaryLocationCalculation[] performedCalculations = null;
            guiService.Expect(ch => ch.CalculateDesignWaterLevels(null, null, int.MinValue, null)).IgnoreArguments().WhenCalled(
                invocation =>
            {
                performedCalculations = ((IEnumerable <HydraulicBoundaryLocationCalculation>)invocation.Arguments[0]).ToArray();
            });
            mockRepository.ReplayAll();

            view.CalculationGuiService = guiService;
            var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm);

            // Call
            buttonTester.Click();

            // Assert
            Assert.AreEqual(1, performedCalculations.Length);
            Assert.AreSame(hydraulicBoundaryLocationCalculations.First(), performedCalculations.First());
        }
        private static DesignWaterLevelCalculationsView ShowDesignWaterLevelCalculationsView(IObservableEnumerable <HydraulicBoundaryLocationCalculation> calculations,
                                                                                             IAssessmentSection assessmentSection,
                                                                                             double targetProbability,
                                                                                             string calculationIdentifier,
                                                                                             Form form)
        {
            var view = new DesignWaterLevelCalculationsView(calculations,
                                                            assessmentSection,
                                                            () => targetProbability,
                                                            () => calculationIdentifier);

            form.Controls.Add(view);
            form.Show();

            return(view);
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mockRepository);

            mockRepository.ReplayAll();

            // Call
            using (var view = new DesignWaterLevelCalculationsView(new ObservableList <HydraulicBoundaryLocationCalculation>(),
                                                                   assessmentSection,
                                                                   () => 0.01,
                                                                   () => "1/100"))
            {
                // Assert
                Assert.IsInstanceOf <HydraulicBoundaryCalculationsView>(view);
                Assert.IsNull(view.Data);
            }
        }
예제 #5
0
        public void CloseViewForData_ForOtherObjectType_ReturnsFalse()
        {
            // Setup
            var assessmentSectionA = new AssessmentSectionStub();

            using (var view = new DesignWaterLevelCalculationsView(new ObservableList <HydraulicBoundaryLocationCalculation>(),
                                                                   assessmentSectionA,
                                                                   () => 0.01,
                                                                   () => "1/100"))
                using (var plugin = new RiskeerPlugin())
                {
                    ViewInfo info = GetViewInfo(plugin);

                    // Call
                    bool closeForData = info.CloseForData(view, new object());

                    // Assert
                    Assert.IsFalse(closeForData);
                }
        }
예제 #6
0
        public void AfterCreate_WithGuiSet_SetsSpecificPropertiesToView()
        {
            // Setup
            var  mocks = new MockRepository();
            IGui gui   = StubFactory.CreateGuiStub(mocks);

            gui.Stub(g => g.ViewCommands).Return(mocks.Stub <IViewCommands>());
            gui.Stub(g => g.MainWindow).Return(mocks.Stub <IMainWindow>());
            gui.Stub(g => g.DocumentViewController).Return(mocks.Stub <IDocumentViewController>());
            gui.Stub(g => g.ProjectStore).Return(mocks.Stub <IStoreProject>());
            mocks.ReplayAll();

            double GetNormFunc() => 0.01;

            var assessmentSection = new AssessmentSectionStub();
            var calculations      = new ObservableList <HydraulicBoundaryLocationCalculation>();

            var context = new WaterLevelCalculationsForNormTargetProbabilityContext(calculations,
                                                                                    assessmentSection,
                                                                                    GetNormFunc);

            using (var view = new DesignWaterLevelCalculationsView(new ObservableList <HydraulicBoundaryLocationCalculation>(),
                                                                   new AssessmentSectionStub(),
                                                                   GetNormFunc,
                                                                   () => "1/100"))

                using (var plugin = new RiskeerPlugin())
                {
                    ViewInfo info = GetViewInfo(plugin);
                    plugin.Gui = gui;
                    plugin.Activate();

                    // Call
                    info.AfterCreate(view, context);

                    // Assert
                    Assert.IsInstanceOf <IHydraulicBoundaryLocationCalculationGuiService>(view.CalculationGuiService);
                }

            mocks.VerifyAll();
        }
        public void CalculateForSelectedButton_Always_CalculateDesignWaterLevelsCalledAsExpected()
        {
            // Setup
            const string databaseFilePath      = "DatabaseFilePath";
            const double targetProbability     = 0.01;
            const string calculationIdentifier = "1/100";

            var assessmentSection         = mockRepository.Stub <IAssessmentSection>();
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = databaseFilePath
            };

            assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase);
            assessmentSection.Stub(a => a.Id).Return(string.Empty);
            assessmentSection.Stub(a => a.FailureMechanismContribution)
            .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution());
            assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments();
            assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments();

            var guiService = mockRepository.StrictMock <IHydraulicBoundaryLocationCalculationGuiService>();

            IAssessmentSection assessmentSectionValue = null;

            HydraulicBoundaryLocationCalculation[] performedCalculations = null;
            double targetProbabilityValue     = double.NaN;
            string calculationIdentifierValue = null;

            guiService.Expect(ch => ch.CalculateDesignWaterLevels(null, null, int.MinValue, null)).IgnoreArguments().WhenCalled(
                invocation =>
            {
                performedCalculations      = ((IEnumerable <HydraulicBoundaryLocationCalculation>)invocation.Arguments[0]).ToArray();
                assessmentSectionValue     = (IAssessmentSection)invocation.Arguments[1];
                targetProbabilityValue     = (double)invocation.Arguments[2];
                calculationIdentifierValue = (string)invocation.Arguments[3];
            });

            mockRepository.ReplayAll();

            IObservableEnumerable <HydraulicBoundaryLocationCalculation> hydraulicBoundaryLocationCalculations = GetTestHydraulicBoundaryLocationCalculations();

            DesignWaterLevelCalculationsView view = ShowDesignWaterLevelCalculationsView(hydraulicBoundaryLocationCalculations,
                                                                                         assessmentSection,
                                                                                         targetProbability,
                                                                                         calculationIdentifier,
                                                                                         testForm);

            DataGridView calculationsDataGridView = GetCalculationsDataGridView();
            DataGridViewRowCollection rows        = calculationsDataGridView.Rows;

            rows[0].Cells[calculateColumnIndex].Value = true;

            view.CalculationGuiService = guiService;
            var button = new ButtonTester("CalculateForSelectedButton", testForm);

            // Call
            button.Click();

            // Assert
            Assert.AreEqual(calculationIdentifier, calculationIdentifierValue);
            Assert.AreSame(assessmentSection, assessmentSectionValue);
            Assert.AreEqual(targetProbability, targetProbabilityValue);
            Assert.AreEqual(1, performedCalculations.Length);
            Assert.AreSame(hydraulicBoundaryLocationCalculations.First(), performedCalculations.First());
        }