def test_error_image_small_square(self): """Multiple errors, with a 128x128 image, outputs correctly.""" img = Image.open('testdata/full-image-small-square-with-error.png') self.process_image(img) self.args.error_outfile = self.args.tmppng('error') self.create_output() self.assertTrue(self.err.has()) errs = self.err.get() expect_errors = ['PaletteOverflowError @ block (1y,3x)', 'PaletteOverflowError @ tile (2y,10x)', ('ColorNotAllowedError @ tile (4y,1x) and ' + 'pixel (1y,2x) - "ff,ff,00"')] actual_errors = ['%s %s' % (type(e).__name__, str(e)) for e in errs] self.assertEqual(actual_errors, expect_errors) renderer = view_renderer.ViewRenderer() renderer.create_error_view(self.args.error_outfile, img, errs) self.assert_file_eq(self.args.error_outfile, 'testdata/errors-full-image-small-square.png')
def test_error_too_many_subsets(self): """If image colors cannot be merged into a valid palette, throw error.""" img = Image.open('testdata/full-image-conflict.png') self.process_image(img) self.args.error_outfile = self.args.tmppng('error') self.assertTrue(self.err.has()) es = self.err.get() expect_errors = [ 'PaletteTooManySubsets - valid: ' + '30-28-19-14,38-30-16-01\n' + 'subsets that can\'t be merged: ' + '[30-0c-0b,31-30-04,34-30-07]' ] actual_errors = ['%s %s' % (type(e).__name__, str(e)) for e in es] self.assertEqual(actual_errors, expect_errors) expect_list_blocks = [[1, 4], [2, 4], [3, 4]] self.assertEqual(es[0].list_blocks, expect_list_blocks) renderer = view_renderer.ViewRenderer() renderer.create_error_view(self.args.error_outfile, img, es) self.assert_file_eq(self.args.error_outfile, 'testdata/errors-conflict-palette.png')
def test_error_image(self): """Multiple errors, as an image.""" img = Image.open('testdata/full-image-with-error.png') self.process_image(img) self.args.error_outfile = self.args.tmppng('error') self.create_output() self.assertTrue(self.err.has()) errs = self.err.get() expect_errors = [ 'PaletteOverflowError @ block (1y,3x)', 'PaletteOverflowError @ tile (2y,10x)', ('CouldntConvertRGB : R ff, G ff, B 00' + ' @ tile (4y,1x) / pixel (33y,10x)') ] actual_errors = ['%s %s' % (type(e).__name__, str(e)) for e in errs] self.assertEqual(actual_errors, expect_errors) renderer = view_renderer.ViewRenderer() renderer.create_error_view(self.args.error_outfile, img, errs) self.assert_file_eq(self.args.error_outfile, 'testdata/errors-full-image.png')