示例#1
0
        public void ValidateWithoutSidecar()
        {
            // Tests the file in its original state
            var uri = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var res = new GIOTagLibFileAbstraction()
            {
                Uri = uri
            };

            var file = File.Create(res) as TagLib.Image.File;

            Assert.IsNotNull(file);

            XmpTag xmp = file.GetTag(TagTypes.XMP) as XmpTag;

            // Xmp.MicrosoftPhoto_1_.DateAcquired (XmpText/20) "2009-08-04T20:42:36Z"
            {
                var node = xmp.NodeTree;
                node = node.GetChild(XmpTag.MS_PHOTO_NS, "DateAcquired");
                Assert.IsNotNull(node);
                Assert.AreEqual("2009-08-04T20:42:36Z", node.Value);
                Assert.AreEqual(XmpNodeType.Simple, node.Type);
                Assert.AreEqual(0, node.Children.Count);
            }

            Assert.AreEqual(new string [] { "Kirche Sulzbach" }, file.ImageTag.Keywords);

            ImageTestHelper.DeleteTempFile(uri);
        }
示例#2
0
        public void ValidateWithBrokenSidecar()
        {
            // Tests the file with a sidecar
            var uri         = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var sidecar_uri = ImageTestHelper.CopySidecarToTest(uri, "taglib-sample-broken.xmp");

            var file = Metadata.Parse(uri);

            Assert.IsNotNull(file);

            XmpTag xmp = file.GetTag(TagTypes.XMP) as XmpTag;

            // Xmp.MicrosoftPhoto_1_.DateAcquired (XmpText/20) "2009-08-04T20:42:36Z"
            {
                var node = xmp.NodeTree;
                node = node.GetChild(XmpTag.MS_PHOTO_NS, "DateAcquired");
                Assert.AreEqual("2009-08-04T20:42:36Z", node.Value);
                Assert.AreEqual(XmpNodeType.Simple, node.Type);
                Assert.AreEqual(0, node.Children.Count);
            }

            Assert.AreEqual(new string [] { "Kirche Sulzbach" }, file.ImageTag.Keywords);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }
示例#3
0
        public void ValidateWithBrokenMetadata()
        {
            // Tests the file with a sidecar
            var uri         = ImageTestHelper.CreateTempFile("taglib-sample-broken.jpg");
            var sidecar_uri = ImageTestHelper.CopySidecarToTest(uri, "taglib-sample-broken.xmp");

            var file = Metadata.Parse(uri);

            Assert.IsNull(file);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }
示例#4
0
        public void StraightIOTest()
        {
            var uri = ImageTestHelper.CreateTempFile("taglib-sample.jpg");

            var file = File.Create(uri.AbsolutePath) as TagLib.Image.File;

            Assert.IsTrue(file != null);

            Validate(file);
            ChangeMetadata(file);

            file = File.Create(uri.AbsolutePath) as TagLib.Image.File;
            Assert.IsTrue(file != null);

            Validate(file);
            ValidateChangedMetadata(file);

            ImageTestHelper.DeleteTempFile(uri);
        }
示例#5
0
        public void ValidateWithBrokenSidecar()
        {
            // Tests the file with a sidecar
            var uri = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var res = new GIOTagLibFileAbstraction()
            {
                Uri = uri
            };
            var sidecar_uri = ImageTestHelper.CopySidecarToTest(uri, "taglib-sample-broken.xmp");
            var sidecar_res = new GIOTagLibFileAbstraction()
            {
                Uri = sidecar_uri
            };

            var file = File.Create(res) as TagLib.Image.File;

            Assert.IsNotNull(file);

            // Override by sidecar file should fail
            bool success = file.ParseXmpSidecar(sidecar_res);

            Assert.IsFalse(success);

            XmpTag xmp = file.GetTag(TagTypes.XMP) as XmpTag;

            // Xmp.MicrosoftPhoto_1_.DateAcquired (XmpText/20) "2009-08-04T20:42:36Z"
            {
                var node = xmp.NodeTree;
                node = node.GetChild(XmpTag.MS_PHOTO_NS, "DateAcquired");
                Assert.AreEqual("2009-08-04T20:42:36Z", node.Value);
                Assert.AreEqual(XmpNodeType.Simple, node.Type);
                Assert.AreEqual(0, node.Children.Count);
            }

            Assert.AreEqual(new string [] { "Kirche Sulzbach" }, file.ImageTag.Keywords);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }
示例#6
0
        public void ValidateWithSidecar()
        {
            // Tests the file with a sidecar
            var uri = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var res = new GIOTagLibFileAbstraction()
            {
                Uri = uri
            };
            var sidecar_uri = ImageTestHelper.CopySidecarToTest(uri, "taglib-sample.xmp");
            var sidecar_res = new GIOTagLibFileAbstraction()
            {
                Uri = sidecar_uri
            };

            var file = File.Create(res) as TagLib.Image.File;

            Assert.IsNotNull(file);

            // Override by sidecar file
            bool success = file.ParseXmpSidecar(sidecar_res);

            Assert.IsTrue(success);

            XmpTag xmp = file.GetTag(TagTypes.XMP) as XmpTag;

            // Xmp.MicrosoftPhoto_1_.DateAcquired (XmpText/20) "2009-08-04T20:42:36Z"
            {
                var node = xmp.NodeTree;
                node = node.GetChild(XmpTag.MS_PHOTO_NS, "DateAcquired");
                Assert.IsNull(node);
            }

            Assert.AreEqual(new string [] { "F-Spot", "metadata", "test" }, file.ImageTag.Keywords);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }
