1 #!/usr/bin/python 2 3 """ 4 Copyright 2013 Google Inc. 5 6 Use of this source code is governed by a BSD-style license that can be 7 found in the LICENSE file. 8 9 Test imagediffdb.py 10 11 TODO(epoger): Modify to use Python's unittest framework. 12 """ 13 14 # System-level imports 15 import logging 16 17 # Local imports 18 import imagediffdb 19 20 21 IMAGE_URL_BASE = 'http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/' 22 23 def main(): 24 logging.basicConfig(level=logging.INFO) 25 26 # params for each self-test: 27 # 0. expected image locator 28 # 1. expected image URL 29 # 2. actual image locator 30 # 3. actual image URL 31 # 4. expected percent_pixels_differing (as a string, to 4 decimal places) 32 # 5. expected weighted_diff_measure (as a string, to 4 decimal places) 33 # 6. expected max_diff_per_channel 34 selftests = [ 35 [ 36 '16206093933823793653', 37 IMAGE_URL_BASE + 'arcofzorro/16206093933823793653.png', 38 '13786535001616823825', 39 IMAGE_URL_BASE + 'arcofzorro/13786535001616823825.png', 40 '0.0662', '0.0113', [255, 255, 247], 41 ], 42 [ 43 '10552995703607727960', 44 IMAGE_URL_BASE + 'gradients_degenerate_2pt/10552995703607727960.png', 45 '11198253335583713230', 46 IMAGE_URL_BASE + 'gradients_degenerate_2pt/11198253335583713230.png', 47 '100.0000', '66.6667', [255, 0, 255], 48 ], 49 ] 50 51 # Add all image pairs to the database 52 db = imagediffdb.ImageDiffDB('/tmp/ImageDiffDB') 53 for selftest in selftests: 54 retval = db.add_image_pair( 55 expected_image_locator=selftest[0], expected_image_url=selftest[1], 56 actual_image_locator=selftest[2], actual_image_url=selftest[3]) 57 58 # Fetch each image pair from the database 59 for selftest in selftests: 60 record = db.get_diff_record(expected_image_locator=selftest[0], 61 actual_image_locator=selftest[2]) 62 assert (('%.4f' % record.get_percent_pixels_differing()) == selftest[4]) 63 assert (('%.4f' % record.get_weighted_diff_measure()) == selftest[5]) 64 assert (record.get_max_diff_per_channel() == selftest[6]) 65 logging.info("Self-test completed successfully!") 66 67 68 if __name__ == '__main__': 69 main() 70