public void GetAssessmentSection_AssessmentSectionFromActivityNull_ThrowsAssessmentSectionProviderException()
        {
            // Setup
            var mocks          = new MockRepository();
            var projectStorage = mocks.Stub <IStoreProject>();

            mocks.ReplayAll();

            using (var viewParent = new TestViewParentForm())
            {
                var provider = new AssessmentSectionProvider(viewParent, projectStorage);

                DialogBoxHandler = (name, wnd) =>
                {
                    // Expect an activity dialog which is automatically closed
                };

                // Call
                void Call() => provider.GetAssessmentSection("filePath");

                // Assert
                Assert.Throws <AssessmentSectionProviderException>(Call);
            }

            mocks.VerifyAll();
        }
        public void Calculate_ValidPathEmptyCalculationList_NoLog()
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = validFilePath
            };

            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase);

            var mocks             = new MockRepository();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            assessmentSection.Stub(a => a.HydraulicBoundaryDatabase)
            .Return(hydraulicBoundaryDatabase);
            mocks.ReplayAll();

            using (var viewParent = new TestViewParentForm())
            {
                var guiService = new DuneLocationCalculationGuiService(viewParent);

                // Call
                void Call() => guiService.Calculate(Enumerable.Empty <DuneLocationCalculation>(), assessmentSection, 0.01, "1/100");

                // Assert
                TestHelper.AssertLogMessagesCount(Call, 0);
            }

            mocks.VerifyAll();
        }
        public void CalculateWaveHeights_ValidPathOneCalculation_LogsMessages()
        {
            // Setup
            const string hydraulicLocationName = "name";
            const string calculationIdentifier = "1/100";

            var mocks = new MockRepository();
            IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks);

            var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>();

            calculatorFactory.Expect(cf => cf.CreateWaveHeightCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull))
            .WhenCalled(invocation =>
            {
                HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings(
                    HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase),
                    (HydraRingCalculationSettings)invocation.Arguments[0]);
            })
            .Return(new TestWaveHeightCalculator());
            mocks.ReplayAll();

            assessmentSection.HydraulicBoundaryDatabase.FilePath = validFilePath;
            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase);

            DialogBoxHandler = (name, wnd) =>
            {
                // Expect an activity dialog which is automatically closed
            };

            using (var viewParent = new TestViewParentForm())
                using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
                {
                    var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent);

                    // Call
                    void Call() =>
                    guiService.CalculateWaveHeights(new[]
                    {
                        new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(hydraulicLocationName))
                    }, assessmentSection, 0.01, calculationIdentifier);

                    // Assert
                    TestHelper.AssertLogMessages(Call, messages =>
                    {
                        string[] msgs = messages.ToArray();
                        Assert.AreEqual(8, msgs.Length);
                        string activityDescription = GetWaveHeightCalculationActivityDescription(hydraulicLocationName, calculationIdentifier);
                        Assert.AreEqual($"{activityDescription} is gestart.", msgs[0]);
                        CalculationServiceTestHelper.AssertValidationStartMessage(msgs[1]);
                        CalculationServiceTestHelper.AssertValidationEndMessage(msgs[2]);
                        CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[3]);
                        Assert.AreEqual($"Golfhoogte berekening voor locatie 'name' ({calculationIdentifier}) is niet geconvergeerd.", msgs[4]);
                        StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie", msgs[5]);
                        CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[6]);
                        Assert.AreEqual($"{activityDescription} is gelukt.", msgs[7]);
                    });
                }

            mocks.VerifyAll();
        }
        public void CalculateWaveHeights_ValidPathEmptyCalculationList_NoLog()
        {
            // Setup
            var mocks = new MockRepository();
            IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks);

            mocks.ReplayAll();

            assessmentSection.HydraulicBoundaryDatabase.FilePath = validFilePath;
            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase);

            DialogBoxHandler = (name, wnd) =>
            {
                // Expect an activity dialog which is automatically closed
            };

            using (var viewParent = new TestViewParentForm())
            {
                var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent);

                // Call
                void Call() => guiService.CalculateWaveHeights(Enumerable.Empty <HydraulicBoundaryLocationCalculation>(), assessmentSection, 0.01, "1/100");

                // Assert
                TestHelper.AssertLogMessagesCount(Call, 0);
            }

            mocks.VerifyAll();
        }
        public void CalculateForSelectedButton_OneCalculationSelected_CalculateForSelectedCalculationAndKeepOriginalSelection()
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = hydraulicBoundaryDatabaseFilePath
            };

            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase);

            var assessmentSection = mocks.Stub <IAssessmentSection>();

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

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

            var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>();

            calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(null))
            .IgnoreArguments()
            .Return(new TestDunesBoundaryConditionsCalculator());
            mocks.ReplayAll();

            IObservableEnumerable <DuneLocationCalculation> calculations = GenerateDuneLocationCalculations();
            var failureMechanism = new DuneErosionFailureMechanism();

            using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(calculations,
                                                                                        failureMechanism,
                                                                                        assessmentSection))
            {
                var    dataGridView            = (DataGridView)view.Controls.Find("dataGridView", true)[0];
                object originalDataSource      = dataGridView.DataSource;
                DataGridViewRowCollection rows = dataGridView.Rows;
                rows[0].Cells[calculateColumnIndex].Value = true;

                calculations.Attach(calculationsObserver);

                var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm);

                using (var viewParent = new TestViewParentForm())
                    using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
                    {
                        view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent);

                        // Call
                        buttonTester.Click();

                        // Assert
                        Assert.AreSame(originalDataSource, dataGridView.DataSource);

                        Assert.IsTrue((bool)rows[0].Cells[calculateColumnIndex].Value);
                        Assert.IsFalse((bool)rows[1].Cells[calculateColumnIndex].Value);
                    }
            }
        }
