Allowing DataReferenceBoxes to be empty. #175

This commit is contained in:
John Evans 2014-02-20 09:19:41 -05:00
commit 4276a978ea
2 changed files with 18 additions and 2 deletions

View file

@ -915,9 +915,12 @@ class DataReferenceBox(Jp2kBox):
DR : list
Data Entry URL boxes.
"""
def __init__(self, data_entry_url_boxes, length=0, offset=-1):
def __init__(self, data_entry_url_boxes=None, length=0, offset=-1):
Jp2kBox.__init__(self, box_id='dtbl', longname='Data Reference')
self.DR = data_entry_url_boxes
if data_entry_url_boxes is None:
self.DR = []
else:
self.DR = data_entry_url_boxes
self.length = length
self.offset = offset

View file

@ -127,6 +127,19 @@ class TestJPXWrap(unittest.TestCase):
self.assertEqual(jpx.box[-1].box[2].box_id, 'lbl ')
self.assertEqual(jpx.box[-1].box[2].label, label)
def test_empty_data_reference(self):
"""Data reference boxes can be empty."""
jp2 = Jp2k(self.jp2file)
boxes = [jp2.box[idx] for idx in [0, 1, 2, 4]]
dref = glymur.jp2box.DataReferenceBox()
boxes.append(dref)
with tempfile.NamedTemporaryFile(suffix=".jpx") as tfile:
jpx = jp2.wrap(tfile.name, boxes=boxes)
self.assertEqual(jpx.box[-1].box_id, 'dtbl')
self.assertEqual(len(jpx.box[-1].box), 0)
def test_only_one_data_reference(self):
"""Data reference boxes cannot be inside a superbox ."""
jp2 = Jp2k(self.jp2file)