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)