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; }); }
public void TestSynchronizationResult() { 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); }
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); }