Exemple #1
0
        void view_SyncRequested(object sender, SyncRequestEventArgs e)
        {
            if (syncIsOn)
            {
                MessageBox.Show(
                    "Another synchrinization is in progress. Wait untill it is over.");
                return;
            }
            ThreadPool.QueueUserWorkItem(delegate
            {
                syncIsOn = true;
                var sync = new Synchronizer(new SyncTarget(e.PathA, e.PathB));
                sync.ProgressUpdated += sync_ProgressUpdated;
                try
                {
                    sync.Synchronize();
                    view.ShowMessage("Done");

                }
                catch (Exception ex)
                {
                    view.ShowMessage("Failed with exception " + ex);
                }

                view.UpdateFileList(FolderRepresentPosition.A, FileEditor.GetFiles(e.PathA));
                view.UpdateFileList(FolderRepresentPosition.B, FileEditor.GetFiles(e.PathB));
                sync.ProgressUpdated -= sync_ProgressUpdated;
                syncIsOn = false;
            });
        }
Exemple #2
0
        public void TestDoubleSynchronizationResult()
        {
            var testCase = testCaseDirs[0];

            PrepareCase(testCase.Source, testCase.Dest);

            var sync = new Synchronizer(new SyncTarget(testCase.A, testCase.B));

            sync.Synchronize("6bfce438-b4a9-455f-9495-2be38ba314d6");

            AssertFoldersContentEquals(testCase.A, testCase.B, testCase.C);

            sync.Synchronize();

            AssertFoldersContentEquals(testCase.A, testCase.B, testCase.C);
        }
Exemple #3
0
        public void TestSynchronizationWithUpdatesResult()
        {
            var testCase = testCaseDirs[0];

            PrepareCase(testCase.Source, testCase.Dest);

            var sync = new Synchronizer(new SyncTarget(testCase.A, testCase.B));

            sync.Synchronize("6bfce438-b4a9-455f-9495-2be38ba314d6");

            AssertFoldersContentEquals(testCase.A, testCase.B, testCase.C);

            // delete one file in A
            File.Delete(Directory.EnumerateFiles(testCase.A).First());
            File.Delete(Directory.EnumerateFiles(testCase.C).First());

            // edit another file in B
            File.WriteAllText(
                Directory.EnumerateFiles(testCase.B).Skip(1).First(), "some data");
            File.WriteAllText(
                Directory.EnumerateFiles(testCase.C).First(), "some data");

            sync.Synchronize();

            // delete file in A and edit the same file in B
            File.Delete(Directory.EnumerateFiles(testCase.A).First());
            File.WriteAllText(
                Directory.EnumerateFiles(testCase.B).First(), "some other data");
            var fileName = Directory.EnumerateFiles(testCase.C).First();
            File.WriteAllText(fileName, "some other data");
            var name = Path.Combine(
                Path.GetDirectoryName(fileName),
                Path.GetFileNameWithoutExtension(fileName));
            var ext = Path.GetExtension(fileName);
            var syncId =
                Path.GetFileName(
                    Directory.EnumerateDirectories(Path.Combine(testCase.A, Synchronizer.ConfigDirName)).First());
            var newFileName = string.Format("{0}.{1}.{2}{3}", name, "B", syncId, ext);
            File.Move(fileName, newFileName);

            sync.Synchronize();

            AssertFoldersContentEquals(testCase.A, testCase.B, testCase.C);
        }