public void RemoveObject_Directory() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\left"); fileSystem.RegisterDirectory(@"C:\right"); fileSystem.RegisterDirectory(@"C:\right\dir"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var rightDirectory = new DirectoryObject(@"C:\right\dir", fileSystem); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.RemoveObject(rightDirectory, syncContext).ToArray(); var expected = new IOperation[] { new DeleteDirectoryOperation(rightDirectory, fileSystem, executionContext) }; CollectionAssert.AreEqual(expected, result); }
public void FindObject_File_NonExisting() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\left"); fileSystem.RegisterFile(@"C:\left\file"); fileSystem.RegisterDirectory(@"C:\right"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var file = new FileObject(@"C:\left\file", fileSystem); file.Metadata["BasePath"] = Path.Parse(@"C:\left"); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.FindObject(file, syncContext); Assert.AreEqual(null, result); }
public void UpdateObject_File_ContentChange() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\left"); fileSystem.RegisterFile(@"C:\left\file"); fileSystem.RegisterDirectory(@"C:\right"); fileSystem.RegisterFile(@"C:\right\file"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var leftFile = new FileObject(@"C:\left\file", fileSystem); leftFile.Metadata["BasePath"] = Path.Parse(@"C:\left"); var rightFile = new FileObject(@"C:\right\file", fileSystem); var change = new ContentChange(); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.UpdateObject(rightFile, leftFile, change, syncContext).ToArray(); var expected = new IOperation[] { new CopyFileOperation(leftFile, rightFile, fileSystem, executionContext) }; CollectionAssert.AreEqual(expected, result); }
public void UpdateObject_Directory_NameCasingChange() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\left"); fileSystem.RegisterDirectory(@"C:\left\dir"); fileSystem.RegisterDirectory(@"C:\right"); fileSystem.RegisterDirectory(@"C:\right\DIR"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var leftDirectory = new DirectoryObject(@"C:\left\dir", fileSystem); leftDirectory.Metadata["BasePath"] = Path.Parse(@"C:\left"); var rightDirectory = new DirectoryObject(@"C:\right\dir", fileSystem); var change = new NameCasingChange(); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.UpdateObject(rightDirectory, leftDirectory, change, syncContext).ToArray(); var expected = new IOperation[] { new RenameDirectoryOperation(rightDirectory, leftDirectory.ActualName, fileSystem, executionContext) }; CollectionAssert.AreEqual(expected, result); }
public void GetChanges_Directory_NameCasingChanged() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\left\dir"); fileSystem.RegisterDirectory(@"C:\right\DIR"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var leftDirectory = new DirectoryObject(@"C:\left\dir", fileSystem); var rightDirectory = new DirectoryObject(@"C:\right\dir", fileSystem); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.GetChanges(rightDirectory, leftDirectory, syncContext).ToArray(); var expected = new IChange[] { new NameCasingChange() }; Assert.AreEqual(expected, result); }
public void GetChanges_File_LastWriteTimeChanged() { var fileSystem = new MockFileSystem(); fileSystem.RegisterFile(@"C:\left\file", length: 100, lastWriteTime: DateTime.MinValue); fileSystem.RegisterFile(@"C:\right\file", length: 100, lastWriteTime: DateTime.MinValue.AddDays(1)); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\right"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var leftFile = new FileObject(@"C:\left\file", fileSystem); var rightFile = new FileObject(@"C:\right\file", fileSystem); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.GetChanges(rightFile, leftFile, syncContext).ToArray(); var expected = new IChange[] { new ContentChange() }; Assert.AreEqual(expected, result); }
public void GetObjects() { var fileSystem = new MockFileSystem(); fileSystem.RegisterDirectory(@"C:\dir"); fileSystem.RegisterDirectory(@"C:\dir\dir1"); fileSystem.RegisterDirectory(@"C:\dir\dir2"); fileSystem.RegisterFile(@"C:\dir\file1"); fileSystem.RegisterFile(@"C:\dir\file2"); var serviceContainer = new ManualServiceContainer(); serviceContainer.Register <IFileSystem>(fileSystem); var executionContext = new ExecutionContext(serviceContainer); var directoryContainer = new DirectoryContainer(@"C:\dir"); var directoryContainerInstance = directoryContainer.CreateInstance(executionContext); var syncContext = new SyncContext(null, executionContext); var result = directoryContainerInstance.GetObjects(syncContext).ToArray(); var expected = new IFileSystemObject[] { new FileObject(@"C:\dir\file1", fileSystem), new FileObject(@"C:\dir\file2", fileSystem), new DirectoryObject(@"C:\dir\dir1", fileSystem), new DirectoryObject(@"C:\dir\dir2", fileSystem) }; CollectionAssert.AreEqual(expected, result); }
private DirectoryContainer getDirectory(string root, DirectoryContainer dc, DirectoryInfo di) { FolderContentsGrabber fcg = new FolderContentsGrabber(); dc.DirectoryList = fcg.GetSubdirectories(di); dc.FileList = fcg.GetFilesFromDirectory(di); dc.Path = di.FullName; return(dc); }
private DirectoryContainer getLogicalDrives(DirectoryContainer dc) { string[] drives = Directory.GetLogicalDrives(); DirectoryInfo[] dir = new DirectoryInfo[drives.Length]; for (int i = 0; i < dir.Length; i++) { dir[i] = new DirectoryInfo(drives[i]); } dc.DirectoryList = dir; // Parent to logical drives is where app hosted. To avoid collisions. dc.Path = root; return(dc); }
private DirectoryContainer getParentDirectory(string root, DirectoryContainer dc) { DirectoryInfo di = new DirectoryInfo(root); di = di.Parent; // If directory info is not a logical drive. if (di != null) { return(getDirectory(root, dc, di)); } else { return(getLogicalDrives(dc)); } }
public DirectoryContainer GrabContents(string root, string token) { DirectoryContainer dc = new DirectoryContainer(); if (token == commandBack) { getParentDirectory(root, dc); return(dc); } if (token == DirectoryNavigator.root) { getLogicalDrives(dc); return(dc); } getChildDirectory(root, dc); return(dc); }
private DirectoryContainer getChildDirectory(string root, DirectoryContainer dc) { DirectoryInfo di = new DirectoryInfo(root); return(getDirectory(root, dc, di)); }
public SubDirectory() { SubDirectories = new DirectoryContainer(this); }
private void uploader_UploadedComplete(object sender, AsyncFileUploadEventArgs e) { if (isOnInit) { return; } string key = ""; lock (SyncRoot) { if (this.UseUploadedFileName) { this.FileName = Path.GetFileName(e.FileName); key = this.FileName; } else { key = this.FileName + Path.GetExtension(e.FileName); } if (!string.IsNullOrEmpty(this.FileName) && !string.IsNullOrEmpty(this.StoragePath)) { string container_path = this.FilePath; if (container_path.StartsWith("/")) { container_path = container_path.Remove(0, 1); } if (!String.IsNullOrEmpty(container_path)) { container = new DirectoryContainer(this.StoragePath, container_path); } else { container = new DirectoryContainer(null, this.StoragePath); } try { if (container.Agent.HasKey(key)) { container.Agent.Erase(key); } ((FileAgent)this.container.Agent).Write(key, this.uploader.FileContent); } catch (Exception ex) { this.container.Agent.CloseStream(key); throw ex; } } this.uploader.ClearFileFromPersistedStore(); } if (null != this.FileUploaded) { FileUploaded(this, new UploaderEventArgs(key)); } RaiseBubbleEvent(this, new CommandEventArgs("upload complete", key)); }