Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / bitmap_unittest.py
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 tempfile
6 import os
7 import unittest
8
9 from telemetry import test
10 from telemetry.core import bitmap
11 from telemetry.core import util
12
13
14 # This is a simple base64 encoded 2x2 PNG which contains, in order, a single
15 # Red, Yellow, Blue, and Green pixel.
16 test_png = """
17 iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91
18 JpzAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACx
19 MBAJqcGAAAABZJREFUCNdj/M/AwPCfgYGB4T/DfwY
20 AHAAD/iOWZXsAAAAASUVORK5CYII=
21 """
22 test_png_path = os.path.join(util.GetUnittestDataDir(), 'test_png.png')
23 test_png_2_path = os.path.join(util.GetUnittestDataDir(), 'test_png_2.png')
24
25
26 class BitmapTest(unittest.TestCase):
27
28   # pylint: disable=C0324
29
30   def testReadFromBase64Png(self):
31     bmp = bitmap.Bitmap.FromBase64Png(test_png)
32
33     self.assertEquals(2, bmp.width)
34     self.assertEquals(2, bmp.height)
35
36     bmp.GetPixelColor(0, 0).AssertIsRGB(255, 0, 0)
37     bmp.GetPixelColor(1, 1).AssertIsRGB(0, 255, 0)
38     bmp.GetPixelColor(0, 1).AssertIsRGB(0, 0, 255)
39     bmp.GetPixelColor(1, 0).AssertIsRGB(255, 255, 0)
40
41   def testReadFromPngFile(self):
42     file_bmp = bitmap.Bitmap.FromPngFile(test_png_path)
43
44     self.assertEquals(2, file_bmp.width)
45     self.assertEquals(2, file_bmp.height)
46
47     file_bmp.GetPixelColor(0, 0).AssertIsRGB(255, 0, 0)
48     file_bmp.GetPixelColor(1, 1).AssertIsRGB(0, 255, 0)
49     file_bmp.GetPixelColor(0, 1).AssertIsRGB(0, 0, 255)
50     file_bmp.GetPixelColor(1, 0).AssertIsRGB(255, 255, 0)
51
52   def testWritePngToPngFile(self):
53     orig = bitmap.Bitmap.FromPngFile(test_png_path)
54     temp_file = tempfile.NamedTemporaryFile().name
55     orig.WritePngFile(temp_file)
56     new_file = bitmap.Bitmap.FromPngFile(temp_file)
57     self.assertTrue(orig.IsEqual(new_file))
58
59   @test.Disabled
60   def testWriteCroppedBmpToPngFile(self):
61     pixels = [255,0,0, 255,255,0, 0,0,0,
62               255,255,0, 0,255,0, 0,0,0]
63     orig = bitmap.Bitmap(3, 3, 2, pixels)
64     orig.Crop(0, 0, 2, 2)
65     temp_file = tempfile.NamedTemporaryFile().name
66     orig.WritePngFile(temp_file)
67     new_file = bitmap.Bitmap.FromPngFile(temp_file)
68     self.assertTrue(orig.IsEqual(new_file))
69
70   def testIsEqual(self):
71     bmp = bitmap.Bitmap.FromBase64Png(test_png)
72     file_bmp = bitmap.Bitmap.FromPngFile(test_png_path)
73     self.assertTrue(bmp.IsEqual(file_bmp))
74
75   def testDiff(self):
76     file_bmp = bitmap.Bitmap.FromPngFile(test_png_path)
77     file_bmp_2 = bitmap.Bitmap.FromPngFile(test_png_2_path)
78
79     diff_bmp = file_bmp.Diff(file_bmp)
80
81     self.assertEquals(2, diff_bmp.width)
82     self.assertEquals(2, diff_bmp.height)
83
84     diff_bmp.GetPixelColor(0, 0).AssertIsRGB(0, 0, 0)
85     diff_bmp.GetPixelColor(1, 1).AssertIsRGB(0, 0, 0)
86     diff_bmp.GetPixelColor(0, 1).AssertIsRGB(0, 0, 0)
87     diff_bmp.GetPixelColor(1, 0).AssertIsRGB(0, 0, 0)
88
89     diff_bmp = file_bmp.Diff(file_bmp_2)
90
91     self.assertEquals(3, diff_bmp.width)
92     self.assertEquals(3, diff_bmp.height)
93
94     diff_bmp.GetPixelColor(0, 0).AssertIsRGB(0, 255, 255)
95     diff_bmp.GetPixelColor(1, 1).AssertIsRGB(255, 0, 255)
96     diff_bmp.GetPixelColor(0, 1).AssertIsRGB(255, 255, 0)
97     diff_bmp.GetPixelColor(1, 0).AssertIsRGB(0, 0, 255)
98
99     diff_bmp.GetPixelColor(0, 2).AssertIsRGB(255, 255, 255)
100     diff_bmp.GetPixelColor(1, 2).AssertIsRGB(255, 255, 255)
101     diff_bmp.GetPixelColor(2, 0).AssertIsRGB(255, 255, 255)
102     diff_bmp.GetPixelColor(2, 1).AssertIsRGB(255, 255, 255)
103     diff_bmp.GetPixelColor(2, 2).AssertIsRGB(255, 255, 255)
104
105   @test.Disabled
106   def testGetBoundingBox(self):
107     pixels = [0,0,0, 0,0,0, 0,0,0, 0,0,0,
108               0,0,0, 1,0,0, 1,0,0, 0,0,0,
109               0,0,0, 0,0,0, 0,0,0, 0,0,0]
110     bmp = bitmap.Bitmap(3, 4, 3, pixels)
111     box, count = bmp.GetBoundingBox(bitmap.RgbaColor(1, 0, 0))
112     self.assertEquals(box, (1, 1, 2, 1))
113     self.assertEquals(count, 2)
114
115     box, count = bmp.GetBoundingBox(bitmap.RgbaColor(0, 1, 0))
116     self.assertEquals(box, None)
117     self.assertEquals(count, 0)
118
119   @test.Disabled
120   def testCrop(self):
121     pixels = [0,0,0, 1,0,0, 2,0,0, 3,0,0,
122               0,1,0, 1,1,0, 2,1,0, 3,1,0,
123               0,2,0, 1,2,0, 2,2,0, 3,2,0]
124     bmp = bitmap.Bitmap(3, 4, 3, pixels)
125     bmp.Crop(1, 2, 2, 1)
126
127     self.assertEquals(bmp.width, 2)
128     self.assertEquals(bmp.height, 1)
129     bmp.GetPixelColor(0, 0).AssertIsRGB(1, 2, 0)
130     bmp.GetPixelColor(1, 0).AssertIsRGB(2, 2, 0)
131     self.assertEquals(bmp.pixels, bytearray([1,2,0, 2,2,0]))
132
133   @test.Disabled
134   def testHistogram(self):
135     pixels = [1,2,3, 1,2,3, 1,2,3, 1,2,3,
136               1,2,3, 8,7,6, 5,4,6, 1,2,3,
137               1,2,3, 8,7,6, 5,4,6, 1,2,3]
138     bmp = bitmap.Bitmap(3, 4, 3, pixels)
139     bmp.Crop(1, 1, 2, 2)
140
141     histogram = bmp.ColorHistogram()
142     self.assertEquals(sum(histogram), bmp.width * bmp.height * 3)
143     self.assertEquals(histogram[1], 0)
144     self.assertEquals(histogram[5], 2)
145     self.assertEquals(histogram[8], 2)
146     self.assertEquals(histogram[2 + 256], 0)
147     self.assertEquals(histogram[4 + 256], 2)
148     self.assertEquals(histogram[7 + 256], 2)
149     self.assertEquals(histogram[3 + 512], 0)
150     self.assertEquals(histogram[6 + 512], 4)
151
152   @test.Disabled
153   def testHistogramIgnoreColor(self):
154     pixels = [1,2,3, 1,2,3, 1,2,3, 1,2,3,
155               1,2,3, 8,7,6, 5,4,6, 1,2,3,
156               1,2,3, 8,7,6, 5,4,6, 1,2,3]
157     bmp = bitmap.Bitmap(3, 4, 3, pixels)
158
159     histogram = bmp.ColorHistogram(ignore_color=bitmap.RgbaColor(1, 2, 3))
160     self.assertEquals(histogram[1], 0)
161     self.assertEquals(histogram[5], 2)
162     self.assertEquals(histogram[8], 2)
163     self.assertEquals(histogram[2 + 256], 0)
164     self.assertEquals(histogram[4 + 256], 2)
165     self.assertEquals(histogram[7 + 256], 2)
166     self.assertEquals(histogram[3 + 512], 0)
167     self.assertEquals(histogram[6 + 512], 4)
168
169   @test.Disabled
170   def testHistogramIgnoreColorTolerance(self):
171     pixels = [1,2,3, 4,5,6,
172               7,8,9, 8,7,6]
173     bmp = bitmap.Bitmap(3, 2, 2, pixels)
174
175     histogram = bmp.ColorHistogram(ignore_color=bitmap.RgbaColor(0, 1, 2),
176                                    tolerance=1)
177     self.assertEquals(histogram[1], 0)
178     self.assertEquals(histogram[4], 1)
179     self.assertEquals(histogram[7], 1)
180     self.assertEquals(histogram[8], 1)
181     self.assertEquals(histogram[2 + 256], 0)
182     self.assertEquals(histogram[5 + 256], 1)
183     self.assertEquals(histogram[7 + 256], 1)
184     self.assertEquals(histogram[8 + 256], 1)
185     self.assertEquals(histogram[3 + 512], 0)
186     self.assertEquals(histogram[6 + 512], 2)
187     self.assertEquals(histogram[9 + 512], 1)