public void Test_GetDirectoryNames()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //删除Test目录下的所以文件和文件夹
            string[] strDirs  = Directory.GetDirectories(storePath);
            string[] strFiles = Directory.GetFiles(storePath);
            foreach (var file in strFiles)
            {
                File.Delete(file);
            }
            foreach (var dir in strDirs)
            {
                Directory.Delete(dir, true);
            }

            //创建多个目录
            for (int i = 0; i < 5; i++)
            {
                storage.CreateDirectory("Dir/Di_" + Guid.NewGuid().ToString());
                string dir = "Dir_" + Guid.NewGuid().ToString();
                storage.CreateDirectory(dir);
            }

            var result1 = storage.GetDirectoryNames("Dir");
            var result2 = storage.GetDirectoryNames(null, "Dir_*");
            var result3 = storage.GetDirectoryNames("Dir", "Di_*");

            Assert.AreEqual(5, result1.Count());
            Assert.AreEqual(5, result2.Count());
            Assert.AreEqual(5, result3.Count());
        }
        public void Test_MoveDirectory()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //删除Test目录下的所以文件和文件夹
            string[] strDirs  = Directory.GetDirectories(storePath);
            string[] strFiles = Directory.GetFiles(storePath);
            foreach (var file in strFiles)
            {
                File.Delete(file);
            }
            foreach (var dir in strDirs)
            {
                Directory.Delete(dir, true);
            }

            //创建两个目录
            storage.CreateDirectory("dir1");
            storage.CreateDirectory("dir2");

            //把dir2移到dir1中
            storage.MoveDirectory("dir2", "dir1/dir2");

            var resultPath = Path.Combine(storePath, "dir1/dir2");

            Assert.IsTrue(Directory.Exists(resultPath));
        }
        public void Test_MoveFile()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //删除Test目录下的所以文件和文件夹
            string[] strDirs  = Directory.GetDirectories(storePath);
            string[] strFiles = Directory.GetFiles(storePath);
            foreach (var file in strFiles)
            {
                File.Delete(file);
            }
            foreach (var dir in strDirs)
            {
                Directory.Delete(dir, true);
            }

            //创建一个目录和一个文件
            storage.CreateDirectory("dir");
            string       testString = "This is teststring";
            MemoryStream stream     = new MemoryStream();

            byte[] buffer = Encoding.Default.GetBytes(testString);
            stream.Write(buffer, 0, 18);
            storage.CreateFile("file.txt", stream);

            storage.MoveFile("file.txt", "dir/file.txt");

            var resultPath = Path.Combine(storePath, "dir/file.txt");

            Assert.IsTrue(File.Exists(resultPath));
        }
        public void Test_GetLastAccessTimeUtc()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //创建目录
            string dir = "Test" + Guid.NewGuid().ToString();

            storage.CreateDirectory(dir);
            var dirLastAccessTime = Directory.GetLastAccessTimeUtc(Path.Combine(storePath, dir));

            //创建文件
            string       testString = "This is teststring";
            MemoryStream stream     = new MemoryStream();

            byte[] buffer = Encoding.Default.GetBytes(testString);
            stream.Write(buffer, 0, 18);
            var filePath = Guid.NewGuid().ToString() + ".txt";

            storage.CreateFile(filePath, stream);
            FileStream fs = File.Open(Path.Combine(storePath, filePath), FileMode.Open);

            fs.Close();

            var fileLastAccessTime = File.GetLastAccessTimeUtc(Path.Combine(storePath, filePath));


            var dirResult  = storage.GetLastAccessTimeUtc(dir);
            var fileResult = storage.GetLastAccessTimeUtc(filePath);

            Assert.AreEqual(dirLastAccessTime, dirResult);
            Assert.AreEqual(fileLastAccessTime, fileResult);
        }
        public void Test_CreateDirectory()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            string dir = "Test" + Guid.NewGuid().ToString();

            storage.CreateDirectory(dir);

            string dirPath = Path.Combine(storePath, dir);

            Assert.IsTrue(Directory.Exists(dirPath));
        }
        public void Test_Create_SubDir()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();

            string dir    = "Test_Create_SubDir" + Guid.NewGuid().ToString();
            string subDir = Path.Combine(dir, "Sub");

            storage.CreateDirectory(subDir);

            Assert.IsTrue(storage.DirectoryExists(subDir));

            storage.DeleteDirectory(subDir);

            Assert.IsFalse(storage.DirectoryExists(subDir));
        }
        public void Test_GetFileNames()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //删除Test目录下的所以文件和文件夹
            string[] strDirs  = Directory.GetDirectories(storePath);
            string[] strFiles = Directory.GetFiles(storePath);
            foreach (var file in strFiles)
            {
                File.Delete(file);
            }
            foreach (var dir in strDirs)
            {
                Directory.Delete(dir, true);
            }

            //创建多个文件
            string       testString = "This is teststring";
            MemoryStream stream     = new MemoryStream();

            byte[] buffer = Encoding.Default.GetBytes(testString);
            stream.Write(buffer, 0, 18);
            for (int i = 0; i < 5; i++)
            {
                var fileName = Guid.NewGuid().ToString() + ".txt";
                storage.CreateDirectory("fDir");
                storage.CreateFile("fDir/" + fileName, stream);
                storage.CreateFile(fileName, stream);
            }

            var result1 = storage.GetFileNames("fDir");
            var result2 = storage.GetFileNames(null, "*.txt");
            var result3 = storage.GetFileNames("fDir", "*.txt");

            Assert.AreEqual(5, result1.Count());
            Assert.AreEqual(5, result2.Count());
            Assert.AreEqual(5, result3.Count());
        }
        public void Test_DirectoryExists()
        {
            var storage = new DiskIsolateStorage("Test", baseDirectory);

            storage.InitStore();
            string storePath = Path.Combine(baseDirectory, "Test");

            //创建目录
            string dir = "Test" + Guid.NewGuid().ToString();

            storage.CreateDirectory(dir);

            bool result = storage.DirectoryExists(dir);

            //删除目录
            storage.DeleteDirectory(dir);
            bool result1 = storage.DirectoryExists(dir);

            Assert.IsTrue(result);
            Assert.IsFalse(result1);
        }