Adjusted tests for newer JPX file. #205

This commit is contained in:
John Evans 2014-03-23 11:33:03 -04:00
commit 9399ef8496
7 changed files with 33 additions and 36 deletions

Binary file not shown.

View file

@ -34,13 +34,13 @@ def goodstuff():
def jpxfile():
"""Shortcut for specifying path to 12-v6.4.jpx.
"""Shortcut for specifying path to heliov.jpx.
Returns
-------
file : str
Platform-independent path to 12-v6.4.jpx
"""
filename = pkg_resources.resource_filename(__name__, "12-v6.4.jpx")
filename = pkg_resources.resource_filename(__name__, "heliov.jpx")
return filename

BIN
glymur/data/heliov.jpx Normal file

Binary file not shown.

View file

@ -678,8 +678,9 @@ class TestWrap(unittest.TestCase):
def test_jpx_to_jp2(self):
"""basic test for rewrapping a jpx file"""
jpx = Jp2k(self.jpxfile)
idx = [0, 1, 3, 6]
boxes = [jpx.box[idx] for idx in [0, 1, 3, 6]]
# Use only the signature, file type, header, and 1st codestream.
lst = [0, 1, 2, 5]
boxes = [jpx.box[idx] for idx in lst]
with tempfile.NamedTemporaryFile(suffix=".jp2") as tfile:
jp2 = jpx.wrap(tfile.name, boxes=boxes)

View file

@ -451,6 +451,7 @@ class TestJPX(unittest.TestCase):
with tempfile.TemporaryFile() as tfile:
ftbl.write(tfile)
@unittest.skip("No such jpx file anymore.")
def test_jpx_rreq_mask_length_3(self):
"""There are some JPX files with rreq mask length of 3."""
jpx = Jp2k(self.jpxfile)
@ -479,12 +480,6 @@ class TestJPX(unittest.TestCase):
self.assertEqual(jpx.box[-1].box_id, b'grp ')
self.assertEqual(jpx.box[-1].box[0].box_id, 'free')
def test_free_box(self):
"""Verify that we can handle a free box."""
j = Jp2k(self.jpxfile)
self.assertEqual(j.box[16].box[0].box_id, 'free')
self.assertEqual(type(j.box[16].box[0]), glymur.jp2box.FreeBox)
def test_data_reference_requires_dtbl(self):
"""The existance of a data reference box requires a ftbl box as well."""
flag = 0
@ -557,17 +552,17 @@ class TestJPX(unittest.TestCase):
self.assertEqual(jpx.box[-1].box[0].data_reference, (3,))
def test_nlst(self):
"""Verify that we can handle a free box."""
"""Verify that we can handle a number list box."""
j = Jp2k(self.jpxfile)
self.assertEqual(j.box[16].box[1].box[0].box_id, 'nlst')
self.assertEqual(type(j.box[16].box[1].box[0]),
glymur.jp2box.NumberListBox)
nlst = j.box[12].box[0].box[0]
self.assertEqual(nlst.box_id, 'nlst')
self.assertEqual(type(nlst), glymur.jp2box.NumberListBox)
# Two associations.
self.assertEqual(len(j.box[16].box[1].box[0].associations), 2)
self.assertEqual(len(nlst.associations), 2)
# Codestream 0
self.assertEqual(j.box[16].box[1].box[0].associations[0], 1 << 24)
self.assertEqual(nlst.associations[0], 1 << 24)
# Compositing Layer 0
self.assertEqual(j.box[16].box[1].box[0].associations[1], 2 << 24)
self.assertEqual(nlst.associations[1], 2 << 24)

View file

@ -63,6 +63,24 @@ class TestJp2k(unittest.TestCase):
def tearDown(self):
pass
def test_no_cxform_pclr_jpx(self):
"""Indices for pclr jpxfile if no color transform"""
j = Jp2k(self.jpxfile)
rgb = j.read()
idx = j.read(ignore_pclr_cmap_cdef=True)
nr, nc = 1024, 1024
self.assertEqual(rgb.shape, (nr, nc, 3))
self.assertEqual(idx.shape, (nr, nc))
# Should be able to manually reconstruct the RGB image from the palette
# and indices.
palette = j.box[2].box[2].palette
rgb_from_idx = np.zeros(rgb.shape, dtype=np.uint8)
for r in np.arange(nr):
for c in np.arange(nc):
rgb_from_idx[r, c] = palette[idx[r, c]]
np.testing.assert_array_equal(rgb, rgb_from_idx)
def test_repr(self):
"""Verify that results of __repr__ are eval-able."""
j = Jp2k(self.j2kfile)
@ -92,23 +110,6 @@ class TestJp2k(unittest.TestCase):
with self.assertRaises(IOError):
Jp2k(filename)
def test_no_cxform_pclr_jpx(self):
"""Indices for pclr jpxfile if no color transform"""
j = Jp2k(self.jpxfile)
rgb = j.read()
idx = j.read(ignore_pclr_cmap_cdef=True)
self.assertEqual(rgb.shape, (1024, 1024, 3))
self.assertEqual(idx.shape, (1024, 1024))
# Should be able to manually reconstruct the RGB image from the palette
# and indices.
palette = j.box[3].box[2].palette
rgb_from_idx = np.zeros(rgb.shape, dtype=np.uint8)
for r in np.arange(1024):
for c in np.arange(1024):
rgb_from_idx[r, c] = palette[idx[r, c]]
np.testing.assert_array_equal(rgb, rgb_from_idx)
def test_file_not_present(self):
"""Should error out if reading from a file that does not exist"""
# Verify that we error out appropriately if not given an existing file

View file

@ -78,8 +78,8 @@ class TestPrinting(unittest.TestCase):
with patch('sys.stdout', new=StringIO()) as fake_out:
print(jpx.box[-1])
actual = fake_out.getvalue().strip()
lines = ["Unknown Box (b'grp ') @ (695609, 20)",
' Free Box (free) @ (695617, 12)']
lines = ["Unknown Box (b'grp ') @ (1399071, 20)",
' Free Box (free) @ (1399079, 12)']
expected = '\n'.join(lines)
self.assertEqual(actual, expected)