コード例 #1
0
        public void Import_IncorrectProbability_LogAndImportSoilModelToCollection()
        {
            // Setup
            string       validFilePath = Path.Combine(testDataPath, "incorrectProbability.soil");
            const string expectedAddDataProgressText = "Adding data...";

            var stochasticSoilModelCollection = new TestStochasticSoilModelCollection();

            var messageProvider = mocks.StrictMock <IImporterMessageProvider>();

            messageProvider.Expect(mp => mp.GetAddDataToModelProgressText())
            .Return(expectedAddDataProgressText);

            var transformedModel = mocks.Stub <IMechanismStochasticSoilModel>();

            transformer.Expect(t => t.Transform(Arg <StochasticSoilModel> .Is.NotNull))
            .Return(transformedModel);

            var updateStrategy = mocks.StrictMock <IStochasticSoilModelUpdateModelStrategy <IMechanismStochasticSoilModel> >();

            updateStrategy.Expect(u => u.UpdateModelWithImportedData(Arg <IMechanismStochasticSoilModel[]> .List.ContainsAll(new[]
            {
                transformedModel
            }),
                                                                     Arg <string> .Is.Equal(validFilePath)));
            var filter = mocks.StrictMock <IStochasticSoilModelMechanismFilter>();

            filter.Expect(f => f.IsValidForFailureMechanism(null))
            .IgnoreArguments()
            .Return(true)
            .Repeat
            .AtLeastOnce();
            mocks.ReplayAll();

            var importer = new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                stochasticSoilModelCollection,
                validFilePath,
                messageProvider,
                new StochasticSoilModelImporterConfiguration <IMechanismStochasticSoilModel>(
                    transformer,
                    filter,
                    updateStrategy));

            var importResult = false;

            // Call
            Action call = () => importResult = importer.Import();

            // Assert
            const string expectedLogMessage = "De som van de kansen van voorkomen in het stochastich ondergrondmodel 'Name' is niet gelijk aan 100%.";
            Tuple <string, LogLevelConstant> expectedLogMessageAndLevel = Tuple.Create(expectedLogMessage, LogLevelConstant.Warn);

            TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessageAndLevel, 2);
            Assert.IsTrue(importResult);
        }
コード例 #2
0
        public void Import_CancelWhileAddingDataToModel_ContinuesImportAndLogs()
        {
            // Setup
            string    validFilePath = Path.Combine(testDataPath, "complete.soil");
            const int expectedNrOfStochasticSoilModels = 6;

            var stochasticSoilModelCollection = new TestStochasticSoilModelCollection();

            const string expectedAddDataProgressText = "Adding data...";
            var          messageProvider             = mocks.StrictMock <IImporterMessageProvider>();

            messageProvider.Expect(mp => mp.GetAddDataToModelProgressText())
            .Return(expectedAddDataProgressText);
            var updateStrategy = mocks.StrictMock <IStochasticSoilModelUpdateModelStrategy <IMechanismStochasticSoilModel> >();

            updateStrategy.Expect(u => u.UpdateModelWithImportedData(Arg <IMechanismStochasticSoilModel[]> .List.ContainsAll(stochasticSoilModelCollection),
                                                                     Arg <string> .Is.Equal(validFilePath)));
            var filter = mocks.StrictMock <IStochasticSoilModelMechanismFilter>();

            filter.Expect(f => f.IsValidForFailureMechanism(null))
            .IgnoreArguments()
            .Return(true)
            .Repeat
            .Times(expectedNrOfStochasticSoilModels);
            mocks.ReplayAll();

            var importer = new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                stochasticSoilModelCollection,
                validFilePath,
                messageProvider,
                new StochasticSoilModelImporterConfiguration <IMechanismStochasticSoilModel>(
                    transformer,
                    filter,
                    updateStrategy));

            importer.SetProgressChanged((description, step, steps) =>
            {
                if (description.Contains(expectedAddDataProgressText))
                {
                    importer.Cancel();
                }
            });

            var importResult = false;

            // Call
            Action call = () => importResult = importer.Import();

            // Assert
            const string expectedMessage = "Huidige actie was niet meer te annuleren en is daarom voortgezet.";
            Tuple <string, LogLevelConstant> expectedLogMessageAndLevel = Tuple.Create(expectedMessage, LogLevelConstant.Warn);

            TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessageAndLevel, 2);
            Assert.IsTrue(importResult);
        }