Exemple #6
0
        public void ImportOn_MultipleSupportedImportInfos_ShowsDialogWithOptions(bool hasFileFilterGenerator)
        {
            // Setup
            const string importInfoAName = "nameA";
            var          importInfoA     = new ImportInfo <object>
            {
                Name = importInfoAName,
                FileFilterGenerator = hasFileFilterGenerator ? new FileFilterGenerator("extensionA") : null
            };
            const string importInfoBName = "nameB";
            var          importInfoB     = new ImportInfo <object>
            {
                Name = importInfoBName,
                FileFilterGenerator = hasFileFilterGenerator ? new FileFilterGenerator("extensionB") : null
            };

            var mockRepository = new MockRepository();
            var inquiryHelper  = mockRepository.Stub <IInquiryHelper>();

            mockRepository.ReplayAll();

            var listViewItems = new ListViewItem[0];

            DialogBoxHandler = (name, wnd) =>
            {
                using (new FormTester(name))
                {
                    var listView = (ListView) new ControlTester("listViewItemTypes").TheObject;
                    listViewItems = listView.Items.OfType <ListViewItem>().ToArray();
                }
            };

            using (var form = new TestViewParentForm())
            {
                var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper);

                // Call
                importHandler.ImportOn(new object(), new ImportInfo[]
                {
                    importInfoA,
                    importInfoB
                });
            }

            // Assert
            Assert.AreEqual(2, listViewItems.Length);
            string expectedItemNameA = hasFileFilterGenerator
                                           ? $"{importInfoA.Name} (*.{importInfoA.FileFilterGenerator.Extension})"
                                           : importInfoA.Name;

            Assert.AreEqual(expectedItemNameA, listViewItems[0].Name);
            string expectedItemNameB = hasFileFilterGenerator
                                           ? $"{importInfoB.Name} (*.{importInfoB.FileFilterGenerator.Extension})"
                                           : importInfoB.Name;

            Assert.AreEqual(expectedItemNameB, listViewItems[1].Name);

            mockRepository.VerifyAll();
        }
Exemple #7
0
        public void ImportOn_SupportedImportInfoAndVerifyUpdatesUnsuccessful_ActivityNotCreated()
        {
            // Setup
            var generator    = new FileFilterGenerator();
            var targetObject = new object();

            var mockRepository = new MockRepository();
            var inquiryHelper  = mockRepository.Stub <IInquiryHelper>();

            inquiryHelper.Stub(ih => ih.GetSourceFileLocation(generator.Filter)).Return("/some/path");
            var fileImporter = mockRepository.Stub <IFileImporter>();

            mockRepository.ReplayAll();

            var isVerifyUpdatedCalled = false;

            using (var form = new TestViewParentForm())
            {
                var supportedImportInfo = new ImportInfo <object>
                {
                    CreateFileImporter = (o, s) =>
                    {
                        Assert.Fail("CreateFileImporter is not expected to be called when VerifyUpdates function returns false.");
                        return(fileImporter);
                    },
                    FileFilterGenerator = generator,
                    VerifyUpdates       = o =>
                    {
                        Assert.AreSame(o, targetObject);
                        isVerifyUpdatedCalled = true;
                        return(false);
                    }
                };

                var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper);

                // Call
                importHandler.ImportOn(targetObject, new ImportInfo[]
                {
                    supportedImportInfo
                });
            }

            // Assert
            Assert.IsTrue(isVerifyUpdatedCalled);
            mockRepository.VerifyAll();
        }
        public void GetAssessmentSection_ValidFilePath_ReturnsAssessmentSection()
        {
            // Setup
            using (var viewParent = new TestViewParentForm())
            {
                var    provider = new AssessmentSectionProvider(viewParent, new StorageSqLite());
                string filePath = Path.Combine(testDataPath, "project.risk");

                DialogBoxHandler = (name, wnd) =>
                {
                    // Expect an activity dialog which is automatically closed
                };

                // Call
                AssessmentSection assessmentSection = provider.GetAssessmentSection(filePath);

                // Assert
                Assert.IsNotNull(assessmentSection);
            }
        }
