public void MoveToRecycleBin(string id) { CheckIsValid(); string src = id; string dst; if (VirtualDrive.ExistsDirectory(id)) { dst = Path.Combine(RootDir, RecycleBinNameDir()); SafeOperations.MoveDirectory(src, dst); } else if (VirtualDrive.ExistsFile(id)) { dst = Path.Combine(RootDir, RecycleBinNameFile()); VirtualDrive.MoveFile(src, dst); } else { throw new Exception("\"" + id + "\" does not exist!"); } recycledToSrc[dst] = src; srcToRecycled[src] = dst; }
private static void TestAccessObserverMoveFile() { bool didOpenCalledBack = false; bool didCloseCalledBack = false; string fileName0 = VirtualDrive.VirtualFileName(@"myFile0.bin"); string fileName1 = VirtualDrive.VirtualFileName(@"myFile1.bin"); VirtualDrive.Store(fileName0, new byte[] { }); EventHandler <AccessObserver.AccessObserverEventArgs> freeHandler = delegate(object sender, AccessObserver.AccessObserverEventArgs args) { UnitTest.Test(args.AffectedId == fileName0); UnitTest.Test(args.ObservedId == fileName0); UnitTest.Test(args.NewObservedId == fileName1); UnitTest.Test(args.Type == AccessObserver.AccessType.Move); UnitTest.Test(args.Request == AccessObserver.AccessRequest.FreeShared); didCloseCalledBack = true; VirtualDrive.ObserverFreeShared.Unregister(fileName0); UnitTest.Test(VirtualDrive.ObserverFreeShared.CountObservedIds == 0); }; EventHandler <AccessObserver.AccessObserverEventArgs> lockHandler = delegate(object sender, AccessObserver.AccessObserverEventArgs args) { UnitTest.Test(args.AffectedId == fileName0); UnitTest.Test(args.ObservedId == fileName0); UnitTest.Test(args.NewObservedId == fileName0); UnitTest.Test(args.Type == AccessObserver.AccessType.Move); UnitTest.Test(args.Request == AccessObserver.AccessRequest.LockExclusive); didOpenCalledBack = true; VirtualDrive.ObserverLockExclusive.Unregister(fileName0); UnitTest.Test(VirtualDrive.ObserverLockExclusive.CountObservedIds == 0); VirtualDrive.ObserverFreeShared.Register(fileName0, freeHandler); }; VirtualDrive.ObserverLockExclusive.Register(fileName0, lockHandler); UnitTest.Test(!didOpenCalledBack); UnitTest.Test(!didCloseCalledBack); VirtualDrive.MoveFile(fileName0, fileName1); UnitTest.Test(didOpenCalledBack); UnitTest.Test(didCloseCalledBack); VirtualDrive.DeleteFile(fileName1); }
public void Restore(string id) { CheckIsValid(); string recycled = srcToRecycled[id]; string src = id; if (VirtualDrive.ExistsDirectory(recycled)) { SafeOperations.MoveDirectory(recycled, src); } else if (VirtualDrive.ExistsFile(recycled)) { VirtualDrive.MoveFile(recycled, src); } else { throw new Exception("\"" + id + "\" not found!"); } recycledToSrc.Remove(recycled); srcToRecycled.Remove(src); }