Change command line program to accept face dimensions as arguments, not transparency.
[toast/gimp_passport.git] / test_gimp_passport.py
1 import os
2 import unittest
3 from PIL import Image, ImageDraw
4 from gimp_passport import mm_to_pixel, num_tiles, num_tiles_xy, line, make_passport, tile, main
5
6
7 class TestMakePassport(unittest.TestCase):
8
9     def test_mm_to_pixel(self):
10         self.assertEqual(0, mm_to_pixel(0., 100))
11         self.assertEqual(200, mm_to_pixel(25.4, 200))
12         self.assertEqual(600, mm_to_pixel(2*25.4, 300))
13
14     def test_make_passport(self):
15         dpi = 90
16         img = Image.new('RGB', (mm_to_pixel(60, dpi), mm_to_pixel(80, dpi)), '#bbbbbb')
17         img.info['dpi'] = (dpi, dpi)
18         draw = ImageDraw.ImageDraw(img)
19         draw.rectangle((50, 60, 150, 170), fill='#00bbbbff')
20         pic = make_passport(img, (50, 60, 150, 170), 0.75, 35., 45.)
21         self.assertIsInstance(pic, Image.Image)
22
23     def test_num_tiles(self):
24         self.assertEqual(0, num_tiles(10., 11., 0., 0.))
25         self.assertEqual(1, num_tiles(10., 10., 0., 0.))
26         self.assertEqual(2, num_tiles(20., 10., 0., 0.))
27         self.assertEqual(1, num_tiles(20., 10., 1., 0.))
28         self.assertEqual(1, num_tiles(20., 10., 0., 1.))
29         self.assertEqual(3, num_tiles(30., 9., 0., 1.))
30         self.assertEqual(3, num_tiles(30., 9., 1., 0.))
31         self.assertEqual(2, num_tiles(30., 9., 1., 1.))
32
33     def test_num_tiles_xy(self):
34         self.assertEqual((3, 2), num_tiles_xy((45., 10.), (15., 5.), 0., 0.))
35         self.assertEqual((3, 2), num_tiles_xy((45., 10.), (15., 4.), 0., 0.))
36         self.assertEqual((2, 2), num_tiles_xy((45., 10.), (15., 4.), 0., 2.))
37         self.assertEqual((2, 1), num_tiles_xy((45., 10.), (15., 5.), 1., 1.))
38
39     def test_line(self):
40         img = Image.new('RGB', (100, 60))
41         line(img, 30, 0)
42         line(img, 40, 1)
43
44     def test_tile(self):
45         dpi = 90
46         img = Image.new('RGB', (mm_to_pixel(35, dpi), mm_to_pixel(45, dpi)), 'lightgray')
47         img.info['dpi'] = (dpi, dpi)
48         draw = ImageDraw.ImageDraw(img)
49         draw.rectangle((0, 0, img.width, img.height-1), outline='black')
50         paper = tile(img, 150, 100, 4, 2.)
51         self.assertIsInstance(paper, Image.Image)
52
53     def test_main(self):
54         source = 'test_image.jpg'
55         dest = 'test_image_result.jpg'
56         if os.path.exists(dest):
57             os.remove(dest)
58         main(35., 45., 4., 100., 150., 0., (1108, 280, 2180, 1620), source, dest)
59         self.assertTrue(os.path.exists(dest))