コード例 #1
0
        public void Test_Write()
        {
            long fileSize = new FileInfo(Files.RoseSparkleGIF).Length;

            Assert.AreEqual(fileSize, 9891);

            using (IMagickImageCollection collection = new MagickImageCollection(Files.RoseSparkleGIF))
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    collection.Write(memStream);

                    Assert.AreEqual(fileSize, memStream.Length);
                }
            }

            FileInfo tempFile = new FileInfo(Path.GetTempFileName() + ".gif");

            try
            {
                using (IMagickImageCollection collection = new MagickImageCollection(Files.RoseSparkleGIF))
                {
                    collection.Write(tempFile);

                    Assert.AreEqual(fileSize, tempFile.Length);
                }
            }
            finally
            {
                Cleanup.DeleteFile(tempFile);
            }
        }
コード例 #2
0
                public void ShouldThrowExceptionWhenXmlFileIsMissing()
                {
                    string path = Files.Root + @"../../src/Magick.Native/resources/Release";

#if Q8
                    path += "Q8";
#elif Q16
                    path += "Q16";
#else
                    path += "Q16-HDRI";
#endif

                    foreach (string fileName in Directory.GetFiles(path, "*.xml"))
                    {
                        string tempFile = fileName + ".tmp";

                        Cleanup.DeleteFile(tempFile);

                        File.Move(fileName, tempFile);

                        try
                        {
                            var exception = Assert.Throws <ArgumentException>("path", () =>
                            {
                                MagickNET.Initialize(path);
                            });

                            Assert.Contains("Unable to find file: " + Path.GetFullPath(fileName), exception.Message);
                        }
                        finally
                        {
                            File.Move(tempFile, fileName);
                        }
                    }
                }
コード例 #3
0
        public void Initialize_XmlFileIsMissing_ThrowsException()
        {
            string path = Files.Root + @"../../Source/Magick.NET.Native/Resources/xml";

            foreach (string fileName in Directory.GetFiles(path, "*.xml"))
            {
                string tempFile = fileName + ".tmp";

                Cleanup.DeleteFile(tempFile);

                File.Move(fileName, tempFile);

                try
                {
                    ExceptionAssert.ThrowsArgumentException("path", () =>
                    {
                        MagickNET.Initialize(path);
                    }, "Unable to find file: " + Path.GetFullPath(fileName));
                }
                finally
                {
                    File.Move(tempFile, fileName);
                }
            }
        }
コード例 #4
0
        public void Initialize_XmlFileIsMissing_ThrowsException()
        {
            string path = Files.Root + @"../../src/Magick.Native/resources/Release";

#if Q8
            path += "Q8";
#elif Q16
            path += "Q16";
#elif Q16HDRI
            path += "Q16-HDRI";
#else
#error Not implemented!
#endif

            foreach (string fileName in Directory.GetFiles(path, "*.xml"))
            {
                string tempFile = fileName + ".tmp";

                Cleanup.DeleteFile(tempFile);

                File.Move(fileName, tempFile);

                try
                {
                    ExceptionAssert.Throws <ArgumentException>("path", () =>
                    {
                        MagickNET.Initialize(path);
                    }, "Unable to find file: " + Path.GetFullPath(fileName));
                }
                finally
                {
                    File.Move(tempFile, fileName);
                }
            }
        }
コード例 #5
0
        public void Test_OnPostAuthorizeRequestFile()
        {
            MagickModule        module  = CreateFileModule();
            TestHttpContextBase context = new TestHttpContextBase();

            module.OnBeginRequest(context);
            module.OnPostAuthorizeRequest(context);

            Assert.IsNull(context.RemapedHandler);

            TestFileUrlResolver.Result = new TestFileUrlResolverResult();

            module.OnPostAuthorizeRequest(context);
            Assert.IsNull(context.RemapedHandler);

            TestFileUrlResolver.Result.FileName = "c:\foo.bar";

            module.OnPostAuthorizeRequest(context);
            Assert.IsNull(context.RemapedHandler);

            string tempFile = Path.GetTempFileName();

            try
            {
                TestFileUrlResolver.Result.FileName = tempFile;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Stegano;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Tiff;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Svg;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNotNull(context.RemapedHandler);
                Assert.AreEqual(context.RemapedHandler.GetType(), typeof(GzipHandler));
            }
            finally
            {
                Cleanup.DeleteFile(tempFile);
            }
        }
