Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }