コード例 #1
0
        public void Perform_ValidTargetFileContext_ExpectedTemporaryFileCreatedAndTargetFileContextRestoredAfterwards(bool performWithExistingTargetFile)
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_ValidTargetFileContext_ExpectedTemporaryFileCreatedAndTargetFileContextRestoredAfterwards));
            string targetFilePath    = Path.Combine(writableDirectory, "targetFile.txt");
            string temporaryFilePath = Path.ChangeExtension(targetFilePath, temporaryFileExtension);

            using (new DirectoryDisposeHelper(testWorkDir, nameof(Perform_ValidTargetFileContext_ExpectedTemporaryFileCreatedAndTargetFileContextRestoredAfterwards)))
            {
                if (performWithExistingTargetFile)
                {
                    File.WriteAllText(targetFilePath, testContent);
                }

                var writer = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                // Call
                writer.Perform(() =>
                {
                    // Assert
                    Assert.IsFalse(File.Exists(targetFilePath));
                    Assert.IsTrue(File.Exists(temporaryFilePath));
                    Assert.AreEqual(performWithExistingTargetFile ? testContent : string.Empty, ReadAllText(temporaryFilePath));
                });

                Assert.False(File.Exists(temporaryFilePath));
            }
        }
コード例 #2
0
        public void Perform_TemporaryFileInUse_ExpectedExceptionThrown(bool performWithExistingTargetFile)
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_TemporaryFileInUse_ExpectedExceptionThrown));
            string targetFilePath    = Path.Combine(writableDirectory, "targetFile.txt");
            string temporaryFilePath = Path.ChangeExtension(targetFilePath, temporaryFileExtension);

            using (new DirectoryDisposeHelper(testWorkDir, nameof(Perform_TemporaryFileInUse_ExpectedExceptionThrown)))
                using (var fileDisposeHelper = new FileDisposeHelper(temporaryFilePath))
                {
                    fileDisposeHelper.LockFiles();

                    if (performWithExistingTargetFile)
                    {
                        File.WriteAllText(targetFilePath, testContent);
                    }

                    var writer = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                    // Call
                    var exception = Assert.Throws <IOException>(() => writer.Perform(() => {}));

                    // Assert
                    Assert.AreEqual("Het doelbestand is momenteel in gebruik.", exception.Message);
                }
        }
コード例 #3
0
        public void Perform_TargetFileReadOnly_ExpectedExceptionThrown()
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_TargetFileReadOnly_ExpectedExceptionThrown));
            string targetFilePath    = Path.Combine(writableDirectory, "targetFile.txt");

            using (new DirectoryDisposeHelper(testWorkDir, nameof(Perform_TargetFileReadOnly_ExpectedExceptionThrown)))
                using (new FileDisposeHelper(targetFilePath))
                {
                    var fileInfo = new FileInfo(targetFilePath)
                    {
                        IsReadOnly = true
                    };

                    try
                    {
                        var writer = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                        // Call
                        var exception = Assert.Throws <IOException>(() => writer.Perform(() => {}));

                        // Assert
                        Assert.AreEqual("Onvoldoende rechten voor het schrijven van het doelbestand.", exception.Message);
                    }
                    finally
                    {
                        fileInfo.IsReadOnly = false;
                    }
                }
        }
コード例 #4
0
        public void Perform_TargetFilePathTooLong_ExpectedExceptionThrown()
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_TargetFilePathTooLong_ExpectedExceptionThrown));
            string targetFilePath    = Path.Combine(writableDirectory, new string('x', 500) + ".txt");

            using (new DirectoryDisposeHelper(testWorkDir, nameof(Perform_TargetFilePathTooLong_ExpectedExceptionThrown)))
            {
                var writer = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                // Call
                var exception = Assert.Throws <IOException>(() => writer.Perform(() => {}));

                // Assert
                Assert.AreEqual("Het pad van het doelbestand is te lang.", exception.Message);
            }
        }
コード例 #5
0
        public void Perform_InsufficientAccessRights_ExpectedExceptionThrown()
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_InsufficientAccessRights_ExpectedExceptionThrown));
            string targetFilePath    = Path.Combine(writableDirectory, "targetFile.txt");

            using (var directoryDisposeHelper = new DirectoryDisposeHelper(testWorkDir, nameof(Perform_InsufficientAccessRights_ExpectedExceptionThrown)))
            {
                directoryDisposeHelper.LockDirectory(FileSystemRights.Write);

                var writer = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                // Call
                var exception = Assert.Throws <IOException>(() => writer.Perform(() => {}));

                // Assert
                Assert.AreEqual("Onvoldoende rechten voor het schrijven van het doelbestand.", exception.Message);
            }
        }
コード例 #6
0
        public void Perform_WriteActionThrowsException_TargetFileContextRestoredAndExpectedExceptionThrown(bool performWithExistingTargetFile)
        {
            // Setup
            string writableDirectory = Path.Combine(testWorkDir, nameof(Perform_WriteActionThrowsException_TargetFileContextRestoredAndExpectedExceptionThrown));
            string targetFilePath    = Path.Combine(writableDirectory, "targetFile.txt");
            string temporaryFilePath = Path.ChangeExtension(targetFilePath, temporaryFileExtension);

            using (new DirectoryDisposeHelper(testWorkDir, nameof(Perform_WriteActionThrowsException_TargetFileContextRestoredAndExpectedExceptionThrown)))
            {
                if (performWithExistingTargetFile)
                {
                    File.WriteAllText(targetFilePath, testContent);
                }

                var exception = new Exception();
                var writer    = new SafeFileWriter(targetFilePath, temporaryFileExtension);

                // Call
                var actualException = Assert.Throws <Exception>(() => writer.Perform(() => throw exception));

                // Assert
                Assert.AreSame(exception, actualException);

                Assert.IsFalse(File.Exists(temporaryFilePath));

                if (performWithExistingTargetFile)
                {
                    Assert.IsTrue(File.Exists(targetFilePath));
                    Assert.AreEqual(testContent, File.ReadAllText(targetFilePath));
                }
                else
                {
                    Assert.IsFalse(File.Exists(targetFilePath));
                }
            }
        }