Beispiel #1
0
        private static void TestVirtualDriveMoveDirectory()
        {
            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.MoveDirectory(
                VirtualDrive.VirtualFileName("Testdir0"),
                VirtualDrive.VirtualFileName("Testdir1"));

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

            VirtualDrive.DeleteDirectory(
                VirtualDrive.VirtualFileName("Testdir1"), true);
        }
Beispiel #2
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));
        }