public void TempFileStoreDelete()
        {
            IFileStore store = new TempFileStore();

              string fileName = "TestPi.txt";

              // Создаем и добавляем в хранилище файл.
              File.WriteAllText(fileName, "3.1415926");
              store.AddFile(fileName, fileName);

              // Во временном хранилище должен быть добавленный файл.
              Assert.IsTrue(File.Exists(Path.Combine(store.StoreDirectory, fileName)));

              // Удаляем файл из хранилища.
              store.DeleteFile(fileName);

              // Проверяем количество файлов в хранилище.
              Assert.AreEqual(0, store.Files.Count);
              // Во временном хранилище не должно быть добавленного файла.
              Assert.IsFalse(File.Exists(Path.Combine(store.StoreDirectory, fileName)));

              // Удалим исходный файл.
              if (File.Exists(fileName))
            File.Delete(fileName);
        }
        public void TempFileStoreCreateAndDestroy()
        {
            IFileStore store = new TempFileStore();
              Assert.IsFalse(string.IsNullOrWhiteSpace(store.StoreDirectory));
              Assert.IsTrue(Directory.Exists(store.StoreDirectory));

              string storeDirectory = store.StoreDirectory;
              store = null;
              GC.Collect();
              GC.WaitForPendingFinalizers();
              Assert.IsFalse(Directory.Exists(storeDirectory));
        }
        public void TempFileStoreAdd()
        {
            IFileStore store = new TempFileStore();

              Assert.AreEqual(0, store.Files.Count);

              // Переменная для делегата.
              int count = 0;
              // Делегат для теста
              Action<string, string, string> action = (path, relativePath, content) =>
            {
              string fileName;

              // Создаем и добавляем в хранилище файл.
              File.WriteAllText(path, content);
              store.AddFile(path, relativePath);

              // Проверяем количество файлов в хранилище.
              Assert.AreEqual(++count, store.Files.Count);
              // В коллекции последний элемент должен быть с новым путем.
              Assert.AreEqual(relativePath, store.Files[count - 1]);
              // Во временном хранилище должен быть добавленный файл.
              Assert.IsTrue(File.Exists(fileName = Path.Combine(store.StoreDirectory, relativePath)));
              // Его содержимое должно быть такое же, как и у оригинального файла.
              Assert.AreEqual(content, File.ReadAllText(fileName));

              // Удалим исходный файл.
              if (File.Exists(path))
            File.Delete(path);
            };

              // Добавляем первый файл.
              action("TestPi.txt", "TestPi.txt", "3.1415926");

              // Добавляем второй файл.
              action(Path.Combine(Environment.CurrentDirectory, "TestE.txt"), "Common\\Obj\\TestE.txt", "2.718281");

              // Добавим третий файл прямо в хранилище.
              action(Path.Combine(store.StoreDirectory, "TestPhi.txt"), "TestPhi.txt", "1.618034");
        }
        public void TempFileStoreStateTest()
        {
            IFileStore store = new TempFileStore();
              Assert.AreEqual(FileStoreState.Changed, store.State);

              store.Save("");
              Assert.AreEqual(FileStoreState.Saved, store.State);

              string fileName = "TestPi.txt";

              // Создаем и добавляем в хранилище файл.
              File.WriteAllText(fileName, "3.1415926");
              store.AddFile(fileName, fileName);
              Assert.AreEqual(FileStoreState.Changed, store.State);

              if (File.Exists(fileName))
            File.Delete(fileName);
        }
        public void TempFileStoreReplace()
        {
            IFileStore store = new TempFileStore();

              string fileName = "TestPi.txt";

              // Создаем и добавляем в хранилище файл.
              File.WriteAllText(fileName, "3.1415926");
              store.AddFile(fileName, fileName);

              // Во временном хранилище должен быть добавленный файл.
              Assert.IsTrue(File.Exists(Path.Combine(store.StoreDirectory, fileName)));

              // Создадим новый файл.
              File.WriteAllText(fileName, "Pi=3.1415926");

              // Заменяем файл в хранилище.
              store.ReplaceFile(fileName, fileName);

              // Проверяем количество файлов в хранилище.
              Assert.AreEqual(1, store.Files.Count);
              // В коллекции последний элемент должен быть тот же.
              Assert.AreEqual(fileName, store.Files[0]);
              // Во временном хранилище должен быть добавленный файл.
              Assert.IsTrue(File.Exists(Path.Combine(store.StoreDirectory, fileName)));
              // Проверим содержимое.
              Assert.AreEqual("Pi=3.1415926", File.ReadAllText(Path.Combine(store.StoreDirectory, fileName)));

              // Удалим исходный файл.
              if (File.Exists(fileName))
            File.Delete(fileName);
        }
        public void TempFileStoreMove()
        {
            IFileStore store = new TempFileStore();

              string fileName = "TestPi.txt";

              // Создаем и добавляем в хранилище файл.
              File.WriteAllText(fileName, "3.1415926");
              store.AddFile(fileName, fileName);

              // Перемещаем в каталог внутри хранилища.
              store.MoveFile("TestPi.txt", "1\\TestPi.txt");

              Assert.AreEqual(FileStoreState.Changed, store.State);
              Assert.IsFalse(File.Exists(Path.Combine(store.StoreDirectory, "TestPi.txt")));
              Assert.IsTrue(File.Exists(Path.Combine(store.StoreDirectory, "1\\TestPi.txt")));
              Assert.AreEqual(1, store.Files.Count);
              Assert.AreEqual("1\\TestPi.txt", store.Files[0]);

              // Перемещаем в другой каталог внутри хранилища.
              store.MoveFile("1\\TestPi.txt", "2\\TestPi.txt");

              Assert.IsFalse(Directory.Exists(Path.Combine(store.StoreDirectory, "1")));
              Assert.IsTrue(File.Exists(Path.Combine(store.StoreDirectory, "2\\TestPi.txt")));
        }
        public void TempFileStoreDeleteEmptyDirectory()
        {
            IFileStore store = new TempFileStore();

              var files = new[]
              {
            new { ActualPath = "Test1.txt", RelativePath = "Test1.txt" },
            new { ActualPath = "Test2.txt", RelativePath = "Dir1\\Test2.txt" },
            new { ActualPath = "Test3.txt", RelativePath = "Dir1\\Dir2\\Dir3\\Test3.txt" },
            new { ActualPath = "Test4.txt", RelativePath = "Dir1\\Dir2\\Test4.txt" }
              };

              try
              {

            // Создаем файлы и добавляем во временную директорию.
            foreach (var file in files)
            {
              File.WriteAllText(file.ActualPath, "");
              store.AddFile(file.ActualPath, file.RelativePath);
            }

            for (int i = 3; i >= 0; i--)
            {
              store.DeleteFile(files[i].RelativePath);

              string directory = store.StoreDirectory;
              if (i == 3)
              {
            Assert.IsTrue(Directory.Exists(directory + "\\Dir1\\Dir2\\Dir3"));
              }
              else if (i == 2)
              {
            Assert.IsFalse(Directory.Exists(directory + "\\Dir1\\Dir2"));
            Assert.IsTrue(Directory.Exists(directory + "\\Dir1"));
              }
              else if (i == 1)
              {
            Assert.IsFalse(Directory.Exists(directory + "\\Dir1"));
            Assert.IsTrue(Directory.Exists(store.StoreDirectory));
              }
              else if (i == 0)
              {
            Assert.IsTrue(Directory.Exists(store.StoreDirectory));
              }
            }
              }
              finally
              {
            foreach (var file in files)
              if (File.Exists(file.ActualPath))
            File.Delete(file.ActualPath);
              }
        }