public void SaveProjectAs_ValidPathToLockedFile_ThrowsUpdateStorageException() { // Setup string tempProjectFilePath = Path.Combine(workingDirectory, nameof(SaveProjectAs_ValidPathToLockedFile_ThrowsUpdateStorageException)); RiskeerProject project = CreateProject(); var storage = new StorageSqLite(); storage.StageProject(project); using (var fileDisposeHelper = new FileDisposeHelper(tempProjectFilePath)) { try { fileDisposeHelper.LockFiles(); // Call void Call() => storage.SaveProjectAs(tempProjectFilePath); // Assert var exception = Assert.Throws <StorageException>(Call); Assert.IsInstanceOf <Exception>(exception); Assert.IsInstanceOf <IOException>(exception.InnerException); Assert.IsInstanceOf <Exception>(exception); Assert.AreEqual("Het doelbestand is momenteel in gebruik.", exception.Message); } finally { CallGarbageCollector(); } } }
public void WriteAndReadProject() { var testProjectName = @"D:\Test\FirstProject.sqlite"; if (File.Exists(testProjectName)) { try { File.Delete(testProjectName); } catch (Exception e) { Assert.Fail("Unable to remove previous version of target file."); } } var project = TestDataGenerator.GenerateAsphaltProject(); var mainTreeEvent = project.EventTrees.First().MainTreeEvent; foreach (var waterLevel in project.HydraulicConditions.Select(hc => hc.WaterLevel).Distinct().OrderBy(w => w)) { mainTreeEvent.FixedFragilityCurve.Add(new FragilityCurveElement(waterLevel, (Probability)0.5)); } var storeProject = new StorageSqLite(); storeProject.StageProject(project); storeProject.SaveProjectAs(testProjectName); var retrievedProject = storeProject.LoadProject(testProjectName); AssertEqualProjects(project, retrievedProject); }
public void GivenRiskeerGui_WhenRunWithUnmigratedFileAndNoInquireContinuation_MigratedProjectNotSet(string sourceFilePath) { // Given var projectStore = new StorageSqLite(); var mocks = new MockRepository(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); inquiryHelper.Expect(helper => helper.InquireContinuation(null)) .IgnoreArguments() .Return(false); mocks.ReplayAll(); var projectMigrator = new ProjectMigrator(inquiryHelper); using (var gui = new GuiCore(new MainWindow(), projectStore, projectMigrator, new RiskeerProjectFactory(() => null), new GuiCoreSettings())) { // When gui.Run(sourceFilePath); // Then Assert.IsNull(gui.ProjectFilePath); Assert.IsNull(gui.Project); } mocks.VerifyAll(); }
public void GivenRiskeerGuiWithStorageSql_WhenRunWithMigratedFile_MigratedProjectSet(string sourceFilePath) { string targetFilePath = Path.Combine(workingDirectory, nameof(GivenRiskeerGuiWithStorageSql_WhenRunWithMigratedFile_MigratedProjectSet)); MigrateFile(sourceFilePath, targetFilePath); // Given var projectStore = new StorageSqLite(); var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock <IInquiryHelper>(); mocks.ReplayAll(); var projectMigrator = new ProjectMigrator(inquiryHelper); var guiCoreSettings = new GuiCoreSettings { ApplicationIcon = SystemIcons.Application }; using (var gui = new GuiCore(new MainWindow(), projectStore, projectMigrator, new RiskeerProjectFactory(() => null), guiCoreSettings)) { // When gui.Run(targetFilePath); // Then Assert.AreEqual(targetFilePath, gui.ProjectFilePath); Assert.NotNull(gui.Project); string expectedProjectName = Path.GetFileNameWithoutExtension(targetFilePath); Assert.AreEqual(expectedProjectName, gui.Project.Name); Assert.AreEqual("description", gui.Project.Description); Assert.IsInstanceOf <RiskeerProject>(gui.Project); } mocks.VerifyAll(); }
public void LoadProject_ReadProjectThrowsEntityReadException_ThrowsStorageException() { // Setup string tempProjectFilePath = Path.Combine(workingDirectory, nameof(LoadProject_ReadProjectThrowsEntityReadException_ThrowsStorageException)); var storage = new StorageSqLite(); RiskeerProject project = CreateProject(); // Precondition void Precondition() { SqLiteDatabaseHelper.CreateValidProjectDatabase(tempProjectFilePath, project); SqLiteDatabaseHelper.SetInvalidNumberOfAssessmentSectionEntities(tempProjectFilePath); } Assert.DoesNotThrow(Precondition); // Call void Call() => storage.LoadProject(tempProjectFilePath); // Assert var exception = Assert.Throws <StorageException>(Call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <EntityReadException>(innerException); var expectedMessage = $"Fout bij het lezen van bestand '{tempProjectFilePath}': {innerException.Message.FirstToLower()}"; Assert.AreEqual(expectedMessage, exception.Message); }
public void StageProject_ProjectIsNull_ThrowsArgumentNullException() { // Setup var storage = new StorageSqLite(); // Call void Call() => storage.StageProject(null); // Assert Assert.Throws <ArgumentNullException>(Call); }
public void DefaultConstructor_ExpectedValues() { // Call var storage = new StorageSqLite(); // Assert Assert.IsInstanceOf <IStoreProject>(storage); Assert.AreEqual("Alle projecten (*.risk;*.rtd)|*.risk;*.rtd|" + "Riskeerproject (*.risk)|*.risk|Ringtoetsproject (*.rtd)|*.rtd", storage.OpenProjectFileFilter); Assert.AreEqual("Riskeerproject (*.risk)|*.risk", storage.SaveProjectFileFilter); }
public void HasStagedProjectChanges_NoPathGiven_ReturnsTrue() { // Setup var storageSqLite = new StorageSqLite(); storageSqLite.StageProject(CreateProject()); // Call bool hasChanges = storageSqLite.HasStagedProjectChanges(null); // Assert Assert.IsTrue(hasChanges); }
public void HasStagedProjectChanges_NoProjectStaged_ThrowInvalidOperationException() { // Setup var storage = new StorageSqLite(); // Precondition Assert.IsFalse(storage.HasStagedProject); // Call void Call() => storage.HasStagedProjectChanges(null); // Assert string message = Assert.Throws <InvalidOperationException>(Call).Message; Assert.AreEqual("Call 'StageProject(IProject)' first before calling this method.", message); }
public void SaveProjectAs_ValidPathToExistingFile_DoesNotThrowException() { // Setup string tempProjectFilePath = Path.Combine(workingDirectory, nameof(SaveProjectAs_ValidPathToExistingFile_DoesNotThrowException)); RiskeerProject project = CreateProject(); var storage = new StorageSqLite(); storage.StageProject(project); using (File.Create(tempProjectFilePath)) {} // Call void Call() => storage.SaveProjectAs(tempProjectFilePath); // Assert Assert.DoesNotThrow(Call); }
public void SaveProjectAs_NoStagedProject_ThrowInvalidOperationException() { // Setup string tempProjectFilePath = TestHelper.GetScratchPadPath(nameof(SaveProjectAs_NoStagedProject_ThrowInvalidOperationException)); var storage = new StorageSqLite(); // Precondition Assert.IsFalse(storage.HasStagedProject); // Call void Call() => storage.SaveProjectAs(tempProjectFilePath); // Assert string message = Assert.Throws <InvalidOperationException>(Call).Message; Assert.AreEqual("Call 'StageProject(IProject)' first before calling this method.", message); }
/// <summary> /// Converts the <paramref name="project"/> into a new project database file. /// </summary> /// <param name="databaseFilePath">Path to database file.</param> /// <param name="project"><see cref="RiskeerProject"/> to save.</param> public static void CreateValidProjectDatabase(string databaseFilePath, RiskeerProject project) { try { var storageSqLite = new StorageSqLite(); storageSqLite.StageProject(project); storageSqLite.SaveProjectAs(databaseFilePath); } catch (Exception exception) { Assert.Fail("Precondition failed: creating database file failed due to {0}", exception); } finally { SQLiteConnection.ClearAllPools(); } }
public void SaveProjectAs_InvalidPath_ThrowsArgumentException(string invalidPath) { // Setup RiskeerProject project = CreateProject(); var storage = new StorageSqLite(); storage.StageProject(project); // Call void Call() => storage.SaveProjectAs(invalidPath); // Assert var exception = Assert.Throws <ArgumentException>(Call); Assert.AreEqual($"Fout bij het lezen van bestand '{invalidPath}': bestandspad mag niet " + "leeg of ongedefinieerd zijn.", exception.Message); }
public void HasStagedProjectChanges_ValidProjectLoaded_ReturnsFalse() { // Setup var storageSqLite = new StorageSqLite(); RiskeerProject storedProject = CreateProject(); string tempProjectFilePath = Path.Combine(workingDirectory, nameof(HasStagedProjectChanges_ValidProjectLoaded_ReturnsFalse)); SqLiteDatabaseHelper.CreateValidProjectDatabase(tempProjectFilePath, storedProject); IProject loadedProject = storageSqLite.LoadProject(tempProjectFilePath); storageSqLite.StageProject(loadedProject); // Call bool hasChanges = storageSqLite.HasStagedProjectChanges(tempProjectFilePath); // Assert Assert.IsFalse(hasChanges); }
public void HasStagedProjectChanges_InvalidPath_ThrowsArgumentException() { // Setup var storage = new StorageSqLite(); storage.StageProject(CreateProject()); string path = Path.Combine(testPath, "ValidCharacteristics.csv"); char[] invalidCharacters = Path.GetInvalidPathChars(); string corruptPath = path.Replace('V', invalidCharacters[0]); // Call void Call() => storage.HasStagedProjectChanges(corruptPath); // Assert Assert.Throws <ArgumentException>(Call); }
public void HasStagedProjectChanges_ValidProjectLoadedWithAffectedChange_ReturnsTrue() { // Setup var storageSqLite = new StorageSqLite(); RiskeerProject storedProject = RiskeerProjectTestHelper.GetFullTestProject(); const string changedDescription = "some description"; string tempProjectFilePath = Path.Combine(workingDirectory, nameof(HasStagedProjectChanges_ValidProjectLoadedWithAffectedChange_ReturnsTrue)); SqLiteDatabaseHelper.CreateValidProjectDatabase(tempProjectFilePath, storedProject); IProject loadedProject = storageSqLite.LoadProject(tempProjectFilePath); loadedProject.Description = changedDescription; storageSqLite.StageProject(loadedProject); // Call bool hasChanges = storageSqLite.HasStagedProjectChanges(tempProjectFilePath); // Assert Assert.IsTrue(hasChanges); }
public void HasStagedProjectChanges_SavedToEmptyDatabaseFile_ReturnsFalse() { // Setup var storage = new StorageSqLite(); string tempProjectFilePath = Path.Combine(workingDirectory, nameof(HasStagedProjectChanges_SavedToEmptyDatabaseFile_ReturnsFalse)); RiskeerProject project = CreateProject(); // Precondition, required to set the connection string storage.StageProject(project); void Precondition() => storage.SaveProjectAs(tempProjectFilePath); Assert.DoesNotThrow(Precondition, "Precondition failed: creating database file failed"); storage.StageProject(project); // Call bool hasChanges = storage.HasStagedProjectChanges(tempProjectFilePath); // Assert Assert.IsFalse(hasChanges); }
public void LoadProject_ValidDatabase_ReturnsProject() { // Setup string tempProjectFilePath = Path.Combine(workingDirectory, nameof(LoadProject_ValidDatabase_ReturnsProject)); string projectName = Path.GetFileNameWithoutExtension(tempProjectFilePath); var storage = new StorageSqLite(); RiskeerProject project = CreateProject(); project.Description = "<some description>"; // Precondition SqLiteDatabaseHelper.CreateValidProjectDatabase(tempProjectFilePath, project); // Call IProject loadedProject = storage.LoadProject(tempProjectFilePath); // Assert Assert.IsInstanceOf <RiskeerProject>(loadedProject); Assert.AreEqual(projectName, loadedProject.Name); Assert.AreEqual(project.Description, loadedProject.Description); }
public void GivenRiskeerGui_WhenRunWithUnmigratedFileAndInquireContinuation_MigratedProjectSet(string sourceFilePath) { // Given string targetFilePath = Path.Combine(workingDirectory, nameof(GivenRiskeerGui_WhenRunWithUnmigratedFileAndInquireContinuation_MigratedProjectSet)); var projectStore = new StorageSqLite(); var mocks = new MockRepository(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); inquiryHelper.Expect(helper => helper.InquireContinuation(null)) .IgnoreArguments() .Return(true); inquiryHelper.Expect(helper => helper.GetTargetFileLocation(null, null)) .IgnoreArguments() .Return(targetFilePath); mocks.ReplayAll(); var projectMigrator = new ProjectMigrator(inquiryHelper); var guiCoreSettings = new GuiCoreSettings { ApplicationIcon = SystemIcons.Application }; using (var gui = new GuiCore(new MainWindow(), projectStore, projectMigrator, new RiskeerProjectFactory(() => null), guiCoreSettings)) { // When gui.Run(sourceFilePath); // Then Assert.AreEqual(targetFilePath, gui.ProjectFilePath); string expectedProjectName = Path.GetFileNameWithoutExtension(targetFilePath); Assert.AreEqual(expectedProjectName, gui.Project.Name); Assert.AreEqual("description", gui.Project.Description); Assert.IsInstanceOf <RiskeerProject>(gui.Project); } mocks.VerifyAll(); }
public GuiProjectServices(GuiViewModel guiViewModel) { this.guiViewModel = guiViewModel; storageSqLite = new StorageSqLite(); }