Exemple #9
0
        public void ImportOn_InquiryHelperReturnsNoPath_ImportCancelledWithLogMessage()
        {
            // Setup
            var generator    = new FileFilterGenerator();
            var targetObject = new object();

            var mockRepository = new MockRepository();
            var inquiryHelper  = mockRepository.Stub <IInquiryHelper>();

            inquiryHelper.Expect(ih => ih.GetSourceFileLocation(generator.Filter)).Return(null);
            var fileImporter = mockRepository.Stub <IFileImporter>();

            mockRepository.ReplayAll();

            using (var form = new TestViewParentForm())
            {
                var supportedImportInfo = new ImportInfo <object>
                {
                    CreateFileImporter = (o, s) =>
                    {
                        Assert.Fail("CreateFileImporter is not expected to be called when no file path is chosen.");
                        return(fileImporter);
                    },
                    FileFilterGenerator = generator,
                    VerifyUpdates       = o => true
                };

                var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper);

                // Call
                void Call() => importHandler.ImportOn(targetObject, new ImportInfo[]
                {
                    supportedImportInfo
                });

                // Assert
                TestHelper.AssertLogMessageIsGenerated(Call, "Importeren van gegevens is geannuleerd.");
            }

            mockRepository.VerifyAll();
        }
Exemple #10
0
        public void ShowDialog_ActivityProgressDialog_MinimumSizeSet()
        {
            // Setup
            DialogBoxHandler = (name, wnd) =>
            {
                var openedDialog = new FormTester(name);

                openedDialog.Close();
            };

            using (var dialogParent = new TestViewParentForm())
                using (var dialog = new ActivityProgressDialog(dialogParent, Enumerable.Empty <Activity>()))
                {
                    // Call
                    dialog.ShowDialog();

                    // Assert
                    Assert.AreEqual(520, dialog.MinimumSize.Width);
                    Assert.AreEqual(150, dialog.MinimumSize.Height);
                }
        }
