added __repr__ for colr, cdef, ihdr boxes. #133

This commit is contained in:
John Evans 2013-10-23 06:01:48 -04:00
commit cdd00d2c2d
2 changed files with 99 additions and 17 deletions

View file

@ -206,6 +206,17 @@ class ColourSpecificationBox(Jp2kBox):
self.length = length
self.offset = offset
def __repr__(self):
msg = "glymur.jp2box.ColourSpecificationBox("
msg += "method={0}, precedence={1}, approximation={2}, colorspace={3}, "
msg += "icc_profile={4})"
msg = msg.format(self.method,
self.precedence,
self.approximation,
self.colorspace,
self.icc_profile)
return msg
def __str__(self):
msg = Jp2kBox.__str__(self)
@ -426,12 +437,12 @@ class ChannelDefinitionBox(Jp2kBox):
offset of the box from the start of the file.
longname : str
more verbose description of the box.
index : int
index : list
number of the channel. Defaults to monotonically increasing sequence,
i.e. [0, 1, 2, ...]
channel_type : int
channel_type : list
type of the channel
association : int
association : list
index of the associated color
"""
def __init__(self, index=None, channel_type=None, association=None,
@ -458,9 +469,9 @@ class ChannelDefinitionBox(Jp2kBox):
msg += " 65535 - unspecified"
raise IOError(msg)
self.index = index
self.channel_type = channel_type
self.association = association
self.index = tuple(index)
self.channel_type = tuple(channel_type)
self.association = tuple(association)
self.__dict__.update(**kwargs)
def __str__(self):
@ -475,6 +486,12 @@ class ChannelDefinitionBox(Jp2kBox):
msg = msg.format(self.index[j], color_type_string, assn)
return msg
def __repr__(self):
msg = "glymur.jp2box.ChannelDefinitionBox("
msg += "index={0}, channel_type={1}, association={2})"
msg = msg.format(self.index, self.channel_type, self.association)
return msg
def write(self, fptr):
"""Write a channel definition box to file.
"""
@ -921,6 +938,22 @@ class ImageHeaderBox(Jp2kBox):
self.length = length
self.offset = offset
def __repr__(self):
msg = "glymur.jp2box.ImageHeaderBox("
msg += "{height}, {width}, num_components={num_components}, "
msg += "signed={signed}, bits_per_component={bits_per_component}, "
msg += "compression={compression}, "
msg += "colorspace_unknown={colorspace_unknown}, "
msg += "ip_provided={ip_provided})"
msg = msg.format(height=self.height, width=self.width,
num_components=self.num_components,
signed=self.signed,
bits_per_component=self.bits_per_component,
compression=self.compression,
colorspace_unknown=self.colorspace_unknown,
ip_provided=self.ip_provided)
return msg
def __str__(self):
msg = Jp2kBox.__str__(self)
msg = "{0}"

View file

@ -677,10 +677,6 @@ class TestJp2Boxes(unittest.TestCase):
jp2k = glymur.jp2box.JPEG2000SignatureBox()
self.assertEqual(jp2k.signature, (13, 10, 135, 10))
# Test the representation instantiation.
newbox = eval(repr(jp2k))
self.assertTrue(isinstance(newbox, glymur.jp2box.JPEG2000SignatureBox))
def test_default_ftyp(self):
"""Should be able to instantiate a FileTypeBox"""
ftyp = glymur.jp2box.FileTypeBox()
@ -688,13 +684,6 @@ class TestJp2Boxes(unittest.TestCase):
self.assertEqual(ftyp.minor_version, 0)
self.assertEqual(ftyp.compatibility_list, ['jp2 '])
# Test the representation instantiation.
newbox = eval(repr(ftyp))
self.assertTrue(isinstance(newbox, glymur.jp2box.FileTypeBox))
self.assertEqual(newbox.brand, 'jp2 ')
self.assertEqual(newbox.minor_version, 0)
self.assertEqual(newbox.compatibility_list, ['jp2 '])
def test_default_ihdr(self):
"""Should be able to instantiate an image header box."""
ihdr = glymur.jp2box.ImageHeaderBox(height=512, width=256,
@ -720,6 +709,66 @@ class TestJp2Boxes(unittest.TestCase):
self.assertIsNone(box.main_header)
class TestRepr(unittest.TestCase):
"""Tests for __repr__ methods."""
def test_default_jp2k(self):
"""Should be able to eval a JPEG2000SignatureBox"""
jp2k = glymur.jp2box.JPEG2000SignatureBox()
# Test the representation instantiation.
newbox = eval(repr(jp2k))
self.assertTrue(isinstance(newbox, glymur.jp2box.JPEG2000SignatureBox))
self.assertEqual(newbox.signature, (13, 10, 135, 10))
def test_default_ftyp(self):
"""Should be able to instantiate a FileTypeBox"""
ftyp = glymur.jp2box.FileTypeBox()
# Test the representation instantiation.
newbox = eval(repr(ftyp))
self.assertTrue(isinstance(newbox, glymur.jp2box.FileTypeBox))
self.assertEqual(newbox.brand, 'jp2 ')
self.assertEqual(newbox.minor_version, 0)
self.assertEqual(newbox.compatibility_list, ['jp2 '])
def test_colourspecification_box(self):
"""Verify __repr__ method on colr box."""
# TODO: add icc_profile
box = ColourSpecificationBox(colorspace=glymur.core.SRGB)
newbox = eval(repr(box))
self.assertEqual(newbox.method, glymur.core.ENUMERATED_COLORSPACE)
self.assertEqual(newbox.precedence, 0)
self.assertEqual(newbox.approximation, 0)
self.assertEqual(newbox.colorspace, glymur.core.SRGB)
self.assertIsNone(newbox.icc_profile)
def test_channeldefinition_box(self):
"""Verify __repr__ method on cdef box."""
channel_type = [COLOR, COLOR, COLOR]
association = [RED, GREEN, BLUE]
cdef = glymur.jp2box.ChannelDefinitionBox(index=[0, 1, 2],
channel_type=channel_type,
association=association)
newbox = eval(repr(cdef))
self.assertEqual(newbox.index, (0, 1, 2))
self.assertEqual(newbox.channel_type, (COLOR, COLOR, COLOR))
self.assertEqual(newbox.association, (RED, GREEN, BLUE))
def test_imageheader_box(self):
"""Verify __repr__ method on ihdr box."""
ihdr = ImageHeaderBox(100, 200, num_components=3)
newbox = eval(repr(ihdr))
self.assertEqual(newbox.height, 100)
self.assertEqual(newbox.width, 200)
self.assertEqual(newbox.num_components, 3)
self.assertFalse(newbox.signed)
self.assertEqual(newbox.bits_per_component, 8)
self.assertEqual(newbox.compression, 7)
self.assertFalse(newbox.colorspace_unknown)
self.assertFalse(newbox.ip_provided)
class TestJpxBoxes(unittest.TestCase):
"""Tests for JPX boxes."""