From 4276a978eab3e12516d9f077159b24b89048c002 Mon Sep 17 00:00:00 2001 From: John Evans Date: Thu, 20 Feb 2014 09:19:41 -0500 Subject: [PATCH] Allowing DataReferenceBoxes to be empty. #175 --- glymur/jp2box.py | 7 +++++-- glymur/test/test_jp2box_jpx.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/glymur/jp2box.py b/glymur/jp2box.py index 0a370f9..49cde5d 100644 --- a/glymur/jp2box.py +++ b/glymur/jp2box.py @@ -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 diff --git a/glymur/test/test_jp2box_jpx.py b/glymur/test/test_jp2box_jpx.py index 99250c5..5d6cca2 100644 --- a/glymur/test/test_jp2box_jpx.py +++ b/glymur/test/test_jp2box_jpx.py @@ -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)