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); }
public void Convert_DzSaveOptionsNull_Error(TilingRequest tilingRequest, Converter sut) { // Arrange tilingRequest.DzSaveOptions = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => sut.Convert(tilingRequest)); }
public void Convert_InputFileNull_Error(TilingRequest tilingRequest, Converter sut) { // Arrange tilingRequest.InputFile = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => sut.Convert(tilingRequest)); }
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); }
/// <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" }); }
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)); }
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."); } }
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)); }
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; } }