| #!/usr/bin/python |
| |
| """ |
| Copyright 2014 Google Inc. |
| |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| |
| Test the render_pictures binary. |
| """ |
| |
| # System-level imports |
| import json |
| import os |
| import shutil |
| import tempfile |
| |
| # Imports from within Skia |
| import base_unittest |
| |
| |
| class RenderPicturesTest(base_unittest.TestCase): |
| |
| def setUp(self): |
| self._temp_dir = tempfile.mkdtemp() |
| |
| def tearDown(self): |
| shutil.rmtree(self._temp_dir) |
| |
| def test_tiled_whole_image_no_comparison(self): |
| """Run render_pictures with tiles and --writeWholeImage flag.""" |
| input_skp_path = os.path.join(self._temp_dir, 'input.skp') |
| output_json_path = os.path.join(self._temp_dir, 'output.json') |
| self._run_skpmaker(['--writePath', input_skp_path]) |
| self._run_render_pictures(['-r', input_skp_path, |
| '--bbh', 'grid', '256', '256', |
| '--mode', 'tile', '256', '256', |
| '--writeJsonSummaryPath', output_json_path, |
| '--writeWholeImage']) |
| expected_summary_dict = { |
| "actual-results" : { |
| "no-comparison" : { |
| "input.png" : [ "bitmap-64bitMD5", 12793741875005523433 ] |
| } |
| } |
| } |
| self._assert_json_contents(output_json_path, expected_summary_dict) |
| |
| def test_tiled_no_comparison(self): |
| """Generate individual tiles. |
| |
| TODO(epoger): The results of this test are currently broken! |
| The summary should contain a list of tiles, but for some reason, it is |
| empty.""" |
| input_skp_path = os.path.join(self._temp_dir, 'input.skp') |
| output_json_path = os.path.join(self._temp_dir, 'output.json') |
| self._run_skpmaker(['--writePath', input_skp_path]) |
| self._run_render_pictures(['-r', input_skp_path, |
| '--bbh', 'grid', '256', '256', |
| '--mode', 'tile', '256', '256', |
| '--writeJsonSummaryPath', output_json_path]) |
| expected_summary_dict = { |
| "actual-results" : { |
| "no-comparison" : None |
| } |
| } |
| self._assert_json_contents(output_json_path, expected_summary_dict) |
| |
| def test_untiled_no_comparison(self): |
| """Run without tiles. |
| |
| TODO(epoger): The results of this test are currently broken! |
| The summary should contain a single image, but for some reason, it is |
| empty.""" |
| input_skp_path = os.path.join(self._temp_dir, 'input.skp') |
| output_json_path = os.path.join(self._temp_dir, 'output.json') |
| self._run_skpmaker(['--writePath', input_skp_path]) |
| self._run_render_pictures(['-r', input_skp_path, |
| '--writeJsonSummaryPath', output_json_path]) |
| expected_summary_dict = { |
| "actual-results" : { |
| "no-comparison" : None |
| } |
| } |
| self._assert_json_contents(output_json_path, expected_summary_dict) |
| |
| def _run_render_pictures(self, args): |
| binary = self.find_path_to_program('render_pictures') |
| return self.run_command([binary, |
| '--clone', '1', |
| '--config', '8888', |
| '--validate' |
| ] + args) |
| |
| def _run_skpmaker(self, args): |
| binary = self.find_path_to_program('skpmaker') |
| return self.run_command([binary, |
| '--red', '255', |
| '--green', '0', |
| '--blue', '0', |
| '--width', '640', |
| '--height', '400', |
| ] + args) |
| |
| def _assert_json_contents(self, json_path, expected_dict): |
| """Asserts that contents of a JSON file are identical to expected_dict. |
| |
| Args: |
| json_path: Path to a JSON file. |
| expected_dict: Dictionary indicating the expected contents of the JSON |
| file. |
| |
| Raises: |
| AssertionError: contents of the JSON file are not identical to |
| expected_dict. |
| """ |
| file_contents = open(json_path, 'r').read() |
| actual_dict = json.loads(file_contents) |
| self.assertEqual(actual_dict, expected_dict) |
| |
| |
| def main(): |
| base_unittest.main(RenderPicturesTest) |
| |
| |
| if __name__ == '__main__': |
| main() |