Home | History | Annotate | Download | only in rebaseline_server
      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