Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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));
            }
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        private DirectoryContainer getChildDirectory(string root, DirectoryContainer dc)
        {
            DirectoryInfo di = new DirectoryInfo(root);

            return(getDirectory(root, dc, di));
        }
Exemplo n.º 13
0
 public SubDirectory()
 {
     SubDirectories = new DirectoryContainer(this);
 }
Exemplo n.º 14
0
        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));
        }