Ejemplo n.º 1
0
        private static void TestVirtualDriveReWrite()
        {
            string fileName = VirtualDrive.VirtualFileName(
                @"TestID3VirtualDrive\file1");

            UnitTest.Test(!VirtualDrive.ExistsFile(fileName));

            Stream outStream0 = VirtualDrive.OpenOutStream(fileName);

            outStream0.WriteByte(0);
            outStream0.WriteByte(1);
            outStream0.WriteByte(2);
            outStream0.Close();

            UnitTest.Test(VirtualDrive.ExistsFile(fileName));
            UnitTest.Test(VirtualDrive.FileLength(fileName) == 3);

            Stream outStream1 = VirtualDrive.OpenOutStream(fileName);

            outStream1.WriteByte(5);
            outStream1.WriteByte(6);
            outStream1.Close();

            UnitTest.Test(VirtualDrive.ExistsFile(fileName));
            UnitTest.Test(VirtualDrive.FileLength(fileName) == 3);

            Stream inStream = VirtualDrive.OpenInStream(fileName);

            UnitTest.Test(inStream.ReadByte() == 5);
            UnitTest.Test(inStream.ReadByte() == 6);
            UnitTest.Test(inStream.ReadByte() == 2);
            inStream.Close();
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        private static void TestVirtualDrivePaths()
        {
            string folder0 = VirtualDrive.VirtualFileName("folder");
            string parent0 = VirtualDrive.Parent(folder0);

            UnitTest.Test(parent0 == VirtualDriveImpl.virtualDrive);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 5
0
        public static void Test_RecycleBin_MoveToRecycleBin_Files()
        {
            fileNames.ForEach(n => VirtualDrive.Store(VirtualDrive.VirtualFileName(n), null));

            fileNames.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));
            fileNames.ForEach(n => RecycleBin.Instance.MoveToRecycleBin(n));
            fileNames.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));
        }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
0
        private static void TestAccessObserverOpenWriteStream()
        {
            string fileName = VirtualDrive.VirtualFileName("myFile0.bin");

            bool didOpenCalledBack  = false;
            bool didCloseCalledBack = false;

            EventHandler <AccessObserver.AccessObserverEventArgs> freeHandler =
                delegate(object sender, AccessObserver.AccessObserverEventArgs args)
            {
                UnitTest.Test(args.AffectedId == fileName);
                UnitTest.Test(args.ObservedId == fileName);
                UnitTest.Test(args.Type == AccessObserver.AccessType.Write);
                UnitTest.Test(args.Request == AccessObserver.AccessRequest.FreeShared);

                didCloseCalledBack = true;

                VirtualDrive.ObserverFreeShared.Unregister(fileName);
                UnitTest.Test(VirtualDrive.ObserverFreeShared.CountObservedIds == 0);
            };

            EventHandler <AccessObserver.AccessObserverEventArgs> lockHandler =
                delegate(object sender, AccessObserver.AccessObserverEventArgs args)
            {
                UnitTest.Test(args.AffectedId == fileName);
                UnitTest.Test(args.ObservedId == fileName);
                UnitTest.Test(args.Type == AccessObserver.AccessType.Write);
                UnitTest.Test(args.Request == AccessObserver.AccessRequest.LockExclusive);

                didOpenCalledBack = true;

                VirtualDrive.ObserverLockExclusive.Unregister(fileName);
                UnitTest.Test(VirtualDrive.ObserverLockExclusive.CountObservedIds == 0);

                VirtualDrive.ObserverFreeShared.Register(fileName, freeHandler);
            };

            VirtualDrive.ObserverLockExclusive.Register(fileName, lockHandler);

            UnitTest.Test(!didOpenCalledBack);
            UnitTest.Test(!didCloseCalledBack);

            using (Stream stream = VirtualDrive.OpenOutStream(fileName))
            {
                UnitTest.Test(didOpenCalledBack);
                UnitTest.Test(!didCloseCalledBack);
            }

            UnitTest.Test(didOpenCalledBack);
            UnitTest.Test(didCloseCalledBack);
        }
Ejemplo n.º 8
0
        private static void TestVirtualDriveExistsDirectory()
        {
            UnitTest.Test(VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("TestID3VirtualDrive")));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(
                              VirtualDrive.VirtualFileName("ARandomPath")));

            string folder   = VirtualDrive.VirtualFileName("folder");
            string fileName = Path.Combine(folder, "t00.bin");

            VirtualDrive.Store(fileName, null);
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(fileName));
            VirtualDrive.DeleteFile(fileName);
        }
Ejemplo n.º 9
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")));
        }
Ejemplo n.º 10
0
        private static void TestGetFiles()
        {
            string[] fileNames = new string[]
            {
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir0\Data0.bin"),
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir0\Data1.bin"),
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir1\Data2.bin"),
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir1\Data3.bin")
            };
            foreach (var file in fileNames)
            {
                VirtualDrive.Store(file, new byte[] { });
            }

            string[] files0 = VirtualDrive.GetFiles(
                VirtualDrive.VirtualFileName(@"TestGetFiles"), "*.bin");

            UnitTest.Test(files0.Length == 0);


            string[] files1 = VirtualDrive.GetFiles(
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir0"), "*.bin");
            UnitTest.Test(files1.Length == 2);
            UnitTest.Test(files1[0] == fileNames[0]);
            UnitTest.Test(files1[1] == fileNames[1]);

            string[] files2 = VirtualDrive.GetFiles(
                VirtualDrive.VirtualFileName(@"TestGetFiles\TestDir1"), "*.bin");
            UnitTest.Test(files2.Length == 2);
            UnitTest.Test(files2[0] == fileNames[2]);
            UnitTest.Test(files2[1] == fileNames[3]);


            foreach (var file in fileNames)
            {
                VirtualDrive.DeleteFile(file);
            }
        }
Ejemplo n.º 11
0
        private static void TestGetDirectories()
        {
            string[] fileNames = new string[]
            {
                VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir0\Data0.bin"),
                VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir0\Data1.bin"),
                VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir1\Data0.bin"),
                VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir1\Data1.bin")
            };
            foreach (var file in fileNames)
            {
                VirtualDrive.Store(file, new byte[] {});
            }

            string[] dirs = VirtualDrive.GetDirectories(VirtualDrive.VirtualFileName(@"TestGetDirectories"));
            UnitTest.Test(dirs.Length == 2);
            UnitTest.Test(dirs[0] == VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir0"));
            UnitTest.Test(dirs[1] == VirtualDrive.VirtualFileName(@"TestGetDirectories\TestDir1"));

            foreach (var file in fileNames)
            {
                VirtualDrive.DeleteFile(file);
            }
        }