1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Copyright 2013 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport os 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom PIL import Image 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport sys 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport unittest 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport cloud_bucket 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport image_tools 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport ispy_utils 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport mock_cloud_bucket 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ISpyUtilsUnitTest(unittest.TestCase): 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def setUp(self): 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Set up structures that will be reused throughout testing. 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket = mock_cloud_bucket.MockCloudBucket() 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils = ispy_utils.ISpyUtils(self.bucket) 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.white = Image.new('RGBA', (25, 25), (255, 255, 255, 255)) 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.red = Image.new('RGBA', (25, 25), (255, 0, 0, 255)) 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.black = Image.new('RGBA', (25, 25), (0, 0, 0, 255)) 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.masked = Image.new('RGBA', (25, 25), (210, 0, 0, 255)) 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testUploadImage(self): 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some images to the datastore. 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/white.png', self.white) 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/black.png', self.black) 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/red.png', self.red) 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Confirm that the images actually got uploaded. 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore['path/to/white.png'], 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore['path/to/black.png'], 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore['path/to/red.png'], 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.red)) 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testDownloadImage(self): 42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some images to the datastore. 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/white.png', self.white) 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/black.png', self.black) 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/red.png', self.red) 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that the DownloadImage function gets the correct images. 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals( 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG( 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.DownloadImage('path/to/white.png')), 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals( 53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG( 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.DownloadImage('path/to/black.png')), 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals( 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG( 58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.DownloadImage('path/to/red.png')), 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.red)) 60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that the DownloadImage function throws an error for a 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # nonexistant image. 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertRaises(cloud_bucket.FileNotFoundError, 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.DownloadImage, 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 'path/to/yellow.png') 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testUpdateImage(self): 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some images to the datastore. 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UploadImage('path/to/image.png', self.white) 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore['path/to/image.png'], 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.UpdateImage('path/to/image.png', self.black) 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Confirm that the image actually got updated. 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore['path/to/image.png'], 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 77c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testGenerateExpectation(self): 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 79c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some tests to the datastore. 80c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test', [self.white, self.black]) 81c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.black, self.black]) 82c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test2', [self.black]) 83c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Confirm that the tests were successfully uploaded. 84c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 85c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test', 'expected.png')], 86c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 87c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 88c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test', 'mask.png')], 89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 90c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 91c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test1', 'expected.png')], 92c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 93c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 94c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test1', 'mask.png')], 95c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 96c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 97c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test2', 'expected.png')], 98c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 99c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 100c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test2', 'mask.png')], 101c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 102c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 103c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testPerformComparison(self): 104c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 105c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.red, self.red]) 106c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.black) 107c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(self.bucket.datastore[ 108c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetFailurePath('test', 'test1', 'actual.png')], 109c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 110c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.red) 111c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.bucket.datastore.has_key( 112c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetFailurePath('test', 'test1', 'actual.png'))) 113c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 114c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testGetExpectation(self): 115c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 116c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some tests to the datastore 117c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.black]) 118c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test2', [self.red, self.white]) 119c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch test1 = self.ispy_utils.GetExpectation('test1') 120c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch test2 = self.ispy_utils.GetExpectation('test2') 121c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that GetExpectation gets the appropriate tests. 122c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(test1.expected), 123c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 124c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(test1.mask), 125c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 126c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(test2.expected), 127c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.red)) 128c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(test2.mask), 129c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.white)) 130c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that GetExpectation throws an error for a nonexistant test. 131c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertRaises( 132c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch cloud_bucket.FileNotFoundError, self.ispy_utils.GetExpectation, 'test3') 133c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 134c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testExpectationExists(self): 135c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 136c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.black]) 137c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test2', [self.white, self.black]) 138c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test1')) 139c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test2')) 140c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.ExpectationExists('test3')) 141c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 142c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testFailureExists(self): 143c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 144c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.white]) 145c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.black) 146c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.white) 147c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.FailureExists('test', 'test1')) 148c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.FailureExists('test', 'test2')) 149c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 150c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testRemoveExpectation(self): 151c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 152c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.white]) 153c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test2', [self.white, self.white]) 154c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test1')) 155c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test2')) 156c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.RemoveExpectation('test1') 157c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.ExpectationExists('test1')) 158c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test2')) 159c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.RemoveExpectation('test2') 160c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.ExpectationExists('test1')) 161c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.ExpectationExists('test2')) 162c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 163c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testRemoveFailure(self): 164c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 165c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.white]) 166c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test2', [self.white, self.white]) 167c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.black) 168c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.RemoveFailure('test', 'test1') 169c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.FailureExists('test', 'test1')) 170c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test1')) 171c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertFalse(self.ispy_utils.FailureExists('test', 'test2')) 172c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertTrue(self.ispy_utils.ExpectationExists('test2')) 173c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 174c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testGetFailure(self): 175c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 176c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload a result 177c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.red, self.red]) 178c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.PerformComparison('test', 'test1', self.black) 179c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch res = self.ispy_utils.GetFailure('test', 'test1') 180c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that the function correctly got the result. 181c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(res.expected), 182c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.red)) 183c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(res.diff), 184c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.masked)) 185c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals(image_tools.EncodePNG(res.actual), 186c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_tools.EncodePNG(self.black)) 187c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that the function raises an error when given non-existant results. 188c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertRaises(cloud_bucket.FileNotFoundError, 189c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GetFailure, 'test', 'test2') 190c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 191c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def testGetAllPaths(self): 192c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.bucket.Reset() 193c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Upload some tests. 194c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.ispy_utils.GenerateExpectation('test1', [self.white, self.black]) 195c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Check that the function gets all urls matching the prefix. 196c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals( 197c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch set(self.ispy_utils.GetAllPaths( 198c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test1'))), 199c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch set([ispy_utils.GetExpectationPath('test1', 'expected.png'), 200c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test1', 'mask.png')])) 201c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEquals( 202c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch set(self.ispy_utils.GetAllPaths( 203c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ispy_utils.GetExpectationPath('test3'))), set()) 204c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 205c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 206c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochif __name__ == '__main__': 207c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch unittest.main() 208