Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs =================================================================== diff -u -r4e65fa5d8abdf1c0a9238492cdbcd7d2b3fa2d0f -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs (.../StorageSqLiteTest.cs) (revision 4e65fa5d8abdf1c0a9238492cdbcd7d2b3fa2d0f) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs (.../StorageSqLiteTest.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -93,7 +93,7 @@ var expectedInnerExceptionMessage = "An error occurred while executing the command definition. See the inner exception for details."; var expectedInnerExceptionInnerExceptionMessage = "SQL logic error or missing database\r\nno such table: ProjectEntity"; - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { TestDelegate precondition = () => SqLiteDatabaseHelper.CreateDatabaseFile(tempRingtoetsFile, SqLiteDatabaseHelper.GetCorruptSchema()); Assert.DoesNotThrow(precondition, "Precondition failed: creating corrupt database file failed"); @@ -111,6 +111,7 @@ Assert.IsInstanceOf(exception.InnerException.InnerException); Assert.AreEqual(expectedInnerExceptionInnerExceptionMessage, exception.InnerException.InnerException.Message); + CallGarbageCollector(); } } @@ -125,7 +126,7 @@ projectMock.Description = ""; projectMock.StorageId = 1L; - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, projectMock); @@ -138,6 +139,7 @@ Assert.AreEqual(1L, loadedProject.StorageId); Assert.AreEqual(projectName, loadedProject.Name); Assert.AreEqual(projectMock.Description, loadedProject.Description); + CallGarbageCollector(); } } @@ -166,13 +168,14 @@ // Setup var storage = new StorageSqLite(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, null); // Assert Assert.Throws(test); + CallGarbageCollector(); } } @@ -183,13 +186,14 @@ var project = new Project(); var storage = new StorageSqLite(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, project); // Assert Assert.DoesNotThrow(test); + CallGarbageCollector(); } } @@ -200,7 +204,7 @@ var project = new Project(); var storage = new StorageSqLite(); - using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) { fileDisposeHelper.Create(); @@ -209,6 +213,7 @@ // Assert Assert.DoesNotThrow(test); + CallGarbageCollector(); } } @@ -220,7 +225,7 @@ var project = new Project(); var storage = new StorageSqLite(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, project); @@ -236,6 +241,7 @@ Assert.IsInstanceOf(exception.InnerException); Assert.IsInstanceOf(exception); Assert.AreEqual(expectedMessage, exception.Message); + CallGarbageCollector(); } } @@ -265,7 +271,7 @@ var storage = new StorageSqLite(); Project storedProject = new Project(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); @@ -275,6 +281,7 @@ // Assert Assert.Throws(test); + CallGarbageCollector(); } } @@ -322,7 +329,7 @@ var expectedMessage = String.Format(@"Fout bij het schrijven naar bestand '{0}'{1}: {2}", tempRingtoetsFile, "", String.Format("Het object '{0}' met id '{1}' is niet gevonden.", "project", projectWithIncorrectStorageId.StorageId)); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, savedProject); @@ -333,6 +340,7 @@ // Assert StorageException exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); + CallGarbageCollector(); } } @@ -351,7 +359,7 @@ var expectedInnerExceptionInnerExceptionMessage = "SQL logic error or missing database" + Environment.NewLine + "no such table: ProjectEntity"; - using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) { fileDisposeHelper.Create(); @@ -371,6 +379,7 @@ Assert.IsInstanceOf(exception.InnerException.InnerException); Assert.AreEqual(expectedInnerExceptionInnerExceptionMessage, exception.InnerException.InnerException.Message); + CallGarbageCollector(); } } @@ -387,7 +396,7 @@ }; var storage = new StorageSqLite(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { TestDelegate precondition = () => storage.SaveProjectAs(tempRingtoetsFile, project); Assert.DoesNotThrow(precondition, String.Format("Precondition: file '{0}' must be a valid Ringtoets database file.", tempRingtoetsFile)); @@ -398,6 +407,7 @@ // Assert Assert.DoesNotThrow(test); Assert.AreEqual(projectName, project.Name); + CallGarbageCollector(); } } @@ -425,7 +435,7 @@ StorageSqLite storageSqLite = new StorageSqLite(); Project storedProject = new Project(); - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -435,6 +445,7 @@ // Assert Assert.IsFalse(hasChanges); + CallGarbageCollector(); } } @@ -446,7 +457,7 @@ Project storedProject = new Project(); var changedName = "some name"; - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -457,6 +468,7 @@ // Assert Assert.IsFalse(hasChanges); + CallGarbageCollector(); } } @@ -468,7 +480,7 @@ Project storedProject = new Project(); var changedDescription = "some description"; - using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (new FileDisposeHelper(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -479,6 +491,7 @@ // Assert Assert.IsTrue(hasChanges); + CallGarbageCollector(); } } @@ -492,7 +505,7 @@ mockRepository.ReplayAll(); var storage = new StorageSqLite(); - using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) { fileDisposeHelper.Create(); @@ -505,20 +518,15 @@ // Assert Assert.IsFalse(hasChanges); + CallGarbageCollector(); } mockRepository.VerifyAll(); } - } - internal class FileDisposeHelperGarbageCollected : FileDisposeHelper, IDisposable - { - public FileDisposeHelperGarbageCollected(string filePath) : base(filePath) {} - - void IDisposable.Dispose() + private static void CallGarbageCollector() { GC.Collect(); GC.WaitForPendingFinalizers(); - base.Dispose(); } } } \ No newline at end of file Index: Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs (.../FileDisposeHelperTest.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs (.../FileDisposeHelperTest.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -12,9 +12,11 @@ { // Setup string filePath = "doesNotExist.tmp"; - Assert.IsFalse(File.Exists(filePath), String.Format("Precondition failed: File '{0}' should not exist", filePath)); FileDisposeHelper disposeHelper = null; + // Precondition + Assert.IsFalse(File.Exists(filePath), String.Format("Precondition failed: File '{0}' should not exist", filePath)); + // Call TestDelegate test = () => disposeHelper = new FileDisposeHelper(filePath); @@ -33,6 +35,7 @@ try { + // Precondition using (File.Create(filePath)) {} Assert.IsTrue(File.Exists(filePath), String.Format("Precondition failed: File '{0}' should exist", filePath)); @@ -78,6 +81,52 @@ } [Test] + public void CreateFile_InvalidPath_DoesNotThrowException() + { + // Setup + string filePath = String.Empty; + + TestDelegate test = () => new FileDisposeHelper(filePath); + + // Assert + Assert.DoesNotThrow(test); + } + + [Test] + public void CreateFile_MultipleFiles_CreatesFiles() + { + // Setup + var filePaths = new[] + { + "willExist.tmp", + "alsoWillExist.tmp" + }; + + try + { + // Call + using (var fileDisposeHelper = new FileDisposeHelper(filePaths)) + { + fileDisposeHelper.Create(); + + // Assert + foreach (var filePath in filePaths) + { + Assert.IsTrue(File.Exists(filePath)); + } + } + } + catch (Exception exception) + { + foreach (var filePath in filePaths) + { + File.Delete(filePath); + } + Assert.Fail(exception.Message); + } + } + + [Test] public void Dispose_InvalidPath_DoesNotThrowException() { // Setup Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs (.../ExceedanceProbabilityCalculationAlphaOutput.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs (.../ExceedanceProbabilityCalculationAlphaOutput.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -32,7 +32,7 @@ /// /// The ring combine method used. /// The presentation section id used. - /// The main mechanism id. + /// The main mechanism id used. /// The main mechanism combine method used. /// The mechanism id used. /// The section id used. Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutputBase.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutputBase.cs (.../ExceedanceProbabilityCalculationOutputBase.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutputBase.cs (.../ExceedanceProbabilityCalculationOutputBase.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -22,7 +22,7 @@ namespace Ringtoets.HydraRing.Calculation.Data.Output { /// - /// Base class for ExceedanceProbabilityCalculationOutputs. + /// Base class for exceedance probability calculation output. /// public abstract class ExceedanceProbabilityCalculationOutputBase { Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs (.../ExceedanceProbabilityCalculationAlphaOutputTest.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs (.../ExceedanceProbabilityCalculationAlphaOutputTest.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -50,7 +50,6 @@ sectionId, layerId, alternativeId, variableId, loadVariableId, alpha); // Assert - Assert.IsNotNull(exceedanceProbabilityCalculationOutput); Assert.AreEqual(ringCombinMethod, exceedanceProbabilityCalculationOutput.RingCombinMethod); Assert.AreEqual(presentationSectionId, exceedanceProbabilityCalculationOutput.PresentationSectionId); Assert.AreEqual(mainMechanismId, exceedanceProbabilityCalculationOutput.MainMechanismId); Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputBaseTest.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputBaseTest.cs (.../ExceedanceProbabilityCalculationOutputBaseTest.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputBaseTest.cs (.../ExceedanceProbabilityCalculationOutputBaseTest.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -47,7 +47,6 @@ sectionId, layerId, alternativeId); // Assert - Assert.IsNotNull(exceedanceProbabilityCalculationOutput); Assert.AreEqual(ringCombinMethod, exceedanceProbabilityCalculationOutput.RingCombinMethod); Assert.AreEqual(presentationSectionId, exceedanceProbabilityCalculationOutput.PresentationSectionId); Assert.AreEqual(mainMechanismId, exceedanceProbabilityCalculationOutput.MainMechanismId); Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs =================================================================== diff -u -r0467e8cd28578cf205b473d3830dbd02adb29feb -r4477e75623600b68603b5f96175eea2431fe1cd5 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs (.../ExceedanceProbabilityCalculationOutputTest.cs) (revision 0467e8cd28578cf205b473d3830dbd02adb29feb) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs (.../ExceedanceProbabilityCalculationOutputTest.cs) (revision 4477e75623600b68603b5f96175eea2431fe1cd5) @@ -48,7 +48,6 @@ sectionId, layerId, alternativeId, beta); // Assert - Assert.IsNotNull(exceedanceProbabilityCalculationOutput); Assert.AreEqual(ringCombinMethod, exceedanceProbabilityCalculationOutput.RingCombinMethod); Assert.AreEqual(presentationSectionId, exceedanceProbabilityCalculationOutput.PresentationSectionId); Assert.AreEqual(mainMechanismId, exceedanceProbabilityCalculationOutput.MainMechanismId);