Exemple #11
0
 public void Constructor_ExpectedValue()
 {
     // Call
     using (var dialogParent = new TestViewParentForm())
         using (var dialog = new ActivityProgressDialog(dialogParent, Enumerable.Empty <Activity>()))
         {
             // Assert
             Assert.IsInstanceOf <DialogBase>(dialog);
             Assert.IsNotNull(dialog.Icon);
             Assert.IsTrue(dialog.ShowIcon);
             Assert.AreEqual(0, dialog.MinimumSize.Width);  // Set during load
             Assert.AreEqual(0, dialog.MinimumSize.Height); // Set during load
             Assert.AreEqual(FormBorderStyle.FixedDialog, dialog.FormBorderStyle);
             Assert.AreEqual(FormStartPosition.CenterParent, dialog.StartPosition);
             Assert.IsFalse(dialog.ShowInTaskbar);
             Assert.IsTrue(dialog.ControlBox);
             Assert.IsFalse(dialog.MaximizeBox);
             Assert.IsFalse(dialog.MinimizeBox);
             Assert.IsNull(dialog.CancelButton);
         }
 }
        public void ImportHydraulicLocationConfigurationSettings_WithValidFilePath_RunsActivity()
        {
            // Setup
            string newHlcdFilePath = Path.Combine(testDataDirectory, "hlcdWithScenarioInformation.sqlite");

            var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);

            DataImportHelper.ImportHydraulicBoundaryDatabase(assessmentSection,
                                                             Path.Combine(testDataDirectory, "complete.sqlite"));

            HydraulicBoundaryDatabase hydraulicBoundaryDatabase = assessmentSection.HydraulicBoundaryDatabase;

            var mocks         = new MockRepository();
            var updateHandler = mocks.Stub <IHydraulicLocationConfigurationDatabaseUpdateHandler>();

            mocks.ReplayAll();

            DialogBoxHandler = (name, wnd) =>
            {
                // Activity closes itself
            };

            using (var viewParent = new TestViewParentForm())
            {
                var importHandler = new HydraulicLocationConfigurationDatabaseImportHandler(
                    viewParent, updateHandler, hydraulicBoundaryDatabase);

                // Call
                importHandler.ImportHydraulicLocationConfigurationSettings(
                    hydraulicBoundaryDatabase.HydraulicLocationConfigurationSettings,
                    newHlcdFilePath);
            }

            // Assert
            mocks.VerifyAll();
        }
        public void Calculate_ValidPathOneCalculation_LogsMessages()
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = validFilePath,
                HydraulicLocationConfigurationSettings =
                {
                    CanUsePreprocessor    = true,
                    UsePreprocessor       = true,
                    PreprocessorDirectory = validPreprocessorDirectory
                }
            };

            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase);

            const string calculationIdentifier = "1/100";
            const string duneLocationName      = "duneLocationName";

            var mocks             = new MockRepository();
            var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>();

            calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull))
            .WhenCalled(invocation =>
            {
                HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings(
                    HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase),
                    (HydraRingCalculationSettings)invocation.Arguments[0]);
            })
            .Return(new TestDunesBoundaryConditionsCalculator());
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            assessmentSection.Stub(a => a.HydraulicBoundaryDatabase)
            .Return(hydraulicBoundaryDatabase);
            mocks.ReplayAll();

            using (var viewParent = new TestViewParentForm())
                using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
                {
                    var guiService = new DuneLocationCalculationGuiService(viewParent);

                    // Call
                    void Call() =>
                    guiService.Calculate(new[]
                    {
                        new DuneLocationCalculation(new TestDuneLocation(duneLocationName))
                    }, assessmentSection, 0.01, calculationIdentifier);

                    // Assert
                    TestHelper.AssertLogMessages(Call, messages =>
                    {
                        string[] msgs = messages.ToArray();
                        Assert.AreEqual(8, msgs.Length);
                        Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{duneLocationName}' ({calculationIdentifier}) is gestart.", msgs[0]);
                        CalculationServiceTestHelper.AssertValidationStartMessage(msgs[1]);
                        CalculationServiceTestHelper.AssertValidationEndMessage(msgs[2]);
                        CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[3]);
                        Assert.AreEqual($"Hydraulische belastingenberekening voor locatie '{duneLocationName}' ({calculationIdentifier}) is niet geconvergeerd.", msgs[4]);
                        StringAssert.StartsWith("Hydraulische belastingenberekening is uitgevoerd op de tijdelijke locatie", msgs[5]);
                        CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[6]);
                        Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{duneLocationName}' ({calculationIdentifier}) is gelukt.", msgs[7]);
                    });
                }

            mocks.VerifyAll();
        }
        public void CalculateForSelectedButton_HydraulicBoundaryDatabaseWithUsePreprocessorFalse_CreateDunesBoundaryConditionsCalculatorCalledAsExpected()
        {
            // Setup
            const double targetProbability         = 0.01;
            var          hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = hydraulicBoundaryDatabaseFilePath,
                HydraulicLocationConfigurationSettings =
                {
                    CanUsePreprocessor    = true,
                    UsePreprocessor       = false,
                    PreprocessorDirectory = "InvalidPreprocessorDirectory"
                }
            };

            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase);

            var assessmentSection = mocks.Stub <IAssessmentSection>();

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

            var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>();
            var dunesBoundaryConditionsCalculator = new TestDunesBoundaryConditionsCalculator();

            calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull))
            .WhenCalled(invocation =>
            {
                HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings(
                    HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase),
                    (HydraRingCalculationSettings)invocation.Arguments[0]);
            })
            .Return(dunesBoundaryConditionsCalculator);
            mocks.ReplayAll();

            var failureMechanism = new DuneErosionFailureMechanism();

            using (var view = new DuneLocationCalculationsView(GenerateDuneLocationCalculations(),
                                                               failureMechanism,
                                                               assessmentSection,
                                                               () => targetProbability,
                                                               () => "1/100"))
            {
                testForm.Controls.Add(view);
                testForm.Show();
                var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0];
                DataGridViewRowCollection rows = dataGridView.Rows;
                rows[0].Cells[calculateColumnIndex].Value = true;

                var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm);

                using (var viewParent = new TestViewParentForm())
                    using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
                    {
                        view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent);

                        // Call
                        buttonTester.Click();

                        // Assert
                        DunesBoundaryConditionsCalculationInput dunesBoundaryConditionsCalculationInput = dunesBoundaryConditionsCalculator.ReceivedInputs.First();

                        Assert.AreEqual(1, dunesBoundaryConditionsCalculationInput.HydraulicBoundaryLocationId);
                        Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(targetProbability), dunesBoundaryConditionsCalculationInput.Beta);
                    }
            }
        }
        public void CalculateForSelectedButton_OneCalculationSelected_CalculateForSelectedCalculationAndLogsMessages()
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
            {
                FilePath = hydraulicBoundaryDatabaseFilePath
            };

            HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase);

            var assessmentSection = mocks.Stub <IAssessmentSection>();

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

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

            var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>();

            calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(null))
            .IgnoreArguments()
            .Return(new TestDunesBoundaryConditionsCalculator());
            mocks.ReplayAll();

            IObservableEnumerable <DuneLocationCalculation> calculations = GenerateDuneLocationCalculations();
            var failureMechanism = new DuneErosionFailureMechanism();

            using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(calculations,
                                                                                        failureMechanism,
                                                                                        assessmentSection))
            {
                var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0];
                DataGridViewRowCollection rows = dataGridView.Rows;
                rows[0].Cells[calculateColumnIndex].Value = true;

                calculations.Attach(calculationsObserver);

                var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm);

                using (var viewParent = new TestViewParentForm())
                    using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
                    {
                        view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent);

                        // Call
                        void Call() => buttonTester.Click();

                        // Assert
                        string expectedDuneLocationName = calculations.ElementAt(0).DuneLocation.Name;

                        TestHelper.AssertLogMessages(Call,
                                                     messages =>
                        {
                            List <string> messageList = messages.ToList();

                            // Assert
                            Assert.AreEqual(8, messageList.Count);
                            Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{expectedDuneLocationName}' (1/100) is gestart.", messageList[0]);
                            CalculationServiceTestHelper.AssertValidationStartMessage(messageList[1]);
                            CalculationServiceTestHelper.AssertValidationEndMessage(messageList[2]);
                            CalculationServiceTestHelper.AssertCalculationStartMessage(messageList[3]);
                            Assert.AreEqual($"Hydraulische belastingenberekening voor locatie '{expectedDuneLocationName}' (1/100) is niet geconvergeerd.", messageList[4]);
                            StringAssert.StartsWith("Hydraulische belastingenberekening is uitgevoerd op de tijdelijke locatie", messageList[5]);
                            CalculationServiceTestHelper.AssertCalculationEndMessage(messageList[6]);
                            Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{expectedDuneLocationName}' (1/100) is gelukt.", messageList[7]);
                        });
                    }
            }
        }
