예제 #1
0
        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
        }
예제 #2
0
        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();
        }