/// <summary> /// Findet alle Dateien, die Bilder sind und unter dem angegebenen Ordner /// direkt oder indirekt stehen, und setzt sie nebeneinander unter diesem /// Ordner. Die Dateien werden umbennant, sodass die damalige hierarchische /// Ordnung aufbewahrt werden kann. /// </summary> /// <param name="directoryPath"> /// Das Verzeichnis des Ordners, wo sich die Bildergalerie befindet. /// </param> public void MoveAllImagesToFlatOrder(string directoryPath) { DirectoryNodeInfo dirInfoTree = DirectoryNodeInfo.LoadTreeFrom( directoryPath, (file) => Filters.IsFile(file.Name, Filters.FileType.Media) ); MoveAllImagesToFlatOrder(dirInfoTree); }
public void MoveAllImagesToFlatOrder_WhenDirectoryHasOnlyFiles_ThenNoPrefix() { string dirPath = AsCrossPlatformPath("./home/Galerie"); string[] fileNames = CreateSomeFileNames(); var directory = new DirectoryNodeInfo(dirPath, null, fileNames); Mock <IFileSystemAccess> fileSystemAccessMock = SetupMockForFileSystemAccess(); var galleryDirectory = new GalleryDirectory(fileSystemAccessMock.Object); galleryDirectory.MoveAllImagesToFlatOrder(directory); VerifyCallsTo(fileSystemAccessMock, dirPath, directory, $"^\\w+_\\d+\\.{_fileExt}$"); }
public void MoveAllImagesToFlatOrder_WhenFilesAlongSubdirs_ThenThrow() { string dirPath = AsCrossPlatformPath("./home/Galerie"); string[] fileNames = CreateSomeFileNames(); DirectoryNodeInfo[] subdirs = { new DirectoryNodeInfo(null, null, null) }; var directory = new DirectoryNodeInfo(dirPath, subdirs, fileNames); Mock <IFileSystemAccess> fileSystemAccessMock = SetupMockForFileSystemAccess(); var galleryDirectory = new GalleryDirectory(fileSystemAccessMock.Object); Assert.ThrowsAny <ApplicationException>( () => galleryDirectory.MoveAllImagesToFlatOrder(directory) ); }
public void MoveAllImagesToFlatOrder_WhenSubdirectoriesPresent_ThenUsePrefix() { string dirPath = AsCrossPlatformPath("./home/Galerie"); string[] fileNames = CreateSomeFileNames(); DirectoryNodeInfo[] subdirs = { new DirectoryNodeInfo(Path.Join(dirPath, "A"), null, fileNames), new DirectoryNodeInfo(Path.Join(dirPath, "B"), null, fileNames), }; var directory = new DirectoryNodeInfo(dirPath, subdirs, null); Mock <IFileSystemAccess> fileSystemAccessMock = SetupMockForFileSystemAccess(); var galleryDirectory = new GalleryDirectory(fileSystemAccessMock.Object); galleryDirectory.MoveAllImagesToFlatOrder(directory); VerifyCallsTo(fileSystemAccessMock, dirPath, directory, $"^\\d+_\\w+_\\d+\\.{_fileExt}$"); }
/// <summary> /// Überprüft die Aufrufe für <see cref="IFileSystemAccess.MoveFile(string, string)"/>. /// </summary> /// <param name="mock">Das Mock-Objekt, das aufgerufen wird.</param> /// <param name="destDirPath">Das Verzeichnis, worauf die Dateien verschoben werden müssen.</param> /// <param name="directory">Stellt den Ordner der Galerie dar.</param> /// <param name="regex">Der "Regex", dem die neuen Namen der Dateien entsprechen müssen.</param> private static void VerifyCallsTo(Mock <IFileSystemAccess> mock, string destDirPath, DirectoryNodeInfo directory, string regex) { foreach (DirectoryNodeInfo subdir in directory.Subdirectories) { VerifyCallsTo(mock, destDirPath, subdir, regex); } foreach (string fileName in directory.FileNames) { string fromPath = Path.Join(directory.FullPath, fileName); mock.Verify( obj => obj.MoveFile( It.Is <string>(val => val == fromPath), It.Is <string>(val => Regex.IsMatch(Path.GetRelativePath(destDirPath, val), regex)) ) ); } }