Chromium Code Reviews| Index: gm/rebaseline_server/imagediffdb_test.py |
| diff --git a/gm/rebaseline_server/imagediffdb_test.py b/gm/rebaseline_server/imagediffdb_test.py |
| index 9d0dc0de0696fec5363f72ab9aa461f9e01e9803..642b08a805424f1068820c0378135c88186e0e37 100755 |
| --- a/gm/rebaseline_server/imagediffdb_test.py |
| +++ b/gm/rebaseline_server/imagediffdb_test.py |
| @@ -7,12 +7,13 @@ Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| Test imagediffdb.py |
| - |
| -TODO(epoger): Modify to use Python's unittest framework. |
| """ |
| # System-level imports |
| import logging |
| +import shutil |
| +import tempfile |
| +import unittest |
| # Local imports |
| import imagediffdb |
| @@ -20,49 +21,65 @@ import imagediffdb |
| IMAGE_URL_BASE = 'http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/' |
| + |
| +class ImageDiffDbTest(unittest.TestCase): |
| + |
| + def setUp(self): |
| + self._temp_dir = tempfile.mkdtemp() |
| + |
| + def tearDown(self): |
| + shutil.rmtree(self._temp_dir) |
| + |
| + def shortDescription(self): |
| + """Tell unittest framework to not print docstrings for test cases.""" |
| + return None |
| + |
| + def test_simple(self): |
| + # params for each self-test: |
| + # 0. expected image locator |
| + # 1. expected image URL |
| + # 2. actual image locator |
| + # 3. actual image URL |
| + # 4. expected percent_pixels_differing (as a string, to 4 decimal places) |
| + # 5. expected weighted_diff_measure (as a string, to 4 decimal places) |
| + # 6. expected max_diff_per_channel |
| + selftests = [ |
| + [ |
| + '16206093933823793653', |
| + IMAGE_URL_BASE + 'arcofzorro/16206093933823793653.png', |
| + '13786535001616823825', |
| + IMAGE_URL_BASE + 'arcofzorro/13786535001616823825.png', |
| + '0.0662', '0.0113', [255, 255, 247], |
| + ], |
| + [ |
| + '10552995703607727960', |
| + IMAGE_URL_BASE + 'gradients_degenerate_2pt/10552995703607727960.png', |
|
rmistry
2014/01/06 18:23:40
Nit: line > 80, use IMG_URL_BASE instead? :)
epoger
2014/01/06 18:33:02
Done. Sigh.
|
| + '11198253335583713230', |
| + IMAGE_URL_BASE + 'gradients_degenerate_2pt/11198253335583713230.png', |
| + '100.0000', '66.6667', [255, 0, 255], |
| + ], |
| + ] |
| + |
| + # Add all image pairs to the database |
| + db = imagediffdb.ImageDiffDB(self._temp_dir) |
| + for selftest in selftests: |
| + retval = db.add_image_pair( |
| + expected_image_locator=selftest[0], expected_image_url=selftest[1], |
| + actual_image_locator=selftest[2], actual_image_url=selftest[3]) |
| + |
| + # Fetch each image pair from the database |
| + for selftest in selftests: |
| + record = db.get_diff_record(expected_image_locator=selftest[0], |
| + actual_image_locator=selftest[2]) |
| + self.assertEqual('%.4f' % record.get_percent_pixels_differing(), |
| + selftest[4]) |
| + self.assertEqual('%.4f' % record.get_weighted_diff_measure(), selftest[5]) |
| + self.assertEqual(record.get_max_diff_per_channel(), selftest[6]) |
| + |
| + |
| def main(): |
| - logging.basicConfig(level=logging.INFO) |
| - |
| - # params for each self-test: |
| - # 0. expected image locator |
| - # 1. expected image URL |
| - # 2. actual image locator |
| - # 3. actual image URL |
| - # 4. expected percent_pixels_differing (as a string, to 4 decimal places) |
| - # 5. expected weighted_diff_measure (as a string, to 4 decimal places) |
| - # 6. expected max_diff_per_channel |
| - selftests = [ |
| - [ |
| - '16206093933823793653', |
| - IMAGE_URL_BASE + 'arcofzorro/16206093933823793653.png', |
| - '13786535001616823825', |
| - IMAGE_URL_BASE + 'arcofzorro/13786535001616823825.png', |
| - '0.0662', '0.0113', [255, 255, 247], |
| - ], |
| - [ |
| - '10552995703607727960', |
| - IMAGE_URL_BASE + 'gradients_degenerate_2pt/10552995703607727960.png', |
| - '11198253335583713230', |
| - IMAGE_URL_BASE + 'gradients_degenerate_2pt/11198253335583713230.png', |
| - '100.0000', '66.6667', [255, 0, 255], |
| - ], |
| - ] |
| - |
| - # Add all image pairs to the database |
| - db = imagediffdb.ImageDiffDB('/tmp/ImageDiffDB') |
| - for selftest in selftests: |
| - retval = db.add_image_pair( |
| - expected_image_locator=selftest[0], expected_image_url=selftest[1], |
| - actual_image_locator=selftest[2], actual_image_url=selftest[3]) |
| - |
| - # Fetch each image pair from the database |
| - for selftest in selftests: |
| - record = db.get_diff_record(expected_image_locator=selftest[0], |
| - actual_image_locator=selftest[2]) |
| - assert (('%.4f' % record.get_percent_pixels_differing()) == selftest[4]) |
| - assert (('%.4f' % record.get_weighted_diff_measure()) == selftest[5]) |
| - assert (record.get_max_diff_per_channel() == selftest[6]) |
| - logging.info("Self-test completed successfully!") |
| + suite = unittest.TestLoader().loadTestsFromTestCase(ImageDiffDbTest) |
| + unittest.TextTestRunner(verbosity=2).run(suite) |
| if __name__ == '__main__': |