public void InitializeTest() { // создаём тестовый набор данных: // иньекция системного времени: SystemTime.Now = () => _testDateTimeNow; // файл номер 1 var file1Path = @"C:\some_folder\some_file1.csv"; // путь var file1Meta = new FileMetadata { ByteSize = 10, LastModified = new DateTime(2013, 1, 5) }; // свойства // файл номер 2, три файла(три пути) с одинаковыми свойствами var file2Path = @"D:\some_folder2\stuff\some_file1.csv"; var file2WithDifferNamePath = @"D:\some_folder2\stuff\some_file1_with_differ_name.csv"; var file2WithDifferExtensionPath = @"D:\some_folder2\stuff\some_file1.with_differ_extension"; var file2Meta = new FileMetadata { ByteSize = 15, LastModified = new DateTime(2013, 1, 7) }; // создаем тестовый менеджер файловой системы _injectedManager = A.Fake <IFileSystemManager>(); // прописываем какие свойства (матаданные) он должен возвращать по каждому файлу A.CallTo(() => _injectedManager.GetFileMetadata(file1Path)).Returns(file1Meta); A.CallTo(() => _injectedManager.GetFileMetadata(file2Path)).Returns(file2Meta); A.CallTo(() => _injectedManager.GetFileMetadata(file2WithDifferNamePath)).Returns(file2Meta); A.CallTo(() => _injectedManager.GetFileMetadata(file2WithDifferExtensionPath)).Returns(file2Meta); #region делаем иньекцию тестового менеджера файловой системы: // создаем объекты SyncFile для файлов: // объект SyncFile для файла номер 1, неактуальный (более старый) _nonActualFile = new SyncFile(file1Path, _injectedManager); // объект SyncFile для файла номер 2, актуальный (более новый) _actualFile = new SyncFile(file2Path, _injectedManager); // объект SyncFile для файла номер 2, актуальный (более новый) с другим именем _actualFileWithDifferName = new SyncFile(file2WithDifferNamePath, _injectedManager); // объект SyncFile для файла номер 2, актуальный (более новый) с другим расширением _actualFileWithDifferExtension = new SyncFile(file2WithDifferExtensionPath, _injectedManager); _sfp = new SyncFilesPair(_injectedManager); #endregion }
static void Main(string[] args) { var syncPairs = new List <SyncFilesPair>(); var backupDir = System.Environment.CurrentDirectory + "\\backup"; FileSystemManager.Instance.CreateDirIfNotExist(backupDir); try { var xDoc = XDocument.Load(System.Environment.CurrentDirectory + "\\beaverSync.xml"); var xPairs = xDoc.Root.Elements("SyncFilesPair"); foreach (var xPair in xPairs) { var pair = new SyncFilesPair { BackupDirPath = backupDir, NeedBackup = true }; var file1 = new SyncFile(xPair.Element("FirstFilePath").Value); var file2 = new SyncFile(xPair.Element("SecondFilePath").Value); pair.SetFirstFile(file1); pair.SetSecondFile(file2); syncPairs.Add(pair); } } catch (Exception exc) { Console.WriteLine("Неверный файл конфигурации. Невозможно считать синхропары.", exc); } int i = 1; foreach (var pair in syncPairs) { Console.WriteLine("|SyncPair #{0}", i++); Console.WriteLine("|"); Console.WriteLine("| 1. {0}", pair.FirstFile.FullPath); Console.WriteLine("|\t {0}", pair.FirstFile.RetrieveFileMetadata()); Console.WriteLine("|"); Console.WriteLine("| 2. {0}", pair.SecondFile.FullPath); Console.WriteLine("|\t {0}", pair.SecondFile.RetrieveFileMetadata()); Console.WriteLine(); } //Console.WriteLine("Press <enter> for continue a synchronization process..."); //Console.ReadKey(); i = 1; foreach (var pair in syncPairs) { try { Console.WriteLine("Try to synchronize a SyncPair #{0}...", i); pair.Sync(); Console.WriteLine("SyncPair #{0} synchronized success.", i); } catch (Exception ex) { Console.WriteLine("SyncPair #{0} synchronization failed :(", i); Console.WriteLine(ex); } Console.WriteLine(); i++; } i = 1; foreach (var pair in syncPairs) { Console.WriteLine("|SyncPair #{0}", i++); Console.WriteLine("|"); Console.WriteLine("| 1. {0}", pair.FirstFile.FullPath); Console.WriteLine("|\t {0}", pair.FirstFile.RetrieveFileMetadata()); Console.WriteLine("|"); Console.WriteLine("| 2. {0}", pair.SecondFile.FullPath); Console.WriteLine("|\t {0}", pair.SecondFile.RetrieveFileMetadata()); Console.WriteLine(); } Console.WriteLine("Press <enter> for exit..."); Console.ReadKey(); }