OLD | NEW |
| (Empty) |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import unittest | |
6 import sys | |
7 import os | |
8 from PIL import Image | |
9 | |
10 import image_tools | |
11 | |
12 | |
13 def _GenImage(size, color): | |
14 return Image.new('RGBA', size, color) | |
15 | |
16 | |
17 def _AllPixelsOfColor(image, color): | |
18 return not any(px != color for px in image.getdata()) | |
19 | |
20 | |
21 class ImageToolsTest(unittest.TestCase): | |
22 | |
23 def setUp(self): | |
24 self.black25 = _GenImage((25, 25), (0, 0, 0, 255)) | |
25 self.black50 = _GenImage((50, 50), (0, 0, 0, 255)) | |
26 self.white25 = _GenImage((25, 25), (255, 255, 255, 255)) | |
27 self.white50 = _GenImage((50, 50), (255, 255, 255, 255)) | |
28 | |
29 def testAreTheSameSize(self): | |
30 self.assertTrue(image_tools._AreTheSameSize([self.black25, self.black25])) | |
31 self.assertTrue(image_tools._AreTheSameSize([self.white25, self.white25])) | |
32 self.assertTrue(image_tools._AreTheSameSize([self.black50, self.black50])) | |
33 self.assertTrue(image_tools._AreTheSameSize([self.white50, self.white50])) | |
34 self.assertTrue(image_tools._AreTheSameSize([self.black25, self.white25])) | |
35 self.assertTrue(image_tools._AreTheSameSize([self.black50, self.white50])) | |
36 | |
37 self.assertFalse(image_tools._AreTheSameSize([self.black50, self.black25])) | |
38 self.assertFalse(image_tools._AreTheSameSize([self.white50, self.white25])) | |
39 self.assertFalse(image_tools._AreTheSameSize([self.black25, self.white50])) | |
40 self.assertFalse(image_tools._AreTheSameSize([self.black50, self.white25])) | |
41 | |
42 self.assertRaises(Exception, image_tools._AreTheSameSize, []) | |
43 self.assertRaises(Exception, image_tools._AreTheSameSize, [self.black50]) | |
44 | |
45 def testGetDifferenceWithMask(self): | |
46 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
47 self.black25, self.black25)[0], (255, 255, 255, 255))) | |
48 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
49 self.white25, self.black25)[0], (210, 0, 0, 255))) | |
50 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
51 self.black25, self.black25, mask=self.black25)[0], | |
52 (255, 255, 255, 255))) | |
53 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
54 self.black25, self.black25, mask=self.white25)[0], | |
55 (225, 225, 225, 255))) | |
56 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
57 self.black25, self.white25, mask=self.black25)[0], | |
58 (210, 0, 0, 255))) | |
59 self.assertTrue(_AllPixelsOfColor(image_tools._GetDifferenceWithMask( | |
60 self.black25, self.white25, mask=self.white25)[0], | |
61 (225, 225, 225, 255))) | |
62 self.assertRaises(Exception, image_tools._GetDifferenceWithMask, | |
63 self.white25, | |
64 self.black50) | |
65 self.assertRaises(Exception, image_tools._GetDifferenceWithMask, | |
66 self.white25, | |
67 self.white25, | |
68 mask=self.black50) | |
69 | |
70 def testCreateMask(self): | |
71 m1 = image_tools.CreateMask([self.black25, self.white25]) | |
72 self.assertTrue(_AllPixelsOfColor(m1, (255, 255, 255, 255))) | |
73 m2 = image_tools.CreateMask([self.black25, self.black25]) | |
74 self.assertTrue(_AllPixelsOfColor(m2, (0, 0, 0, 255))) | |
75 m3 = image_tools.CreateMask([self.white25, self.white25]) | |
76 self.assertTrue(_AllPixelsOfColor(m3, (0, 0, 0, 255))) | |
77 | |
78 def testAddMasks(self): | |
79 m1 = image_tools.CreateMask([self.black25, self.white25]) | |
80 m2 = image_tools.CreateMask([self.black25, self.black25]) | |
81 m3 = image_tools.CreateMask([self.black50, self.black50]) | |
82 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m1]), | |
83 (255, 255, 255, 255))) | |
84 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m2]), | |
85 (0, 0, 0, 255))) | |
86 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m1, m2]), | |
87 (255, 255, 255, 255))) | |
88 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m1, m1]), | |
89 (255, 255, 255, 255))) | |
90 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m2, m2]), | |
91 (0, 0, 0, 255))) | |
92 self.assertTrue(_AllPixelsOfColor(image_tools.AddMasks([m3]), | |
93 (0, 0, 0, 255))) | |
94 self.assertRaises(Exception, image_tools.AddMasks, []) | |
95 self.assertRaises(Exception, image_tools.AddMasks, [m1, m3]) | |
96 | |
97 def testTotalDifferentPixels(self): | |
98 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
99 self.white25), | |
100 0) | |
101 self.assertEquals(image_tools.TotalDifferentPixels(self.black25, | |
102 self.black25), | |
103 0) | |
104 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
105 self.black25), | |
106 25*25) | |
107 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
108 self.black25, | |
109 mask=self.white25), | |
110 0) | |
111 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
112 self.white25, | |
113 mask=self.white25), | |
114 0) | |
115 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
116 self.black25, | |
117 mask=self.black25), | |
118 25*25) | |
119 self.assertEquals(image_tools.TotalDifferentPixels(self.white25, | |
120 self.white25, | |
121 mask=self.black25), | |
122 0) | |
123 self.assertRaises(Exception, image_tools.TotalDifferentPixels, | |
124 self.white25, self.white50) | |
125 self.assertRaises(Exception, image_tools.TotalDifferentPixels, | |
126 self.white25, self.white25, mask=self.white50) | |
127 | |
128 def testSameImage(self): | |
129 self.assertTrue(image_tools.SameImage(self.white25, self.white25)) | |
130 self.assertFalse(image_tools.SameImage(self.white25, self.black25)) | |
131 | |
132 self.assertTrue(image_tools.SameImage(self.white25, self.black25, | |
133 mask=self.white25)) | |
134 self.assertFalse(image_tools.SameImage(self.white25, self.black25, | |
135 mask=self.black25)) | |
136 self.assertTrue(image_tools.SameImage(self.black25, self.black25)) | |
137 self.assertTrue(image_tools.SameImage(self.black25, self.black25, | |
138 mask=self.white25)) | |
139 self.assertTrue(image_tools.SameImage(self.white25, self.white25, | |
140 mask=self.white25)) | |
141 self.assertRaises(Exception, image_tools.SameImage, | |
142 self.white25, self.white50) | |
143 self.assertRaises(Exception, image_tools.SameImage, | |
144 self.white25, self.white25, | |
145 mask=self.white50) | |
146 | |
147 def testInflateMask(self): | |
148 cross_image = Image.new('RGBA', (3, 3)) | |
149 white_image = Image.new('RGBA', (3, 3)) | |
150 dot_image = Image.new('RGBA', (3, 3)) | |
151 b = (0, 0, 0, 255) | |
152 w = (255, 255, 255, 255) | |
153 dot_image.putdata([b, b, b, | |
154 b, w, b, | |
155 b, b, b]) | |
156 cross_image.putdata([b, w, b, | |
157 w, w, w, | |
158 b, w, b]) | |
159 white_image.putdata([w, w, w, | |
160 w, w, w, | |
161 w, w, w]) | |
162 self.assertEquals(list(image_tools.InflateMask(dot_image, 1).getdata()), | |
163 list(cross_image.getdata())) | |
164 self.assertEquals(list(image_tools.InflateMask(dot_image, 0).getdata()), | |
165 list(dot_image.getdata())) | |
166 self.assertEquals(list(image_tools.InflateMask(dot_image, 2).getdata()), | |
167 list(white_image.getdata())) | |
168 self.assertEquals(list(image_tools.InflateMask(dot_image, 3).getdata()), | |
169 list(white_image.getdata())) | |
170 self.assertEquals(list(image_tools.InflateMask(self.black25, 1).getdata()), | |
171 list(self.black25.getdata())) | |
172 | |
173 def testPNGEncodeDecode(self): | |
174 self.assertTrue(_AllPixelsOfColor( | |
175 image_tools.DecodePNG( | |
176 image_tools.EncodePNG(self.white25)), (255, 255, 255, 255))) | |
177 self.assertTrue(_AllPixelsOfColor( | |
178 image_tools.DecodePNG( | |
179 image_tools.EncodePNG(self.black25)), (0, 0, 0, 255))) | |
180 | |
181 | |
182 if __name__ == '__main__': | |
183 unittest.main() | |
OLD | NEW |