Exemple #16
0
        public void ImportOn_SupportedImportInfoAndVerifyUpdatesSuccessful_ExpectedImportInfoFunctionsCalledAndActivityCreated()
        {
            // Setup
            const string filePath     = "/some/path";
            var          generator    = new FileFilterGenerator();
            var          targetObject = new object();

            var mockRepository = new MockRepository();
            var inquiryHelper  = mockRepository.Stub <IInquiryHelper>();

            inquiryHelper.Expect(ih => ih.GetSourceFileLocation(generator.Filter)).Return(filePath);
            var fileImporter = mockRepository.Stub <IFileImporter>();

            mockRepository.ReplayAll();

            const string dataDescription            = "Random data";
            var          isCreateFileImporterCalled = false;
            var          isVerifyUpdatedCalled      = false;

            DialogBoxHandler = (name, wnd) =>
            {
                // Activity closes itself
            };

            using (var form = new TestViewParentForm())
            {
                var supportedImportInfo = new ImportInfo <object>
                {
                    Name = dataDescription,
                    CreateFileImporter = (o, s) =>
                    {
                        Assert.AreSame(o, targetObject);
                        Assert.AreEqual(filePath, s);
                        isCreateFileImporterCalled = true;
                        return(fileImporter);
                    },
                    FileFilterGenerator = generator,
                    VerifyUpdates       = o =>
                    {
                        Assert.AreSame(o, targetObject);
                        isVerifyUpdatedCalled = true;
                        return(true);
                    }
                };

                var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper);

                // Call
                void Call() => importHandler.ImportOn(targetObject, new ImportInfo[]
                {
                    supportedImportInfo
                });

                // Assert
                TestHelper.AssertLogMessagesAreGenerated(Call, new[]
                {
                    $"Importeren van '{dataDescription}' is gestart.",
                    $"Importeren van '{dataDescription}' is mislukt."
                });
            }

            // Assert
            Assert.IsTrue(isCreateFileImporterCalled);
            Assert.IsTrue(isVerifyUpdatedCalled);
            mockRepository.VerifyAll();
        }