コード例 #3
0
        public void Import_NonExistingFile_LogErrorReturnFalse()
        {
            // Setup
            var messageProvider = mocks.Stub <IImporterMessageProvider>();
            var filter          = mocks.Stub <IStochasticSoilModelMechanismFilter>();
            var updateStrategy  = mocks.Stub <IStochasticSoilModelUpdateModelStrategy <IMechanismStochasticSoilModel> >();

            mocks.ReplayAll();

            const string file          = "nonexisting.soil";
            var          collection    = new TestStochasticSoilModelCollection();
            string       validFilePath = Path.Combine(testDataPath, file);
            var          configuration = new StochasticSoilModelImporterConfiguration <IMechanismStochasticSoilModel>(transformer, filter, updateStrategy);

            var importer = new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                collection,
                validFilePath,
                messageProvider,
                configuration);

            var progress = 0;

            importer.SetProgressChanged((description, step, steps) =>
            {
                progress++;
            });

            var importResult = true;

            // Call
            Action call = () => importResult = importer.Import();

            // Assert
            TestHelper.AssertLogMessagesWithLevelAndLoggedExceptions(call, messages =>
            {
                Assert.AreEqual(1, messages.Count());
                Tuple <string, Level, Exception> expectedLog = messages.ElementAt(0);

                Assert.AreEqual(Level.Error, expectedLog.Item2);

                Exception loggedException = expectedLog.Item3;
                Assert.IsInstanceOf <CriticalFileReadException>(loggedException);
                Assert.AreEqual(loggedException.Message, expectedLog.Item1);
            });

            Assert.AreEqual(1, progress);
            Assert.IsFalse(importResult);
        }
コード例 #4
0
        public void Constructor_ConfigurationNull_ThrowsArgumentNullException()
        {
            // Setup
            var messageProvider = mocks.Stub <IImporterMessageProvider>();

            mocks.ReplayAll();

            var    collection = new TestStochasticSoilModelCollection();
            string filePath   = string.Empty;

            // Call
            TestDelegate call = () => new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                collection,
                filePath,
                messageProvider,
                null);

            // Assert
            string parameter = Assert.Throws <ArgumentNullException>(call).ParamName;

            Assert.AreEqual("configuration", parameter);
        }
コード例 #5
0
        public void Constructor_ValidArguments_ExpectedValues()
        {
            // Setup
            var messageProvider = mocks.Stub <IImporterMessageProvider>();
            var filter          = mocks.Stub <IStochasticSoilModelMechanismFilter>();
            var updateStrategy  = mocks.Stub <IStochasticSoilModelUpdateModelStrategy <IMechanismStochasticSoilModel> >();

            mocks.ReplayAll();

            var    collection    = new TestStochasticSoilModelCollection();
            string filePath      = string.Empty;
            var    configuration = new StochasticSoilModelImporterConfiguration <IMechanismStochasticSoilModel>(transformer, filter, updateStrategy);

            // Call
            var importer = new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                collection,
                filePath,
                messageProvider,
                configuration);

            // Assert
            Assert.IsInstanceOf <FileImporterBase <ObservableUniqueItemCollectionWithSourcePath <IMechanismStochasticSoilModel> > >(importer);
        }
コード例 #6
0
        public void Constructor_MessageProviderNull_ThrowsArgumentNullException()
        {
            // Setup
            var filter         = mocks.Stub <IStochasticSoilModelMechanismFilter>();
            var updateStrategy = mocks.Stub <IStochasticSoilModelUpdateModelStrategy <IMechanismStochasticSoilModel> >();

            mocks.ReplayAll();

            var    collection    = new TestStochasticSoilModelCollection();
            string filePath      = string.Empty;
            var    configuration = new StochasticSoilModelImporterConfiguration <IMechanismStochasticSoilModel>(transformer, filter, updateStrategy);

            // Call
            TestDelegate call = () => new StochasticSoilModelImporter <IMechanismStochasticSoilModel>(
                collection,
                filePath,
                null,
                configuration);

            // Assert
            string parameter = Assert.Throws <ArgumentNullException>(call).ParamName;

            Assert.AreEqual("messageProvider", parameter);
        }