Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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}$");
        }
Beispiel #3
0
        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)
                );
        }
Beispiel #4
0
        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}$");
        }
Beispiel #5
0
        /// <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))
                        )
                    );
            }
        }