public static void OnRollbackNoScope() { #if DEBUG Console.WriteLine("FileIsNew_OnRollbackNoScope"); #endif var managedPath = "Data" + Path.DirectorySeparatorChar + "edit-file-is-new-on-rollback-no-scope.txt"; // Simulate a preparation var manager = new DeleteFileManager( managedPath); ExceptionAssert.IsThrown( () => { FileStream stream = (FileStream)FileManagerReflection.Invoke( manager, "OnPrepareFileStream", new string[] { managedPath }); }, expectedType: typeof(TargetInvocationException), expectedMessage: "Exception has been thrown by the target of an invocation.", expectedInnerType: typeof(FileNotFoundException), expectedInnerMessage: "Could not find file '" + Path.Combine(Environment.CurrentDirectory, managedPath) + "'."); }
private void Clean() { state = State.Cleaning; MainBtn.Content = "Stop"; deletedFiles = 0; deletedFilesLenght = 0; LogTextBox.Document.Blocks.Clear(); LogTextBox.Document.Blocks.Add(new Paragraph(new Run("Deleting..."))); if (deleteManager == null) { deleteManager = new DeleteFileManager(); deleteManager.OnFileDeleted += FileDeleted; deleteManager.OnFileNotDeleted += FileNotDeleted; deleteManager.OnFinished += CleanFinished; } DeleteFileWrapper wrapper = new DeleteFileWrapper(); wrapper.context = context; wrapper.filesList = filesToDelete; Thread thread = new Thread(deleteManager.Work); thread.Start(wrapper); }
internal static void CurrentTransactionIsNull() { #if DEBUG Console.WriteLine("CurrentTransactionIsNull"); #endif var managedPath = "Data" + Path.DirectorySeparatorChar + "delete-file-already-exists-no-current-transaction.txt"; var manager = new DeleteFileManager( managedPath); FileStream stream = (FileStream)FileManagerReflection.Invoke( manager, "OnPrepareFileStream", new string[] { managedPath }); ExceptionAssert.IsThrown( () => { manager.EnlistVolatile(EnlistmentOptions.None); }, expectedType: typeof(InvalidOperationException), expectedMessage: String.Format( "Cannot enlist resource {0}: no ambient transaction detected.", managedPath)); }
/// <summary> /// Tests the constructor when parameter <i>managedPath</i> is <b>null</b>. /// </summary> public static void ManagedPathIsNull() { #if DEBUG Console.WriteLine("Constructor_ManagedPathIsNull"); #endif string managedPath = null; ArgumentExceptionAssert.IsThrown( () => { var manager = new DeleteFileManager(managedPath); }, expectedType: typeof(ArgumentNullException), expectedPartialMessage: ArgumentExceptionAssert.NullPartialMessage, expectedParameterName: "managedPath"); }
public static void OnRollbackNoScope() { #if DEBUG Console.WriteLine("FileAlreadyExists_OnRollbackNoScope"); #endif var managedPath = "Data" + Path.DirectorySeparatorChar + "delete-file-already-exists-on-rollback-no-scope.txt"; // Simulate a preparation var manager = new DeleteFileManager( managedPath); FileStream stream = (FileStream)FileManagerReflection.Invoke( manager, "OnPrepareFileStream", new string[] { managedPath }); FileManagerReflection.SetStream(manager, stream); stream = null; // Simulate a rollback (NOP) // We want to access the managed file to inspect its // edited contents, hence we need to dispose // its manager. manager.Dispose(); // Expected results Assert.IsTrue(File.Exists(managedPath)); using (stream = File.OpenRead(managedPath)) { using (StreamReader reader = new StreamReader(stream)) { var content = reader.ReadLine(); Assert.AreEqual("existing-file", content); } } }
public static void Dispose() { #if DEBUG Console.WriteLine("Dispose"); #endif var managedPath = "Data" + Path.DirectorySeparatorChar + "delete-file-already-exists-dispose.txt"; // Simulate a preparation var manager = new DeleteFileManager( managedPath); Assert.AreEqual(false, FileManagerReflection.GetField(manager, "disposed")); FileStream stream = (FileStream)FileManagerReflection.Invoke( manager, "OnPrepareFileStream", new string[] { managedPath }); FileManagerReflection.SetStream(manager, stream); stream = null; // Dispose the manager manager.Dispose(); // Expected results Assert.AreEqual(true, FileManagerReflection.GetField(manager, "disposed")); // Dispose the manager, again ExceptionAssert.IsNotThrown( () => { manager.Dispose(); } ); }
public static void OnCommit() { #if DEBUG Console.WriteLine("FileAlreadyExists_OnCommit"); #endif var managedPath = "Data" + Path.DirectorySeparatorChar + "delete-file-already-exists-on-commit.txt"; var deleteManager = new DeleteFileManager( managedPath); List <FileManager> managers = new List <FileManager> { deleteManager }; void results() { // Dispose the manager, so that // the following call to File.Exists // has the required permissions // to investigate the managed file. deleteManager.Dispose(); Assert.IsTrue(!File.Exists(managedPath)); } void rolledBack(Exception e) { } TransactionScopeHelper.Using( managers, results, rolledBack); }