示例#1
0
        private static void TestVirtualDriveCopyDirectory()
        {
            string filename00 = VirtualDrive.VirtualFileName(@"Testdir0\testfile0.bin");
            string filename01 = VirtualDrive.VirtualFileName(@"Testdir0\testfile1.bin");

            string filename10 = VirtualDrive.VirtualFileName(@"Testdir1\testfile0.bin");
            string filename11 = VirtualDrive.VirtualFileName(@"Testdir1\testfile1.bin");

            VirtualDrive.Store(filename00, null);
            VirtualDrive.Store(filename01, null);

            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("Testdir0")));

            VirtualDrive.CopyDirectory(
                VirtualDrive.VirtualFileName("Testdir0"),
                VirtualDrive.VirtualFileName("Testdir1"));

            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("Testdir0")));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(VirtualDrive.ExistsFile(filename11));
            UnitTest.Test(VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("Testdir1")));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName("Testdir0"), true);
            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName("Testdir1"), true);
        }
示例#2
0
        public void Clear()
        {
            CheckIsValid();

            foreach (var fileName in recycledToSrc.Keys)
            {
                if (VirtualDrive.ExistsDirectory(fileName))
                {
                    try
                    {
                        VirtualDrive.DeleteDirectory(fileName, true);
                    }
                    catch (Exception)
                    {
                    }
                }
                else if (VirtualDrive.ExistsFile(fileName))
                {
                    VirtualDrive.DeleteFile(fileName);
                }
            }

            recycledToSrc.Clear();
            srcToRecycled.Clear();
        }
示例#3
0
 public void DeleteContent()
 {
     foreach (var item in VirtualDrive.GetDirectories(RootDir))
     {
         VirtualDrive.DeleteDirectory(item, true);
     }
 }
示例#4
0
        public static void Test_FileWalker()
        {
            string[] files =
            {
                VirtualDrive.VirtualFileName(@"Test_FileWalker\folder0\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_FileWalker\folder0\file1.bin"),
                VirtualDrive.VirtualFileName(@"Test_FileWalker\folder0\folder0\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_FileWalker\folder0\folder0\file1.bin"),
                VirtualDrive.VirtualFileName(@"Test_FileWalker\folder1\file2.bin"),
            };

            string[] expected =
            {
                "\\\\virtualdrive\\Test_FileWalker\\folder0\\folder0\\file0.bin",
                "\\\\virtualdrive\\Test_FileWalker\\folder0\\folder0\\file1.bin",
                "\\\\virtualdrive\\Test_FileWalker\\folder0\\file0.bin",
                "\\\\virtualdrive\\Test_FileWalker\\folder0\\file1.bin",
                "\\\\virtualdrive\\Test_FileWalker\\folder1\\file2.bin",
                "\\\\virtualdrive\\Test_FileWalker\\folder0\\folder0",
                "\\\\virtualdrive\\Test_FileWalker\\folder0",
                "\\\\virtualdrive\\Test_FileWalker\\folder1",
                "\\\\virtualdrive\\Test_FileWalker",
            };

            files.ForEach(n => VirtualDrive.Store(VirtualDrive.VirtualFileName(n), null));

            FileWalker walker = new FileWalker(VirtualDrive.VirtualFileName("Test_FileWalker"));

            UnitTest.Test(walker.Files.Concat(walker.Directories).SequenceEqual(expected));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName("Test_FileWalker"), true);
        }
示例#5
0
        private static void TestVirtualDriveDeleteDirectory()
        {
            VirtualDrive.Store(
                VirtualDrive.VirtualFileName(@"Testdir0\testfile0.bin"),
                null);
            VirtualDrive.Store(
                VirtualDrive.VirtualFileName(@"Testdir0\testfile1.bin"),
                null);

            UnitTest.Test(VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("Testdir0")));

            VirtualDrive.DeleteDirectory(
                VirtualDrive.VirtualFileName("Testdir0"), true);

            UnitTest.Test(!VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("Testdir0")));
        }
示例#6
0
        private static void TestAccessObserverMoveDir()
        {
            bool didOpenCalledBack  = false;
            bool didCloseCalledBack = false;

            string folder0   = VirtualDrive.VirtualFileName("myFolder0");
            string folder1   = VirtualDrive.VirtualFileName("myFolder1");
            string fileName0 = VirtualDrive.VirtualFileName(@"myFolder0\myFile0.bin");
            string fileName1 = VirtualDrive.VirtualFileName(@"myFolder0\myFile1.bin");

            VirtualDrive.Store(fileName0, new byte[] { });
            VirtualDrive.Store(fileName1, new byte[] { });

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));

            EventHandler <AccessObserver.AccessObserverEventArgs> freeHandler =
                delegate(object sender, AccessObserver.AccessObserverEventArgs args)
            {
                UnitTest.Test(args.AffectedId == folder0);
                UnitTest.Test(args.ObservedId == fileName0);
                UnitTest.Test(args.NewObservedId == VirtualDrive.VirtualFileName(@"myFolder1\myFile0.bin"));
                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 == folder0);
                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.MoveDirectory(folder0, folder1);
            UnitTest.Test(didOpenCalledBack);
            UnitTest.Test(didCloseCalledBack);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName(folder1), true);

            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder1));
        }
示例#7
0
 public static void Exit()
 {
     VirtualDrive.DeleteDirectory(recycleBinFolder, true);
 }