예제 #1
0
class TestMetaHandler(unittest.TestCase):

    def setUp(self):
        self.mh = MetaHandler()

    def tearDown(self):
        del self.mh

    def test_store_metadata(self):
        metadata = {
            'title': 'Test title',
            'description': 'describing the image',
            'tags': ['One', 'two', 'Seven'],
            'lat': 39.94119033054447, 
            'lng': -75.1519775390625,
            'license': 'All Rights Reserved',
            'isfamily': 0,
            'date_posted': datetime.datetime(2011, 4, 12, 16, 23, 4)
        }

        ## ensure it doesnt break with format that does not
        ## support EXIF/XMP/IPTC
        filename = '/tmp/image.gif'
        Image.new("RGB", (200, 400)).save(filename)
        self.mh.store_metadata(filename, metadata)

        filename = '/tmp/image.jpg'
        Image.new("RGB", (200, 400)).save(filename)

        ## check empty metadata dictionary
        self.mh.store_metadata(filename, {})

        photo_meta = pyexiv2.ImageMetadata(filename)
        photo_meta.read()
        self.assertEquals(photo_meta.keys(), [])

        self.mh.store_metadata(filename, metadata)

    def test_degree_to_dms(self):
        d, m, s = MetaHandler.degree_to_dms(-87.728055)
        self.assertEquals(d, -87)
        self.assertEquals(m, 43)
        self.assertEquals(s, Decimal('41.00'))

        d, m, s = MetaHandler.degree_to_dms(87.728055, prec=5)
        self.assertEquals(d, 87)
        self.assertEquals(m, 43)
        self.assertEquals(s, Decimal('40.99800'))

    def test_convert_degrees_to_dms(self):
        expected_dict = {
            'lat': (39, 56, Decimal('28.29'), 'N'), 
            'lng': (75, 9, Decimal('7.12'), 'W')
        }
        dms = self.mh.convert_degrees_to_dms(
            39.94119033054447, 
            -75.1519775390625
        )
        self.assertEquals(expected_dict, dms)
           
        expected_dict = {
           'lat': (22, 52, Decimal('58.22'), 'S'), 
           'lng': (43, 13, Decimal('52.32'), 'W')
        }
        dms = self.mh.convert_degrees_to_dms(
            -22.882838743256254, 
            -43.231201171875
        )
        self.assertEquals(expected_dict, dms)