From 7aa65b64997fc00357513c9e579bfe98c6e00df8 Mon Sep 17 00:00:00 2001 From: Andreas Huggel Date: Wed, 24 Nov 2004 12:33:22 +0000 Subject: [PATCH] Updated tests. Still needs work. --- src/Todo | 1 - src/write-test.out | 220 ----------------------------- src/write2-test.cpp | 28 +++- {src => test/data}/write2-test.out | 14 +- test/exiv2-test.sh | 8 +- test/write2-test.sh | 18 +++ 6 files changed, 56 insertions(+), 233 deletions(-) delete mode 100644 src/write-test.out rename {src => test/data}/write2-test.out (83%) create mode 100755 test/write2-test.sh diff --git a/src/Todo b/src/Todo index 293e9863..745dd067 100644 --- a/src/Todo +++ b/src/Todo @@ -14,7 +14,6 @@ Library Features: + set thumbnail, write thumbnail tags + Make it possible to force write from metadata (just an optional arg to write?) -+ Get rid of Image::detach and make Image open files on-demand + Make Image::doWriteMetadata do its work in a single pass + Revise Image and IptcData+ExifData API (aka turn it inside out) diff --git a/src/write-test.out b/src/write-test.out deleted file mode 100644 index adb1a05e..00000000 --- a/src/write-test.out +++ /dev/null @@ -1,220 +0,0 @@ ------------------------------------------------------------- -Case 1: Non-intrusive change to the standard Exif metadata ----> Reading file ./img_1771.jpg ----> Modifying Exif data ----> Writing Exif data to file test1.jpg -->>>>>> using non-intrusive writing <<<<<<- ----> Reading file test1.jpg ----> Writing Exif thumbnail to file thumb1.* -13c13 -< Exif.Photo.DateTimeOriginal 0x9003 2003:12:14 12:01:44 ---- -> Exif.Photo.DateTimeOriginal 0x9003 1999:11:22 00:11:22 ------------------------------------------------------------- -Case 2: Non-intrusive change to the makernote metadata ----> Reading file ./img_1771.jpg ----> Modifying Exif data ----> Writing Exif data to file test2.jpg -->>>>>> using non-intrusive writing <<<<<<- ----> Reading file test2.jpg ----> Writing Exif thumbnail to file thumb2.* -49c49 -< Exif.Canon.OwnerName 0x0009 Andreas Huggel ---- -> Exif.Canon.OwnerName 0x0009 Chan YeeSend ------------------------------------------------------------- -Case 3: Non-intrusive change to the Exif metadata (w/o makernote) ----> Reading file ./kodak-dc210.jpg ----> Modifying Exif data ----> Writing Exif data to file test3.jpg -->>>>>> using non-intrusive writing <<<<<<- ----> Reading file test3.jpg ----> Writing Exif thumbnail to file thumb3.* -14c14 -< Exif.Photo.DateTimeOriginal 0x9003 2000:10:26 16:46:51 ---- -> Exif.Photo.DateTimeOriginal 0x9003 1999:11:22 00:11:22 ------------------------------------------------------------- -Case 4: Intrusive change to the standard Exif metadata ----> Reading file ./img_1771.jpg ----> Modifying Exif data ----> Writing Exif data to file test4.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test4.jpg ----> Writing Exif thumbnail to file thumb4.* -9c9 -< Exif.Image.ExifTag 0x8769 196 ---- -> Exif.Image.ExifTag 0x8769 184 -13c13 -< Exif.Photo.DateTimeOriginal 0x9003 2003:12:14 12:01:44 ---- -> Exif.Photo.DateTimeOriginal 0x9003 1999:11:22 00:11:22 and twenty seconds -29c29 -< Exif.Photo.InteroperabilityTag 0xa005 1416 ---- -> Exif.Photo.InteroperabilityTag 0xa005 1423 -60c60 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 2036 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1571 ------------------------------------------------------------- -Case 5: Intrusive change to the Canon makernote metadata ----> Reading file ./img_1771.jpg ----> Modifying Exif data ----> Writing Exif data to file test5.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test5.jpg ----> Writing Exif thumbnail to file thumb5.* -9c9 -< Exif.Image.ExifTag 0x8769 196 ---- -> Exif.Image.ExifTag 0x8769 184 -29c29 -< Exif.Photo.InteroperabilityTag 0xa005 1416 ---- -> Exif.Photo.InteroperabilityTag 0xa005 1414 -49c49 -< Exif.Canon.OwnerName 0x0009 Andreas Huggel ---- -> Exif.Canon.OwnerName 0x0009 Frau Chan YeeSend und Herr Andreas Huggel -60c60 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 2036 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1562 ------------------------------------------------------------- -Case 6: Intrusive change to the Exif metadata (w/o makernote) ----> Reading file ./kodak-dc210.jpg ----> Modifying Exif data ----> Writing Exif data to file test6.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test6.jpg ----> Writing Exif thumbnail to file thumb6.* -10c10 -< Exif.Image.ExifTag 0x8769 374 ---- -> Exif.Image.ExifTag 0x8769 192 -14c14 -< Exif.Photo.DateTimeOriginal 0x9003 2000:10:26 16:46:51 ---- -> Exif.Photo.DateTimeOriginal 0x9003 1999:11:22 00:11:22 and twenty seconds -33c33 -< Exif.Thumbnail.StripOffsets 0x0111 928 ---- -> Exif.Thumbnail.StripOffsets 0x0111 765 ------------------------------------------------------------- -Case 7: Intrusive change to the Fujifilm makernote metadata ----> Reading file ./dscf0176.jpg ----> Modifying Exif data ----> Writing Exif data to file test7.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test7.jpg ----> Writing Exif thumbnail to file thumb7.* -11c11 -< Exif.Image.ExifTag 0x8769 248 ---- -> Exif.Image.ExifTag 0x8769 245 -33c33 -< Exif.Photo.InteroperabilityTag 0xa005 1056 ---- -> Exif.Photo.InteroperabilityTag 0xa005 1070 -50c50 -< Exif.Fujifilm.Quality 0x1000 NORMAL ---- -> Exif.Fujifilm.Quality 0x1000 Typical Fujifilm Quality -72c72 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1204 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1218 ------------------------------------------------------------- -Case 8: Intrusive change to the Sigma makernote metadata ----> Reading file ./sigma-d10-IMG10086.jpg ----> Modifying Exif data ----> Writing Exif data to file test8.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test8.jpg ----> Writing Exif thumbnail to file thumb8.* -10c10 -< Exif.Image.ExifTag 0x8769 12317 ---- -> Exif.Image.ExifTag 0x8769 213 -38c38 -< Exif.Sigma.ResolutionMode 0x0004 HI ---- -> Exif.Sigma.ResolutionMode 0x0004 Sigma HI resolution -63c63 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 303 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1239 ------------------------------------------------------------- -Case 9: Intrusive change to the Nikon1 makernote metadata ----> Reading file ./nikon-coolpix-990-DSCN1180.jpg ----> Modifying Exif data ----> Writing Exif data to file test9.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test9.jpg ----> Writing Exif thumbnail to file thumb9.* -11c11 -< Exif.Image.ExifTag 0x8769 284 ---- -> Exif.Image.ExifTag 0x8769 213 -32c32 -< Exif.Photo.InteroperabilityTag 0xa005 886 ---- -> Exif.Photo.InteroperabilityTag 0xa005 1214 -38c38 -< Exif.Nikon1.Quality 0x0004 FINE ---- -> Exif.Nikon1.Quality 0x0004 Typical Nikon1 Quality -57c57 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 4084 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1338 ------------------------------------------------------------- -Case 10: Intrusive change to the Nikon2 makernote metadata ----> Reading file ./nikon-e950.jpg ----> Modifying Exif data ----> Writing Exif data to file test10.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test10.jpg ----> Writing Exif thumbnail to file thumb10.* -11c11 -< Exif.Image.ExifTag 0x8769 284 ---- -> Exif.Image.ExifTag 0x8769 212 -32c32 -< Exif.Photo.InteroperabilityTag 0xa005 886 ---- -> Exif.Photo.InteroperabilityTag 0xa005 1038 -35c35 -< Exif.Nikon2.0x0002 0x0002 08.00 ---- -> Exif.Nikon2.0x0002 0x0002 Nikon2 Version 2 -52c52 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 2036 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 1162 ------------------------------------------------------------- -Case 11: Intrusive change to the Nikon3 makernote metadata ----> Reading file ./nikon-d70-dsc_0063.jpg ----> Modifying Exif data ----> Writing Exif data to file test11.jpg -->>>>>> writing from metadata <<<<<<- ----> Reading file test11.jpg ----> Writing Exif thumbnail to file thumb11.* -13c13 -< Exif.Image.ExifTag 0x8769 340 ---- -> Exif.Image.ExifTag 0x8769 332 -36c36 -< Exif.Photo.InteroperabilityTag 0xa005 30306 ---- -> Exif.Photo.InteroperabilityTag 0xa005 2402 -55c55 -< Exif.Nikon3.Quality 0x0004 FINE ---- -> Exif.Nikon3.Quality 0x0004 Typical Nikon3 Quality -101c101 -< Exif.Thumbnail.JPEGInterchangeFormat 0x0201 30444 ---- -> Exif.Thumbnail.JPEGInterchangeFormat 0x0201 2538 diff --git a/src/write2-test.cpp b/src/write2-test.cpp index 46e81691..f7ba59e2 100644 --- a/src/write2-test.cpp +++ b/src/write2-test.cpp @@ -29,7 +29,7 @@ try { } std::string file(argv[1]); - std::cout <<"----- Two IFD0 tags\n"; + std::cout <<"----- Some IFD0 tags\n"; Exiv2::ExifData ed1; Exiv2::Exifdatum md1(Exiv2::ExifKey("Exif.Image.Model")); md1.setValue("Test 1"); @@ -162,18 +162,34 @@ try { write(file, ed4); print(file); - // Todo: Fix this std::cout <<"\n----- One IFD1 tag\n"; Exiv2::ExifData ed5; Exiv2::Exifdatum md5(Exiv2::ExifKey("Exif.Thumbnail.Artist")); md5.setValue("Test 5"); ed5.add(md5); + write(file, ed5); + print(file); - Exiv2::Exifdatum md6(Exiv2::ExifKey("Exif.Image.Model")); - md6.setValue("Test 5 (Fix me!)"); - ed5.add(md6); + std::cout <<"\n----- One IOP and one IFD1 tag\n"; + Exiv2::ExifData ed6; + Exiv2::Exifdatum md6(Exiv2::ExifKey("Exif.Iop.InteroperabilityVersion")); + md6.setValue("Test 6 Iop tag"); + ed6.add(md6); + Exiv2::Exifdatum md7(Exiv2::ExifKey("Exif.Thumbnail.Artist")); + md7.setValue("Test 6 Ifd1 tag"); + ed6.add(md7); + write(file, ed6); + print(file); - write(file, ed5); + std::cout <<"\n----- One IFD0 and one IFD1 tag\n"; + Exiv2::ExifData ed7; + Exiv2::Exifdatum md8(Exiv2::ExifKey("Exif.Thumbnail.Artist")); + md8.setValue("Test 7"); + ed7.add(md8); + Exiv2::Value::AutoPtr v5 = Exiv2::Value::create(Exiv2::unsignedShort); + v5->read("160 161 162 163"); + ed7.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v5.get()); + write(file, ed7); print(file); return 0; diff --git a/src/write2-test.out b/test/data/write2-test.out similarity index 83% rename from src/write2-test.out rename to test/data/write2-test.out index f5e24099..e202d06d 100644 --- a/src/write2-test.out +++ b/test/data/write2-test.out @@ -1,4 +1,4 @@ ------ Two IFD0 tags +----- Some IFD0 tags Exif.Image.Model 0x0110 IFD0 Ascii 7 Test 1 Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163 Exif.Image.XResolution 0x011a IFD0 SLong 4 -2 -1 0 1 @@ -55,4 +55,14 @@ Exif.Image.GPSTag 0x8825 IFD0 Long 1 Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Ascii 7 Test 4 ----- One IFD1 tag -Exif.Image.Model 0x0110 IFD0 Ascii 17 Test 5 (Fix me!) +Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 5 + +----- One IOP and one IFD1 tag +Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 +Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 +Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 15 Test 6 Iop tag +Exif.Thumbnail.Artist 0x013b IFD1 Ascii 16 Test 6 Ifd1 tag + +----- One IFD0 and one IFD1 tag +Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163 +Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 7 diff --git a/test/exiv2-test.sh b/test/exiv2-test.sh index 49b2a745..5b943c99 100755 --- a/test/exiv2-test.sh +++ b/test/exiv2-test.sh @@ -31,15 +31,15 @@ $exiv2 -vf rename *.jpg echo echo "Print --------------------------------------------------------------------" $exiv2 -v print *.jpg -$exiv2 -v -pi print *.jpg -$exiv2 -v -pi print *.jpg > iii +$exiv2 -v -pt print *.jpg +$exiv2 -v -pt print *.jpg > iii echo echo "Extract Exif data --------------------------------------------------------" $exiv2 -vf extract *.jpg echo echo "Extract Thumbnail --------------------------------------------------------" $exiv2 -vf -et extract *.jpg -$exiv2 -v -pi print *.exv > jjj +$exiv2 -v -pt print *.exv > jjj echo echo "Compare image data and extracted data ------------------------------------" diff iii jjj @@ -54,7 +54,7 @@ $exiv2 -v print *.jpg echo echo "Insert Exif data ---------------------------------------------------------" $exiv2 -v insert *.jpg -$exiv2 -v -pi print *.exv > kkk +$exiv2 -v -pt print *.exv > kkk echo echo "Compare original and inserted image data ---------------------------------" diff iii kkk diff --git a/test/write2-test.sh b/test/write2-test.sh new file mode 100755 index 00000000..0565920e --- /dev/null +++ b/test/write2-test.sh @@ -0,0 +1,18 @@ +#! /bin/sh +# Test driver for write unit tests to build Exif metadata from scratch +results="./tmp/write2-test.out" +good="./data/write2-test.out" +( +binpath="../../src" +cp -f ./data/exiv2-empty.jpg ./tmp +cd ./tmp +$binpath/write2-test exiv2-empty.jpg +) > $results + +diff -q $results $good +rc=$? +if [ $rc -eq 0 ] ; then + echo "All testcases passed." +else + diff $results $good +fi