~osomon/pyexiv2/pyexiv2-0.3

« back to all changes in this revision

Viewing changes to test/metadata.py

  • Committer: Olivier Tilloy
  • Date: 2010-05-21 18:35:46 UTC
  • mfrom: (312.1.5 comment)
  • Revision ID: olivier@tilloy.net-20100521183546-k5hc7w973mi0l23l
Get, set and delete the image comment.
This was a regression compared to the 0.1.x series.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
import unittest
37
37
 
38
38
 
39
 
EMPTY_PNG_DATA = \
40
 
    '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08' \
41
 
    '\x02\x00\x00\x00\x90wS\xde\x00\x00\x00\x0cIDATx\x9cc```\x00\x00\x00\x04' \
42
 
    '\x00\x01\xf6\x178U\x00\x00\x00\x00IEND\xaeB`\x82'
 
39
EMPTY_JPG_DATA = \
 
40
    '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb' \
 
41
    '\x00C\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' \
 
42
    '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' \
 
43
    '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' \
 
44
    '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x0b\x08' \
 
45
    '\x00\x01\x00\x01\x01\x01\x11\x00\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01' \
 
46
    '\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06' \
 
47
    '\x07\x08\t\n\x0b\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05' \
 
48
    '\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa' \
 
49
    '\x07"q\x142\x81\x91\xa1\x08#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17' \
 
50
    "\x18\x19\x1a%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85" \
 
51
    '\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5' \
 
52
    '\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5' \
 
53
    '\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4' \
 
54
    '\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda' \
 
55
    '\x00\x08\x01\x01\x00\x00?\x00\x92\xbf\xff\xd9'
43
56
 
44
57
 
45
58
class TestImageMetadata(unittest.TestCase):
46
59
 
47
60
    def setUp(self):
48
61
        # Create an empty image file
49
 
        fd, self.pathname = tempfile.mkstemp(suffix='.png')
50
 
        os.write(fd, EMPTY_PNG_DATA)
 
62
        fd, self.pathname = tempfile.mkstemp(suffix='.jpg')
 
63
        os.write(fd, EMPTY_JPG_DATA)
51
64
        os.close(fd)
52
65
        # Write some metadata
53
66
        m = ImageMetadata(self.pathname)
58
71
        m['Iptc.Application2.DateCreated'] = [datetime.date(2004, 7, 13)]
59
72
        m['Xmp.dc.format'] = ('image', 'jpeg')
60
73
        m['Xmp.dc.subject'] = ['image', 'test', 'pyexiv2']
 
74
        m.comment = 'Hello World!'
61
75
        m.write()
62
76
        self.metadata = ImageMetadata(self.pathname)
63
77
 
477
491
        for key in keys:
478
492
            self.failUnlessRaises(KeyError, self.metadata.__delitem__, key)
479
493
 
 
494
    ##########################
 
495
    # Test the image comment #
 
496
    ##########################
 
497
    
 
498
    def test_get_comment(self):
 
499
        self.metadata.read()
 
500
        self.failUnlessEqual(self.metadata.comment, 'Hello World!')
 
501
 
 
502
    def test_set_comment(self):
 
503
        self.metadata.read()
 
504
        comment = 'Welcome to the real world.'
 
505
        self.metadata.comment = comment
 
506
        self.failUnlessEqual(self.metadata.comment, comment)
 
507
        self.metadata.comment = None
 
508
        self.failUnlessEqual(self.metadata.comment, '')
 
509
 
 
510
    def test_delete_comment(self):
 
511
        self.metadata.read()
 
512
        del self.metadata.comment
 
513
        self.failUnlessEqual(self.metadata.comment, '')
 
514
 
480
515
    ####################
481
516
    # Test metadata copy
482
517
    ####################
483
518
 
484
519
    def _set_up_other(self):
485
 
        self.other = ImageMetadata.from_buffer(EMPTY_PNG_DATA)
 
520
        self.other = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
486
521
 
487
522
    def test_copy_metadata(self):
488
523
        self.metadata.read()
511
546
        for key in self.metadata.xmp_keys:
512
547
            self.failUnlessEqual(self.metadata[key].value, self.other[key].value)
513
548
 
 
549
        self.failUnlessEqual(self.metadata.comment, self.other.comment)
 
550