diff --git a/glymur/test/test_opj_suite_neg.py b/glymur/test/test_opj_suite_neg.py index f851926..2f61675 100644 --- a/glymur/test/test_opj_suite_neg.py +++ b/glymur/test/test_opj_suite_neg.py @@ -2,7 +2,12 @@ The tests here do not correspond directly to the OpenJPEG test suite, but seem like logical negative tests to add. """ -#pylint: disable-all +# E1101: assertWarns introduced in python 3.2 +# pylint: disable=E1101 + +# R0904: Not too many methods in unittest. +# pylint: disable=R0904 + import os import sys import tempfile @@ -13,9 +18,6 @@ else: import unittest import numpy as np -import pkg_resources - -from glymur.lib import openjp2 as opj2 from .fixtures import read_image, NO_READ_BACKEND, NO_READ_BACKEND_MSG @@ -23,9 +25,9 @@ from glymur import Jp2k import glymur try: - data_root = os.environ['OPJ_DATA_ROOT'] + DATA_ROOT = os.environ['OPJ_DATA_ROOT'] except KeyError: - data_root = None + DATA_ROOT = None except: raise @@ -33,9 +35,10 @@ except: @unittest.skipIf(glymur.lib.openjp2.OPENJP2 is None, "Missing openjp2 library.") @unittest.skipIf(NO_READ_BACKEND, NO_READ_BACKEND_MSG) -@unittest.skipIf(data_root is None, +@unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") class TestSuiteNegative(unittest.TestCase): + """Test suite for certain negative tests from openjpeg suite.""" def setUp(self): self.jp2file = glymur.data.nemo() @@ -45,45 +48,50 @@ class TestSuiteNegative(unittest.TestCase): pass @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") - def test_negative_psnr_with_cratios(self): - # Using psnr with cratios options is not allowed. + def test_psnr_with_cratios(self): + """Using psnr with cratios options is not allowed.""" # Not an OpenJPEG test, but close. - infile = os.path.join(data_root, 'input/nonregression/Bretagne1.ppm') + infile = os.path.join(DATA_ROOT, 'input/nonregression/Bretagne1.ppm') data = read_image(infile) with tempfile.NamedTemporaryFile(suffix='.j2k') as tfile: j = Jp2k(tfile.name, 'wb') with self.assertRaises(IOError): j.write(data, psnr=[30, 35, 40], cratios=[2, 3, 4]) - def test_NR_MarkerIsNotCompliant_j2k_dump(self): + def test_nr_marker_not_compliant(self): + """non-compliant marker, should still be able to read""" relpath = 'input/nonregression/MarkerIsNotCompliant.j2k' - jfile = os.path.join(data_root, relpath) + jfile = os.path.join(DATA_ROOT, relpath) jp2k = Jp2k(jfile) - c = jp2k.get_codestream(header_only=False) + jp2k.get_codestream(header_only=False) + self.assertTrue(True) @unittest.skipIf(sys.hexversion < 0x03020000, "Uses features introduced in 3.2.") - def test_NR_illegalcolortransform_dump(self): - # EOC marker is bad + def test_nr_illegalclrtransform(self): + """EOC marker is bad""" relpath = 'input/nonregression/illegalcolortransform.j2k' - jfile = os.path.join(data_root, relpath) + jfile = os.path.join(DATA_ROOT, relpath) jp2k = Jp2k(jfile) - with self.assertWarns(UserWarning) as cw: - c = jp2k.get_codestream(header_only=False) + with self.assertWarns(UserWarning): + codestream = jp2k.get_codestream(header_only=False) # Verify that the last segment returned in the codestream is SOD, # not EOC. Codestream parsing should stop when we try to jump to # the end of SOT. - self.assertEqual(c.segment[-1].marker_id, 'SOD') + self.assertEqual(codestream.segment[-1].marker_id, 'SOD') - def test_NR_Cannotreaddatawithnosizeknown_j2k(self): + def test_nr_cannotreadwnosizeknown(self): + """not sure exactly what is wrong with this file""" relpath = 'input/nonregression/Cannotreaddatawithnosizeknown.j2k' - jfile = os.path.join(data_root, relpath) + jfile = os.path.join(DATA_ROOT, relpath) jp2k = Jp2k(jfile) - c = jp2k.get_codestream(header_only=False) + jp2k.get_codestream(header_only=False) + self.assertTrue(True) @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") def test_code_block_dimensions(self): + """don't allow extreme codeblock sizes""" # opj_compress doesn't allow the dimensions of a codeblock # to be too small or too big, so neither will we. data = np.zeros((256, 256), dtype=np.uint8) @@ -91,55 +99,55 @@ class TestSuiteNegative(unittest.TestCase): j = Jp2k(tfile.name, 'wb') # opj_compress doesn't allow code block area to exceed 4096. - with self.assertRaises(IOError) as cr: + with self.assertRaises(IOError): j.write(data, cbsize=(256, 256)) # opj_compress doesn't allow either dimension to be less than 4. - with self.assertRaises(IOError) as cr: + with self.assertRaises(IOError): j.write(data, cbsize=(2048, 2)) - with self.assertRaises(IOError) as cr: + with self.assertRaises(IOError): j.write(data, cbsize=(2, 2048)) @unittest.skipIf(sys.hexversion < 0x03020000, "Uses features introduced in 3.2.") def test_exceeded_box(self): + """should warn if reading past end of a box""" # Verify that a warning is issued if we read past the end of a box # This file has a palette (pclr) box whose length is impossibly # short. - infile = os.path.join(data_root, + infile = os.path.join(DATA_ROOT, 'input/nonregression/mem-b2ace68c-1381.jp2') - with self.assertWarns(UserWarning) as cw: - j = Jp2k(infile) + with self.assertWarns(UserWarning): + Jp2k(infile) @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") - def test_precinct_size_not_multiple_of_two(self): - # Seems like precinct sizes should be powers of two. + def test_precinct_size_not_p2(self): + """precinct sizes should be powers of two.""" ifile = Jp2k(self.j2kfile) data = ifile.read(rlevel=2) with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile: ofile = Jp2k(tfile.name, 'wb') - with self.assertRaises(IOError) as ce: + with self.assertRaises(IOError): ofile.write(data, psizes=[(13, 13)]) @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") - def test_codeblock_size_not_multiple_of_two(self): - # Seems like code block sizes should be powers of two. + def test_cblk_size_not_power_of_two(self): + """code block sizes should be powers of two.""" ifile = Jp2k(self.j2kfile) data = ifile.read(rlevel=2) with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile: ofile = Jp2k(tfile.name, 'wb') - with self.assertRaises(IOError) as ce: + with self.assertRaises(IOError): ofile.write(data, cbsize=(13, 12)) @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") - def test_codeblock_size_with_precinct_size(self): - # Seems like code block sizes should never exceed half that of - # precinct size. + def test_cblk_size_precinct_size(self): + """code block sizes should never exceed half that of precinct size.""" ifile = Jp2k(self.j2kfile) data = ifile.read(rlevel=2) with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile: ofile = Jp2k(tfile.name, 'wb') - with self.assertRaises(IOError) as ce: + with self.assertRaises(IOError): ofile.write(data, cbsize=(64, 64), psizes=[(64, 64)]) diff --git a/glymur/test/test_printing.py b/glymur/test/test_printing.py index 50babe2..f533aa4 100644 --- a/glymur/test/test_printing.py +++ b/glymur/test/test_printing.py @@ -1,7 +1,15 @@ -#pylint: disable-all +"""Test suite for printing. +""" +# C0302: don't care too much about having too many lines in a test module +# pylint: disable=C0302 + +# E061: unittest.mock introduced in 3.3 (python-2.7/pylint issue) +# pylint: disable=E0611,F0401 + +# R0904: Not too many methods in unittest. +# pylint: disable=R0904 + import os -import pkg_resources -import re import struct import sys import tempfile @@ -26,9 +34,9 @@ import glymur from glymur import Jp2k try: - data_root = os.environ['OPJ_DATA_ROOT'] + DATA_ROOT = os.environ['OPJ_DATA_ROOT'] except KeyError: - data_root = None + DATA_ROOT = None except: raise @@ -122,12 +130,13 @@ class TestPrintingNeedsLib(unittest.TestCase): + '(0, 10), (0, 9), (0, 9), (0, 10), (0, 9), (0, 9), ' + '(0, 10), (0, 9), (0, 9), (0, 10), (0, 9), (0, 9), ' + '(0, 10)]'] - self.expectedPlain = '\n'.join(lines) + self.expected_plain = '\n'.join(lines) def tearDown(self): pass def test_asoc_label_box(self): + """verify printing of asoc, label boxes""" # Construct a fake file with an asoc and a label box, as # OpenJPEG doesn't have such a file. data = glymur.Jp2k(self.jp2file).read(rlevel=1) @@ -138,30 +147,30 @@ class TestPrintingNeedsLib(unittest.TestCase): with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile2: # Offset of the codestream is where we start. - buffer = tfile.read(77) - tfile2.write(buffer) + wbuffer = tfile.read(77) + tfile2.write(wbuffer) # read the rest of the file, it's the codestream. codestream = tfile.read() # Write the asoc superbox. # Length = 36, id is 'asoc'. - buffer = struct.pack('>I4s', int(56), b'asoc') - tfile2.write(buffer) + wbuffer = struct.pack('>I4s', int(56), b'asoc') + tfile2.write(wbuffer) # Write the contained label box - buffer = struct.pack('>I4s', int(13), b'lbl ') - tfile2.write(buffer) + wbuffer = struct.pack('>I4s', int(13), b'lbl ') + tfile2.write(wbuffer) tfile2.write('label'.encode()) # Write the xml box # Length = 36, id is 'xml '. - buffer = struct.pack('>I4s', int(35), b'xml ') - tfile2.write(buffer) + wbuffer = struct.pack('>I4s', int(35), b'xml ') + tfile2.write(wbuffer) - buffer = 'this is a test' - buffer = buffer.encode() - tfile2.write(buffer) + wbuffer = 'this is a test' + wbuffer = wbuffer.encode() + tfile2.write(wbuffer) # Now append the codestream. tfile2.write(codestream) @@ -180,6 +189,7 @@ class TestPrintingNeedsLib(unittest.TestCase): self.assertEqual(actual, expected) def test_jp2dump(self): + """basic jp2dump test""" with patch('sys.stdout', new=StringIO()) as fake_out: glymur.jp2dump(self._plain_nemo_file) actual = fake_out.getvalue().strip() @@ -188,9 +198,10 @@ class TestPrintingNeedsLib(unittest.TestCase): lst = actual.split('\n') lst = lst[1:] actual = '\n'.join(lst) - self.assertEqual(actual, self.expectedPlain) + self.assertEqual(actual, self.expected_plain) def test_entire_file(self): + """verify output from printing entire file""" j = glymur.Jp2k(self._plain_nemo_file) with patch('sys.stdout', new=StringIO()) as fake_out: print(j) @@ -201,10 +212,11 @@ class TestPrintingNeedsLib(unittest.TestCase): lst = lst[1:] actual = '\n'.join(lst) - self.assertEqual(actual, self.expectedPlain) + self.assertEqual(actual, self.expected_plain) class TestPrinting(unittest.TestCase): + """Test suite for printing where the libraries are not needed""" def setUp(self): # Save sys.stdout. @@ -213,7 +225,8 @@ class TestPrinting(unittest.TestCase): def tearDown(self): pass - def test_COC_segment(self): + def test_coc_segment(self): + """verify printing of COC segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -240,7 +253,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_COD_segment(self): + def test_cod_segment(self): + """verify printing of COD segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -271,14 +285,13 @@ class TestPrinting(unittest.TestCase): ' Segmentation symbols: False'] expected = '\n'.join(lines) - self.actual = actual - self.expected = expected self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_icc_profile(self): - filename = os.path.join(data_root, 'input/nonregression/text_GBR.jp2') + """verify printing of colr box with ICC profile""" + filename = os.path.join(DATA_ROOT, 'input/nonregression/text_GBR.jp2') with warnings.catch_warnings(): # brand is 'jp2 ', but has any icc profile. warnings.simplefilter("ignore") @@ -343,24 +356,26 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_CRG(self): - filename = os.path.join(data_root, 'input/conformance/p0_03.j2k') + def test_crg(self): + """verify printing of CRG segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_03.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: print(codestream.segment[-5]) actual = fake_out.getvalue().strip() - lines = ['CRG marker segment at (87, 6)', + lines = ['CRG marker segment @ (87, 6)', ' Vertical, Horizontal offset: (0.50, 1.00)'] expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_RGN(self): - filename = os.path.join(data_root, 'input/conformance/p0_03.j2k') + def test_rgn(self): + """verify printing of RGN segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_03.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -373,10 +388,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_SOP(self): - filename = os.path.join(data_root, 'input/conformance/p0_03.j2k') + def test_sop(self): + """verify printing of SOP segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_03.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -387,11 +403,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_CME(self): - # Test printing a CME or comment marker segment. - filename = os.path.join(data_root, 'input/conformance/p0_02.j2k') + def test_cme(self): + """Test printing a CME or comment marker segment.""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_02.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() # 2nd to last segment in the main header @@ -403,7 +419,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_EOC_segment(self): + def test_eoc_segment(self): + """verify printing of eoc segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -414,10 +431,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_PLT_segment(self): - filename = os.path.join(data_root, 'input/conformance/p0_07.j2k') + def test_plt_segment(self): + """verify printing of PLT segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_07.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -432,10 +450,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_POD_segment(self): - filename = os.path.join(data_root, 'input/conformance/p0_13.j2k') + def test_pod_segment(self): + """verify printing of POD segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_13.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -461,10 +480,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_PPM_segment(self): - filename = os.path.join(data_root, 'input/conformance/p1_03.j2k') + def test_ppm_segment(self): + """verify printing of PPM segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p1_03.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -478,10 +498,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_PPT_segment(self): - filename = os.path.join(data_root, 'input/conformance/p1_06.j2k') + def test_ppt_segment(self): + """verify printing of ppt segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p1_06.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -495,7 +516,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_QCC_segment(self): + def test_qcc_segment(self): + """verify printing of qcc segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -510,7 +532,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_QCD_segment_5x3_transform(self): + def test_qcd_segment_5x3_transform(self): + """verify printing of qcd segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -524,7 +547,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_SIZ_segment(self): + def test_siz_segment(self): + """verify printing of SIZ segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -545,7 +569,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_SOC_segment(self): + def test_soc_segment(self): + """verify printing of SOC segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -556,7 +581,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_SOD_segment(self): + def test_sod_segment(self): + """verify printing of SOD segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -567,7 +593,8 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - def test_SOT_segment(self): + def test_sot_segment(self): + """verify printing of SOT segment""" j = glymur.Jp2k(self.jp2file) codestream = j.get_codestream(header_only=False) with patch('sys.stdout', new=StringIO()) as fake_out: @@ -581,13 +608,13 @@ class TestPrinting(unittest.TestCase): ' Number of tile parts: 1'] expected = '\n'.join(lines) - self.maxDiff = None self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_TLM_segment(self): - filename = os.path.join(data_root, 'input/conformance/p0_15.j2k') + def test_tlm_segment(self): + """verify printing of TLM segment""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_15.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -605,7 +632,7 @@ class TestPrinting(unittest.TestCase): @unittest.skipIf(sys.hexversion < 0x02070000, "Differences in XML printing between 2.6 and 2.7") def test_xmp(self): - # Verify the printing of a UUID/XMP box. + """Verify the printing of a UUID/XMP box.""" j = glymur.Jp2k(self.jp2file) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[4]) @@ -627,6 +654,7 @@ class TestPrinting(unittest.TestCase): self.assertEqual(actual, expected) def test_codestream(self): + """verify printing of entire codestream""" j = glymur.Jp2k(self.jp2file) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.get_codestream()) @@ -672,15 +700,15 @@ class TestPrinting(unittest.TestCase): ' CME marker segment @ (3209, 37)', ' "Created by OpenJPEG version 2.0.0"'] expected = '\n'.join(lst) - self.maxDiff = None self.assertEqual(actual, expected) @unittest.skipIf(sys.hexversion < 0x02070000, "Differences in XML printing between 2.6 and 2.7") - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_xml(self): - filename = os.path.join(data_root, 'input/conformance/file1.jp2') + """verify printing of XML box""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file1.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2]) @@ -707,10 +735,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_channel_definition(self): - filename = os.path.join(data_root, 'input/conformance/file2.jp2') + """verify printing of cdef box""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file2.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2].box[2]) @@ -722,10 +751,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_component_mapping(self): - filename = os.path.join(data_root, 'input/conformance/file9.jp2') + """verify printing of cmap box""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file9.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2].box[2]) @@ -737,10 +767,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_palette(self): - filename = os.path.join(data_root, 'input/conformance/file9.jp2') + def test_palette7(self): + """verify printing of pclr box""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file9.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2].box[1]) @@ -750,10 +781,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_palette(self): - filename = os.path.join(data_root, 'input/conformance/file7.jp2') + def test_rreq(self): + """verify printing of reader requirements box""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file7.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2]) @@ -773,25 +805,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, - "OPJ_DATA_ROOT environment variable not set") - def test_CRG(self): - filename = os.path.join(data_root, 'input/conformance/p0_03.j2k') - j = glymur.Jp2k(filename) - codestream = j.get_codestream() - with patch('sys.stdout', new=StringIO()) as fake_out: - print(codestream.segment[6]) - actual = fake_out.getvalue().strip() - lines = ['CRG marker segment @ (87, 6)', - ' Vertical, Horizontal offset: (0.50, 1.00)'] - expected = '\n'.join(lines) - self.assertEqual(actual, expected) - - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_differing_subsamples(self): - # Issue 86. - filename = os.path.join(data_root, 'input/conformance/p0_05.j2k') + """verify printing of SIZ with different subsampling... Issue 86.""" + filename = os.path.join(DATA_ROOT, 'input/conformance/p0_05.j2k') j = glymur.Jp2k(filename) codestream = j.get_codestream() with patch('sys.stdout', new=StringIO()) as fake_out: @@ -810,11 +828,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_palette_box(self): - # Verify that palette (pclr) boxes are printed without error. - filename = os.path.join(data_root, 'input/conformance/file9.jp2') + """Verify that palette (pclr) boxes are printed without error.""" + filename = os.path.join(DATA_ROOT, 'input/conformance/file9.jp2') j = glymur.Jp2k(filename) with patch('sys.stdout', new=StringIO()) as fake_out: print(j.box[2].box[1]) @@ -826,54 +844,56 @@ class TestPrinting(unittest.TestCase): @unittest.skipIf(os.name == "nt", "Temporary file issue on window.") def test_less_common_boxes(self): + """verify uinf, ulst, url, res, resd, resc box printing""" with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile: with open(self.jp2file, 'rb') as ifile: # Everything up until the jp2c box. - buffer = ifile.read(77) - tfile.write(buffer) + wbuffer = ifile.read(77) + tfile.write(wbuffer) # Write the UINF superbox # Length = 50, id is uinf. - buffer = struct.pack('>I4s', int(50), b'uinf') - tfile.write(buffer) + wbuffer = struct.pack('>I4s', int(50), b'uinf') + tfile.write(wbuffer) # Write the ULST box. # Length is 26, 1 UUID, hard code that UUID as zeros. - buffer = struct.pack('>I4sHIIII', int(26), b'ulst', int(1), - int(0), int(0), int(0), int(0)) - tfile.write(buffer) + wbuffer = struct.pack('>I4sHIIII', int(26), b'ulst', int(1), + int(0), int(0), int(0), int(0)) + tfile.write(wbuffer) # Write the URL box. # Length is 16, version is one byte, flag is 3 bytes, url # is the rest. - buffer = struct.pack('>I4sBBBB', - int(16), b'url ', - int(0), int(0), int(0), int(0)) - tfile.write(buffer) - buffer = struct.pack('>ssss', b'a', b'b', b'c', b'd') - tfile.write(buffer) + wbuffer = struct.pack('>I4sBBBB', + int(16), b'url ', + int(0), int(0), int(0), int(0)) + tfile.write(wbuffer) + + wbuffer = struct.pack('>ssss', b'a', b'b', b'c', b'd') + tfile.write(wbuffer) # Start the resolution superbox. - buffer = struct.pack('>I4s', int(44), b'res ') - tfile.write(buffer) + wbuffer = struct.pack('>I4s', int(44), b'res ') + tfile.write(wbuffer) # Write the capture resolution box. - buffer = struct.pack('>I4sHHHHBB', - int(18), b'resc', - int(1), int(1), int(1), int(1), - int(0), int(1)) - tfile.write(buffer) + wbuffer = struct.pack('>I4sHHHHBB', + int(18), b'resc', + int(1), int(1), int(1), int(1), + int(0), int(1)) + tfile.write(wbuffer) # Write the display resolution box. - buffer = struct.pack('>I4sHHHHBB', - int(18), b'resd', - int(1), int(1), int(1), int(1), - int(1), int(0)) - tfile.write(buffer) + wbuffer = struct.pack('>I4sHHHHBB', + int(18), b'resd', + int(1), int(1), int(1), int(1), + int(1), int(0)) + tfile.write(wbuffer) # Get the rest of the input file. - buffer = ifile.read() - tfile.write(buffer) + wbuffer = ifile.read() + tfile.write(wbuffer) tfile.flush() jp2k = glymur.Jp2k(tfile.name) @@ -901,12 +921,13 @@ class TestPrinting(unittest.TestCase): @unittest.skipIf(sys.hexversion < 0x03000000, "Ordered dicts not printing well in 2.7") - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") - def test_jpx_approximation_with_icc_profile(self): + def test_jpx_approx_icc_profile(self): + """verify jpx with approx field equal to zero""" # ICC profiles may be used in JP2, but the approximation field should # be zero unless we have jpx. This file does both. - filename = os.path.join(data_root, 'input/nonregression/text_GBR.jp2') + filename = os.path.join(DATA_ROOT, 'input/nonregression/text_GBR.jp2') with warnings.catch_warnings(): # brand is 'jp2 ', but has any icc profile. warnings.simplefilter("ignore") @@ -945,11 +966,11 @@ class TestPrinting(unittest.TestCase): expected = '\n'.join(lines) self.assertEqual(actual, expected) - @unittest.skipIf(data_root is None, + @unittest.skipIf(DATA_ROOT is None, "OPJ_DATA_ROOT environment variable not set") def test_uuid(self): - # UUID box - filename = os.path.join(data_root, 'input/nonregression/text_GBR.jp2') + """verify printing of UUID box""" + filename = os.path.join(DATA_ROOT, 'input/nonregression/text_GBR.jp2') with warnings.catch_warnings(): # brand is 'jp2 ', but has any icc profile. warnings.simplefilter("ignore") @@ -968,6 +989,7 @@ class TestPrinting(unittest.TestCase): @unittest.skipIf(sys.hexversion < 0x03000000, "Ordered dicts not printing well in 2.7") def test_exif_uuid(self): + """Verify printing of exif information""" j = glymur.Jp2k(self.jp2file) with patch('sys.stdout', new=StringIO()) as fake_out: