Ejemplo n.º 1
0
        public void Convert_Valid_ExpedtedResult(
            [Frozen] Mock <IVipsAdapter> vipsAdapterMock,
            [Frozen] Mock <IFileInfo> fileInfoMock,
            [Frozen] Mock <IDirectoryContents> directoryContentsMock,
            string physicalPath,
            TilingRequest tilingRequest,
            Converter sut)
        {
            // Arrange
            directoryContentsMock.Setup(dc => dc.Exists)
            .Returns(true);

            tilingRequest.InputFile = fileInfoMock.Object;
            vipsAdapterMock.Setup(va => va.IsInitialized)
            .Returns(true);

            var image = Image.NewTempFile("%s.v");

            vipsAdapterMock.Setup(va => va.NewFromFile(It.IsAny <string>()))
            .Returns(image);
            fileInfoMock.Setup(fi => fi.PhysicalPath)
            .Returns(physicalPath);


            // Act
            var result = sut.Convert(tilingRequest);

            // Assert
            vipsAdapterMock.Verify(va => va.NewFromFile(physicalPath), Times.Once);
            vipsAdapterMock.Verify(va => va.Dzsave(image, tilingRequest.DzSaveOptions), Times.Once);

            Assert.Equal(image.Height, result.ImageHeight);
            Assert.Equal(image.Width, result.ImageWidth);
            Assert.Equal($"{tilingRequest.DzSaveOptions.OutputName}_files", result.OutputFolder);
        }
Ejemplo n.º 2
0
        public void Convert_DzSaveOptionsNull_Error(TilingRequest tilingRequest, Converter sut)
        {
            // Arrange
            tilingRequest.DzSaveOptions = null;

            // Act // Assert
            Assert.Throws <ArgumentNullException>(() => sut.Convert(tilingRequest));
        }
Ejemplo n.º 3
0
        public void Convert_InputFileNull_Error(TilingRequest tilingRequest, Converter sut)
        {
            // Arrange
            tilingRequest.InputFile = null;

            // Act // Assert
            Assert.Throws <ArgumentNullException>(() => sut.Convert(tilingRequest));
        }