コード例 #6
0
        private MagickWebSettings LoadSettings(string config)
        {
            config = CreateConfig(config);

            _tempFile = Path.GetTempFileName();
            try
            {
                File.WriteAllText(_tempFile, config);

                MagickWebSettings settings = MagickWebSettings.CreateInstance(this);
                Assert.IsNotNull(settings);

                return(settings);
            }
            finally
            {
                Cleanup.DeleteFile(_tempFile);
            }
        }
コード例 #7
0
        public void Test_OnPostMapRequestHandlerFile()
        {
            MagickModule module = CreateFileModule();

            module.Init(new TestHttpApplication());

            TestHttpContextBase context = new TestHttpContextBase();

            module.OnBeginRequest(context);
            module.OnPostMapRequestHandler(context);

            Assert.IsNull(context.Handler);

            string tempFile = Path.GetTempFileName();

            try
            {
                TestFileUrlResolver.Result = new TestFileUrlResolverResult()
                {
                    FileName = tempFile,
                    Format   = MagickFormat.Jpg,
                };

                module.OnPostMapRequestHandler(context);
                Assert.IsNotNull(context.Handler);
                Assert.AreEqual(context.Handler.GetType(), typeof(ImageOptimizerHandler));

                TestFileUrlResolver.ScriptResult = new TestScriptData()
                {
                    OutputFormat = MagickFormat.Tiff,
                    Script       = XElement.Parse("<test/>").CreateNavigator(),
                };

                module.OnPostMapRequestHandler(context);
                Assert.IsNotNull(context.Handler);
                Assert.AreEqual(context.Handler.GetType(), typeof(MagickScriptHandler));
            }
            finally
            {
                Cleanup.DeleteFile(tempFile);
            }
        }
コード例 #8
0
        public void Initialize_XmlFileIsMissing_ThrowsException()
        {
            string path = Files.Root + @"../../Source/Magick.NET.Native/Resources/xml";

            foreach (string fileName in Directory.GetFiles(path, "*.xml"))
            {
                string tempFile = fileName + ".tmp";

                Cleanup.DeleteFile(tempFile);

                File.Move(fileName, tempFile);

                ExceptionAssert.Throws <ArgumentException>(() =>
                {
                    MagickNET.Initialize(path);
                }, "MagickNET._ImageMagickFiles does not contain: " + Path.GetFileName(fileName));

                File.Move(tempFile, fileName);
            }
        }
コード例 #9
0
        public void Test_Write304()
        {
            string config = @"<magick.net.web canCreateDirectories=""false"" cacheDirectory=""c:\cache""/>";

            MagickWebSettings settings = TestSectionLoader.Load(config);

            TestMagickHandler handler = new TestMagickHandler(settings, ImageData);

            HttpRequest request = new HttpRequest("foo", "https://bar", string.Empty);

            using (MemoryStream memStream = new MemoryStream())
            {
                using (StreamWriter writer = new StreamWriter(memStream))
                {
                    HttpResponse response = new HttpResponse(writer);
                    HttpContext  context  = new HttpContext(request, response);

                    FileInfo file          = new FileInfo(handler.FileName);
                    string   modifiedSince = file.LastWriteTimeUtc.AddMinutes(1).ToString("r", CultureInfo.InvariantCulture);
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);
                    Assert.AreEqual(file.LastWriteTimeUtc.ToString(), response.Cache.GetLastModified().ToString());

                    request.SetHeaders("If-Modified-Since", "foobar");
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);

                    modifiedSince = file.LastWriteTimeUtc.AddMinutes(1).ToString("r", CultureInfo.InvariantCulture) + "; foo";
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);

                    modifiedSince = file.LastWriteTimeUtc.ToString("r", CultureInfo.InvariantCulture);
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(304, response.StatusCode);

                    string tempFile = Path.GetTempFileName();
                    try
                    {
                        File.Copy(handler.FileName, tempFile, true);
                        File.SetLastWriteTimeUtc(tempFile, DateTime.Now.AddYears(2));

                        handler.FileName = tempFile;

                        request.SetHeaders("If-Modified-Since", modifiedSince);
                        handler.ProcessRequest(context);

                        Assert.AreEqual(304, response.StatusCode);
                        Assert.AreEqual(DateTime.Now.Year, response.Cache.GetLastModified().Year);
                    }
                    finally
                    {
                        Cleanup.DeleteFile(tempFile);
                    }
                }
            }
        }
コード例 #10
0
 public void Dispose()
 => Cleanup.DeleteFile(_tempFile);
コード例 #11
0
 public void Dispose()
 => Cleanup.DeleteFile(FileInfo);