From 4487bb1f42f14b03a29a3d9dceffcc1cc24d886e Mon Sep 17 00:00:00 2001 From: John Evans Date: Wed, 5 Feb 2014 11:35:05 -0500 Subject: [PATCH] Fixed repr on palette box. Closes #151 Had thought that numpy arrays could not be reconstituted through repr, but that is not the case. --- glymur/jp2box.py | 7 ++++--- glymur/test/test_jp2box.py | 10 +++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/glymur/jp2box.py b/glymur/jp2box.py index d3b4ed6..7960c8d 100644 --- a/glymur/jp2box.py +++ b/glymur/jp2box.py @@ -1543,9 +1543,10 @@ class PaletteBox(Jp2kBox): self.offset = offset def __repr__(self): - msg = "glymur.jp2box.PaletteBox(ndarray, bits_per_component={0}, " - msg += "signed={1})" - msg = msg.format(self.bits_per_component, self.signed) + msg = "glymur.jp2box.PaletteBox({0}, bits_per_component={1}, " + msg += "signed={2})" + msg = msg.format(repr(self.palette), self.bits_per_component, + self.signed) return msg def __str__(self): diff --git a/glymur/test/test_jp2box.py b/glymur/test/test_jp2box.py index ff4d075..83d656f 100644 --- a/glymur/test/test_jp2box.py +++ b/glymur/test/test_jp2box.py @@ -909,9 +909,13 @@ class TestRepr(unittest.TestCase): signed = (True, False, True) box = glymur.jp2box.PaletteBox(palette=palette, bits_per_component=bps, signed=(True, False, True)) - # The palette can't be reinstantiated thru eval/repr. - s = repr(box) - self.assertTrue(True) + + # Test will fail unless addition imports from numpy are done. + from numpy import array, int32 + newbox = eval(repr(box)) + np.testing.assert_array_equal(newbox.palette, palette) + self.assertEqual(newbox.bits_per_component, (8, 8, 16)) + self.assertEqual(newbox.signed, (True, False, True)) @unittest.skipIf(sys.hexversion < 0x02070000, "Requires 2.7+") def test_xml_box(self):