Ejemplo n.º 4
0
        public void Convert_VipsNotIntialized_Error(
            [Frozen] Mock <IVipsAdapter> vipsAdapterMock,
            TilingRequest tilingRequest,
            Converter sut)
        {
            // Arrange
            vipsAdapterMock.Setup(va => va.IsInitialized)
            .Returns(false);

            // Act // Assert
            Assert.Throws <TilerException>(() => sut.Convert(tilingRequest));
            vipsAdapterMock.Verify(va => va.InitializationException, Times.AtLeastOnce);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Converts provided image into tiles using Vips
        /// </summary>
        /// <param name="tilingRequest"></param>
        /// <returns></returns>
        /// <exception cref="TilerException"></exception>
        /// <exception cref="VipsException"></exception>
        public TilingResult Convert(TilingRequest tilingRequest)
        {
            ValidateVips(vipsAdapter);
            ValidateRequest(tilingRequest);

            var image = vipsAdapter.NewFromFile(tilingRequest.InputFile.PhysicalPath);

            vipsAdapter.Dzsave(image, tilingRequest.DzSaveOptions);

            return(new TilingResult
            {
                ImageWidth = image.Width,
                ImageHeight = image.Height,
                OutputFolder = $"{tilingRequest.DzSaveOptions.OutputName}_files"
            });
        }
Ejemplo n.º 6
0
        public void Convert_OutputDirectoryDoesNotExist_Error(
            [Frozen] Mock <IFileProvider> fileproviderMock,
            [Frozen] Mock <IDirectoryContents> directoryContentsMock,
            TilingRequest tilingRequest,
            Converter sut)
        {
            // Arrange
            fileproviderMock
            .Setup(fp => fp.GetDirectoryContents(It.IsAny <string>()))
            .Returns(directoryContentsMock.Object);
            directoryContentsMock
            .Setup(dc => dc.Exists)
            .Returns(false);

            // Act // Assert
            Assert.Throws <DirectoryNotFoundException>(() => sut.Convert(tilingRequest));
        }
Ejemplo n.º 7
0
        private void ValidateRequest(TilingRequest tilingRequest)
        {
            if (tilingRequest.DzSaveOptions == null)
            {
                throw new ArgumentNullException($"{nameof(tilingRequest.DzSaveOptions)} cannot be null");
            }

            if (tilingRequest.InputFile == null)
            {
                throw new ArgumentNullException($"{nameof(tilingRequest.InputFile)} cannot be null");
            }

            if (!tilingRequest.InputFile.Exists)
            {
                throw new FileNotFoundException("Input file for tiling does not exist.", tilingRequest.InputFile.PhysicalPath);
            }

            if (!outputDirProvider.GetDirectoryContents("").Exists)
            {
                throw new DirectoryNotFoundException($"Output directory ({tilingRequest.DzSaveOptions.OutputDirectory}) does not exist.");
            }
        }
Ejemplo n.º 8
0
        public void Convert_InputFileDoesNotExist_Error([Frozen] Mock <IFileInfo> fileInfoMock, TilingRequest tilingRequest, Converter sut)
        {
            // Arrange
            tilingRequest.InputFile = fileInfoMock.Object;
            fileInfoMock.Setup(fi => fi.Exists)
            .Returns(false);

            // Act // Assert
            Assert.Throws <FileNotFoundException>(() => sut.Convert(tilingRequest));
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            var inputFileFullPath       = "C:\\Users\\SadiaV\\Desktop\\OperaHouseTiles\\operahouse.tif";
            var outputDirectoryFullPath = $"C:\\TEMP\\dz-tests\\";
            var outputDir = "C:\\TEMP\\dz-tests\\";

            var outputName = $"try-{DateTime.Now.ToString("yyyy-MM-dd-HH.m")}";

            IVipsAdapter      vipsAdapter       = new VipsAdapter();
            IFileProvider     outputDirProvider = new PhysicalFileProvider(outputDir);
            IConverter        converter         = new Converter(vipsAdapter, outputDirProvider);
            IPreviewGenerator previewGenerator  = new PreviewGenerator.PreviewGenerator();

            var dzSaveOptions = new DzSaveOptions
            {
                TileSizePx      = 1024,
                OverlapPx       = 1,
                Quality         = 60,
                OutputDirectory = outputDir,
                OutputName      = outputName
            };

            var templateOutFile = Path.Combine(dzSaveOptions.OutputDirectory, $"{outputName}.html");



            var tilingRequest = new TilingRequest
            {
                InputFile     = new PhysicalFileProvider("C:\\Users\\SadiaV\\Desktop\\OperaHouseTiles\\").GetFileInfo("operahouse.tif"),
                DzSaveOptions = dzSaveOptions
            };

            TilingResult tilingResult = null;

            Console.Write($"Processing {inputFileFullPath}... ");
            try
            {
                tilingResult = converter.Convert(tilingRequest);
                Console.WriteLine("Done");
            }
            catch (TilerException e)
            {
                Console.WriteLine($"Failed: {e.Message}");
            }
            catch (Exception e)
            {
                Console.WriteLine($"Failed: {e.Message}");
            }

            if (tilingResult == null)
            {
                return;
            }

            PreviewGenerator.Models.GeneratorRequest generatorRequest = new PreviewGenerator.Models.GeneratorRequest
            {
                ImageHeight      = tilingResult.ImageHeight,
                ImageWidth       = tilingResult.ImageWidth,
                ImagesFolderName = tilingResult.OutputFolder,
                OverlapPx        = dzSaveOptions.OverlapPx,
                TileSizePx       = dzSaveOptions.TileSizePx
            };

            Console.Write("Generating template... ");
            var templateHtml = previewGenerator.GeneratePreviewHtmlFromTemplate(generatorRequest);

            Console.WriteLine("Done");

            Console.Write($"Writing template to {templateOutFile}... ");
            File.WriteAllText(templateOutFile, templateHtml);
            Console.WriteLine("Done");

            Console.Write("Starting web browser...");
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
            {
                FileName        = $"file:///{templateOutFile.Replace('\\', '/')}",
                UseShellExecute = true
            });
            Console.WriteLine("Done");

            Console.WriteLine("Upload to Azure Blob Storage? (y/n)");
            var k = Console.ReadKey().KeyChar;

            switch (k)
            {
            case 'y':
            case 'Y':
                Console.WriteLine("UPLOADING!!!!");
                break;

            default:
                Console.WriteLine("BYE");
                break;
            }
        }