示例#7
0
        public void GIOTest()
        {
            var uri = ImageTestHelper.CreateTempFile("taglib-sample.jpg");

            var res = new GIOTagLibFileAbstraction()
            {
                Uri = uri
            };

            var file = File.Create(res) as TagLib.Image.File;

            Assert.IsTrue(file != null);

            Validate(file);
            ChangeMetadata(file);

            file = File.Create(res) as TagLib.Image.File;
            Assert.IsTrue(file != null);

            Validate(file);
            ValidateChangedMetadata(file);

            ImageTestHelper.DeleteTempFile(uri);
        }
示例#8
0
        public void ValidateWithSidecar()
        {
            // Tests the file with a sidecar
            var uri         = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var sidecar_uri = ImageTestHelper.CopySidecarToTest(uri, "taglib-sample.xmp");

            var file = Metadata.Parse(uri);

            Assert.IsNotNull(file);

            XmpTag xmp = file.GetTag(TagTypes.XMP) as XmpTag;

            // Xmp.MicrosoftPhoto_1_.DateAcquired (XmpText/20) "2009-08-04T20:42:36Z"
            {
                var node = xmp.NodeTree;
                node = node.GetChild(XmpTag.MS_PHOTO_NS, "DateAcquired");
                Assert.IsNull(node);
            }

            Assert.AreEqual(new string [] { "F-Spot", "metadata", "test" }, file.ImageTag.Keywords);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }
示例#9
0
        public void TestSidecarWrite()
        {
            var uri         = ImageTestHelper.CreateTempFile("taglib-sample.jpg");
            var sidecar_uri = uri.ReplaceExtension(".xmp");
            var res         = new GIOTagLibFileAbstraction()
            {
                Uri = uri
            };
            var sidecar_res = new GIOTagLibFileAbstraction()
            {
                Uri = sidecar_uri
            };

            Assert.IsTrue(sidecar_uri.ToString().EndsWith(".xmp"));

            var sidecar_file = GLib.FileFactory.NewForUri(sidecar_uri);

            Assert.IsFalse(sidecar_file.Exists);

            var file = File.Create(res) as TagLib.Image.File;

            Assert.IsNotNull(file);

            file.ImageTag.Keywords = new string [] { "Kirche Aarschot" };

            // Validate writing of the sidecar
            bool success = file.SaveXmpSidecar(sidecar_res);

            Assert.IsTrue(success);
            Assert.IsTrue(sidecar_file.Exists);

            var target = "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\"><rdf:RDF xm"
                         + "lns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">"
                         + "<rdf:Description MicrosoftPhoto:DateAcquired=\"2009-08-0"
                         + "4T20:42:36Z\" xmp:creatortool=\"Microsoft Windows Photo "
                         + "Gallery 6.0.6001.18000\" tiff:software=\"Microsoft Windo"
                         + "ws Photo Gallery 6.0.6001.18000\" tiff:Orientation=\"1\""
                         + " MicrosoftPhoto:Rating=\"1\" xmp:Rating=\"1\" xmlns:tiff"
                         + "=\"http://ns.adobe.com/tiff/1.0/\" xmlns:xmp=\"http://ns"
                         + ".adobe.com/xap/1.0/\" xmlns:MicrosoftPhoto=\"http://ns.m"
                         + "icrosoft.com/photo/1.0/\"><MicrosoftPhoto:LastKeywordXMP"
                         + "><rdf:Bag><rdf:li>Kirche Sulzbach</rdf:li></rdf:Bag></Mi"
                         + "crosoftPhoto:LastKeywordXMP><dc:subject xmlns:dc=\"http:"
                         + "//purl.org/dc/elements/1.1/\"><rdf:Bag><rdf:li>Kirche Aa"
                         + "rschot</rdf:li></rdf:Bag></dc:subject></rdf:Description>"
                         + "</rdf:RDF></x:xmpmeta>";

            string written;
            var    read_res = new GIOTagLibFileAbstraction()
            {
                Uri = sidecar_uri
            };

            using (var stream = read_res.ReadStream) {
                using (var reader = new System.IO.StreamReader(stream)) {
                    written = reader.ReadToEnd();
                }
            }
            Assert.AreEqual(target, written);

            // Check that the file is unchanged
            file = File.Create(res) as TagLib.Image.File;
            var keywords = file.ImageTag.Keywords;

            Assert.AreEqual(new string [] { "Kirche Sulzbach" }, keywords);

            ImageTestHelper.DeleteTempFile(uri);
            ImageTestHelper.DeleteTempFile(sidecar_uri);
        }