diff --git a/glymur/jp2box.py b/glymur/jp2box.py
index 6466a63..c7d69d5 100644
--- a/glymur/jp2box.py
+++ b/glymur/jp2box.py
@@ -75,6 +75,12 @@ class Jp2kBox(object):
self.offset = offset
self.longname = longname
+ def __repr__(self):
+ msg = "glymur.jp2box.Jp2kBox(box_id='{0}', offset={1}, length={2}, "
+ msg += "longname='{3}')"
+ msg = msg.format(self.box_id, self.offset, self.length, self.longname)
+ return msg
+
def __str__(self):
msg = "{0} Box ({1})".format(self.longname, self.box_id)
msg += " @ ({0}, {1})".format(self.offset, self.length)
@@ -1273,6 +1279,12 @@ class PaletteBox(Jp2kBox):
self.length = length
self.offset = offset
+ def __repr__(self):
+ msg = "glymur.jp2box.PaletteBox({0}, bits_per_component={1}, "
+ msg += "signed={2})"
+ msg = msg.format(self.palette, self.bits_per_component, self.signed)
+ return msg
+
def __str__(self):
msg = Jp2kBox.__str__(self)
msg += '\n Size: ({0} x {1})'.format(len(self.palette[0]),
@@ -1895,6 +1907,9 @@ class XMLBox(Jp2kBox):
self.length = length
self.offset = offset
+ def __repr__(self):
+ return "glymur.jp2box.XMLBox(xml={0})".format(self.xml)
+
def __str__(self):
msg = Jp2kBox.__str__(self)
xml = self.xml
@@ -1953,7 +1968,6 @@ class XMLBox(Jp2kBox):
msg = msg.format(offset, ude.reason)
warnings.warn(msg, UserWarning)
-
# Strip out any trailing nulls, as they can foul up XML parsing.
text = text.rstrip(chr(0))
diff --git a/glymur/test/test_jp2box.py b/glymur/test/test_jp2box.py
index bf14789..117d52b 100644
--- a/glymur/test/test_jp2box.py
+++ b/glymur/test/test_jp2box.py
@@ -18,6 +18,7 @@ Test suite specifically targeting JP2 box layout.
import doctest
import os
+import re
import shutil
import struct
import sys
@@ -414,7 +415,7 @@ class TestAppend(unittest.TestCase):
jp2 = Jp2k(tfile.name)
the_xml = ET.fromstring('0')
- xmlbox = glymur.jp2box.XMLBox(xml=the_xml)
+ xmlbox = glymur.jp2box.XMLBox(xml=ET.ElementTree(the_xml))
jp2.append(xmlbox)
# The sequence of box IDs should be the same as before, but with an
@@ -865,6 +866,36 @@ class TestRepr(unittest.TestCase):
self.assertEqual(newbox.ulst[0], uuid1)
self.assertEqual(newbox.ulst[1], uuid2)
+ def test_jp2k_box(self):
+ """Verify Superclass repr."""
+ box = glymur.jp2box.Jp2kBox(box_id='one', offset=2, length=3,
+ longname='four')
+ newbox = eval(repr(box))
+ self.assertEqual(newbox.box_id, 'one')
+ self.assertEqual(newbox.offset, 2)
+ self.assertEqual(newbox.length, 3)
+ self.assertEqual(newbox.longname, 'four')
+
+ def test_palette_box(self):
+ """Verify Palette box repr."""
+ palette = np.array([[255, 0, 1000], [0, 255, 0]], dtype=np.int32)
+ bps = (8, 8, 16)
+ 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)
+
+ def test_xml_box(self):
+ """Verify xml box repr."""
+ elt = ET.fromstring('0')
+ tree = ET.ElementTree(elt)
+ box = glymur.jp2box.XMLBox(xml=tree)
+
+ regexp = "glymur.jp2box.XMLBox\(xml=\)"
+ self.assertRegexpMatches(repr(box), regexp)
class TestJpxBoxes(unittest.TestCase):
"""Tests for JPX boxes."""