Esempio n. 1
0
 def test_nonexistent_ja(self):
     skip_unless_c_messages()
     skip_unless_translation_exists('ja_JP.UTF-8')
     path = '__nonexistent__'
     context = Context()
     try:
         with interim_locale(LC_ALL='ja_JP.UTF-8'):
             os.stat(path)
     except OSError as ex:
         c_message = ex.args[1]
     else:
         raise OSError(errno.EEXIST, os.strerror(errno.EEXIST), path)
     try:
         c_message.encode('ASCII')
     except UnicodeError:
         pass
     else:
         raise AssertionError(
             'ja_JP error message is ASCII-only: {msg!r}'.format(msg=c_message)
         )
     with interim_locale(LC_ALL='ja_JP.UTF-8'):
         with assert_raises(JobFailed):
             context.new_document(FileUri(path))
         message = context.get_message()
         assert_equal(type(message), ErrorMessage)
         assert_equal(type(message.message), unicode)
         assert_equal(
             message.message,
             u("[1-11711] Failed to open '{path}': {msg}.".format(path=path, msg=c_message))
         )
         assert_equal(
             str(message),
             "[1-11711] Failed to open '{path}': {msg}.".format(path=path, msg=c_message)
         )
         assert_equal(unicode(message), message.message)
Esempio n. 2
0
 def test_nonexistent_ja(self):
     skip_unless_c_messages()
     skip_unless_translation_exists('ja_JP.UTF-8')
     path = '__nonexistent__'
     context = Context()
     try:
         with interim_locale(LC_ALL='ja_JP.UTF-8'):
             os.stat(path)
     except OSError as ex:
         c_message = ex.args[1]
     else:
         raise OSError(errno.EEXIST, os.strerror(errno.EEXIST), path)
     try:
         c_message.encode('ASCII')
     except UnicodeError:
         pass
     else:
         raise AssertionError(
             'ja_JP error message is ASCII-only: {msg!r}'.format(
                 msg=c_message))
     with interim_locale(LC_ALL='ja_JP.UTF-8'):
         with assert_raises(JobFailed):
             context.new_document(FileUri(path))
         message = context.get_message()
         assert_equal(type(message), ErrorMessage)
         assert_equal(type(message.message), unicode)
         assert_equal(
             message.message,
             u("[1-11711] Failed to open '{path}': {msg}.".format(
                 path=path, msg=c_message)))
         assert_equal(
             str(message),
             "[1-11711] Failed to open '{path}': {msg}.".format(
                 path=path, msg=c_message))
         assert_equal(unicode(message), message.message)
Esempio n. 3
0
 def t(self, fp):
     def read():
         return Expression.from_stream(fp)
     x = read()
     assert_repr(x, self.repr[0])
     x = read()
     assert_repr(x, self.repr[1])
     with assert_raises(ExpressionSyntaxError):
         x = read()
Esempio n. 4
0
    def t(self, fp):
        def read():
            return Expression.from_stream(fp)

        x = read()
        assert_repr(x, self.repr[0])
        x = read()
        assert_repr(x, self.repr[1])
        with assert_raises(ExpressionSyntaxError):
            x = read()
Esempio n. 5
0
 def test(self):
     context = Context()
     document = context.new_document('dummy://dummy.djvu')
     message = document.get_message()
     assert_equal(type(message), NewStreamMessage)
     assert_equal(message.name, 'dummy.djvu')
     assert_equal(message.uri, 'dummy://dummy.djvu')
     assert_equal(type(message.stream), Stream)
     with assert_raises(NotAvailable):
         document.outline.sexpr
     with assert_raises(NotAvailable):
         document.annotations.sexpr
     with assert_raises(NotAvailable):
         document.pages[0].text.sexpr
     with assert_raises(NotAvailable):
         document.pages[0].annotations.sexpr
     try:
         with open(images + 'test1.djvu', 'rb') as fp:
             message.stream.write(fp.read())
     finally:
         message.stream.close()
     with assert_raises_str(IOError, 'I/O operation on closed file'):
         message.stream.write(b'eggs')
     message = document.get_message()
     assert_equal(type(message), DocInfoMessage)
     outline = document.outline
     outline.wait()
     x = outline.sexpr
     assert_equal(x, Expression([]))
     anno = document.annotations
     anno.wait()
     x = anno.sexpr
     assert_equal(x, Expression([]))
     text = document.pages[0].text
     text.wait()
     x = text.sexpr
     assert_equal(x, Expression([]))
     anno = document.pages[0].annotations
     anno.wait()
     x = anno.sexpr
     assert_equal(x, Expression([]))
Esempio n. 6
0
 def test(self):
     context = Context()
     document = context.new_document('dummy://dummy.djvu')
     message = document.get_message()
     assert_equal(type(message), NewStreamMessage)
     assert_equal(message.name, 'dummy.djvu')
     assert_equal(message.uri, 'dummy://dummy.djvu')
     assert_equal(type(message.stream), Stream)
     with assert_raises(NotAvailable):
         document.outline.sexpr
     with assert_raises(NotAvailable):
         document.annotations.sexpr
     with assert_raises(NotAvailable):
         document.pages[0].text.sexpr
     with assert_raises(NotAvailable):
         document.pages[0].annotations.sexpr
     try:
         with open(images + 'test1.djvu', 'rb') as fp:
             message.stream.write(fp.read())
     finally:
         message.stream.close()
     with assert_raises_str(IOError, 'I/O operation on closed file'):
         message.stream.write(b'eggs')
     message = document.get_message()
     assert_equal(type(message), DocInfoMessage)
     outline = document.outline
     outline.wait()
     x = outline.sexpr
     assert_equal(x, Expression([]))
     anno = document.annotations
     anno.wait()
     x = anno.sexpr
     assert_equal(x, Expression([]))
     text = document.pages[0].text
     text.wait()
     x = text.sexpr
     assert_equal(x, Expression([]))
     anno = document.pages[0].annotations
     anno.wait()
     x = anno.sexpr
     assert_equal(x, Expression([]))
Esempio n. 7
0
 def test_bad_file_io(self):
     if os.name == 'nt':
         raise SkipTest('not implemented on Windows')
     path = '/proc/self/mem'
     try:
         os.stat(path)
     except OSError as exc:
         raise SkipTest('{exc.filename}: {exc.strerror}'.format(exc=exc))
     with open('/proc/self/mem') as fp:
         with assert_raises(IOError) as ecm:
             Expression.from_stream(fp)
     assert_in(ecm.exception.errno, (errno.EIO, errno.EFAULT))
Esempio n. 8
0
 def test_palette(self):
     with assert_raises(KeyError) as ecm:
         pf = PixelFormatPalette({})
     assert_equal(ecm.exception.args, ((0, 0, 0), ))
     data = dict(((i, j, k), i + 7 * j + 37 + k) for i in range(6)
                 for j in range(6) for k in range(6))
     pf = PixelFormatPalette(data)
     data_repr = ', '.join('{k!r}: 0x{v:02x}'.format(k=k, v=v)
                           for k, v in sorted(data.items()))
     assert_equal(
         repr(pf),
         'djvu.decode.PixelFormatPalette({{{data}}}, bpp = 8)'.format(
             data=data_repr))
Esempio n. 9
0
def test_metadata():

    model_metadata = {
        'English': 'eggs',
        u('Русский'): u('яйца'),
    }
    meta = '\n'.join(
        u('|{k}| {v}').format(k=k, v=v) for k, v in model_metadata.items())
    test_script = u('set-meta\n{meta}\n.\n').format(meta=meta)
    try:
        test_file = create_djvu(test_script)
    except UnicodeEncodeError:
        raise SkipTest(
            'you need to run this test with LC_CTYPE=C or LC_CTYPE=<lang>.UTF-8'
        )
    try:
        context = Context()
        document = context.new_document(FileUri(test_file.name))
        message = document.get_message()
        assert_equal(type(message), DocInfoMessage)
        annotations = document.annotations
        assert_equal(type(annotations), DocumentAnnotations)
        annotations.wait()
        metadata = annotations.metadata
        assert_equal(type(metadata), Metadata)
        assert_equal(len(metadata), len(model_metadata))
        assert_equal(sorted(metadata), sorted(model_metadata))
        if not py3k:
            assert_equal(sorted(metadata.iterkeys()),
                         sorted(model_metadata.iterkeys()))
        assert_equal(sorted(metadata.keys()), sorted(model_metadata.keys()))
        if not py3k:
            assert_equal(sorted(metadata.itervalues()),
                         sorted(model_metadata.itervalues()))
        assert_equal(sorted(metadata.values()),
                     sorted(model_metadata.values()))
        if not py3k:
            assert_equal(sorted(metadata.iteritems()),
                         sorted(model_metadata.iteritems()))
        assert_equal(sorted(metadata.items()), sorted(model_metadata.items()))
        for k in metadata:
            assert_equal(type(k), unicode)
            assert_equal(type(metadata[k]), unicode)
        for k in None, 42, '+'.join(model_metadata):
            with assert_raises(KeyError) as ecm:
                metadata[k]
            assert_equal(ecm.exception.args, (k, ))
    finally:
        test_file.close()
Esempio n. 10
0
 def test_bad_file_io(self):
     if os.name == 'nt':
         raise SkipTest('not implemented on Windows')
     path = '/proc/self/mem'
     try:
         os.stat(path)
     except OSError as exc:
         raise SkipTest('{exc.filename}: {exc.strerror}'.format(exc=exc))
     with open('/proc/self/mem') as fp:
         with assert_raises(IOError) as ecm:
             Expression.from_stream(fp)
     assert_in(
         ecm.exception.errno,
         (errno.EIO, errno.EFAULT)
     )
Esempio n. 11
0
 def test_palette(self):
     with assert_raises(KeyError) as ecm:
         pf = PixelFormatPalette({})
     assert_equal(
         ecm.exception.args,
         ((0, 0, 0),)
     )
     data = dict(((i, j, k), i + 7 * j + 37 + k) for i in range(6) for j in range(6) for k in range(6))
     pf = PixelFormatPalette(data)
     data_repr = ', '.join(
         '{k!r}: 0x{v:02x}'.format(k=k, v=v) for k, v in sorted(data.items())
     )
     assert_equal(
         repr(pf),
         'djvu.decode.PixelFormatPalette({{{data}}}, bpp = 8)'.format(data=data_repr)
     )
Esempio n. 12
0
def test_metadata():

    model_metadata = {
        'English': 'eggs',
        u('Русский'): u('яйца'),
    }
    meta = '\n'.join(u('|{k}| {v}').format(k=k, v=v) for k, v in model_metadata.items())
    test_script = u('set-meta\n{meta}\n.\n').format(meta=meta)
    try:
        test_file = create_djvu(test_script)
    except UnicodeEncodeError:
        raise SkipTest('you need to run this test with LC_CTYPE=C or LC_CTYPE=<lang>.UTF-8')
    try:
        context = Context()
        document = context.new_document(FileUri(test_file.name))
        message = document.get_message()
        assert_equal(type(message), DocInfoMessage)
        annotations = document.annotations
        assert_equal(type(annotations), DocumentAnnotations)
        annotations.wait()
        metadata = annotations.metadata
        assert_equal(type(metadata), Metadata)
        assert_equal(len(metadata), len(model_metadata))
        assert_equal(sorted(metadata), sorted(model_metadata))
        if not py3k:
            assert_equal(sorted(metadata.iterkeys()), sorted(model_metadata.iterkeys()))
        assert_equal(sorted(metadata.keys()), sorted(model_metadata.keys()))
        if not py3k:
            assert_equal(sorted(metadata.itervalues()), sorted(model_metadata.itervalues()))
        assert_equal(sorted(metadata.values()), sorted(model_metadata.values()))
        if not py3k:
            assert_equal(sorted(metadata.iteritems()), sorted(model_metadata.iteritems()))
        assert_equal(sorted(metadata.items()), sorted(model_metadata.items()))
        for k in metadata:
            assert_equal(type(k), unicode)
            assert_equal(type(metadata[k]), unicode)
        for k in None, 42, '+'.join(model_metadata):
            with assert_raises(KeyError) as ecm:
                metadata[k]
            assert_equal(ecm.exception.args, (k,))
    finally:
        test_file.close()
Esempio n. 13
0
 def test_bad_file_io(self):
     ecm = None
     path = '/dev/full'
     try:
         os.stat(path)
     except OSError as exc:
         raise SkipTest('{exc.filename}: {exc.strerror}'.format(exc=exc))
     fp = open(path, 'w', buffering=2)
     expr = Expression(23)
     try:
         with assert_raises(IOError) as ecm:
             for i in range(10000):
                 expr.print_into(fp)
     finally:
         try:
             fp.close()
         except IOError:
             if ecm is None:
                 raise
     assert_equal(ecm.exception.errno, errno.ENOSPC)
Esempio n. 14
0
 def test_bad_file_io(self):
     ecm = None
     path = '/dev/full'
     try:
         os.stat(path)
     except OSError as exc:
         raise SkipTest('{exc.filename}: {exc.strerror}'.format(exc=exc))
     fp = open(path, 'w', buffering=2)
     expr = Expression(23)
     try:
         with assert_raises(IOError) as ecm:
             for i in range(10000):
                 expr.print_into(fp)
     finally:
         try:
             fp.close()
         except IOError:
             if ecm is None:
                 raise
     assert_equal(ecm.exception.errno, errno.ENOSPC)
Esempio n. 15
0
 def test_nonexistent(self):
     path = '__nonexistent__'
     try:
         os.stat(path)
     except OSError as ex:
         c_message = ex.args[1]
     else:
         raise OSError(errno.EEXIST, os.strerror(errno.EEXIST), path)
     c_message.encode('ASCII')
     skip_unless_c_messages()
     context = Context()
     with assert_raises(JobFailed):
         context.new_document(FileUri(path))
     message = context.get_message()
     assert_equal(type(message), ErrorMessage)
     assert_equal(type(message.message), unicode)
     assert_equal(
         message.message,
         "[1-11711] Failed to open '{path}': {msg}.".format(path=path,
                                                            msg=c_message))
     assert_equal(str(message), message.message)
     assert_equal(unicode(message), message.message)
Esempio n. 16
0
 def test_nonexistent(self):
     path = '__nonexistent__'
     try:
         os.stat(path)
     except OSError as ex:
         c_message = ex.args[1]
     else:
         raise OSError(errno.EEXIST, os.strerror(errno.EEXIST), path)
     c_message.encode('ASCII')
     skip_unless_c_messages()
     context = Context()
     with assert_raises(JobFailed):
         context.new_document(FileUri(path))
     message = context.get_message()
     assert_equal(type(message), ErrorMessage)
     assert_equal(type(message.message), unicode)
     assert_equal(
         message.message,
         "[1-11711] Failed to open '{path}': {msg}.".format(path=path, msg=c_message)
     )
     assert_equal(str(message), message.message)
     assert_equal(unicode(message), message.message)
Esempio n. 17
0
 def test_badstring(self):
     with assert_raises(ExpressionSyntaxError):
         Expression.from_string('(1')
Esempio n. 18
0
 def test_parse(self):
     with assert_raises(ExpressionSyntaxError):
         x = Expression.from_string('3.14')
         if isinstance(x.value, Symbol):
             raise ExpressionSyntaxError
Esempio n. 19
0
 def test_bad_unicode_io(self):
     fp = StringIO(chr(0xD800))
     with assert_raises(UnicodeEncodeError):
         Expression.from_stream(fp)
Esempio n. 20
0
 def test_bad_unicode_io(self):
     fp = StringIO(chr(0xD800))
     with assert_raises(UnicodeEncodeError):
         Expression.from_stream(fp)
Esempio n. 21
0
 def test_badstring(self):
     with assert_raises(ExpressionSyntaxError):
         Expression.from_string('(1')
Esempio n. 22
0
 def test_parse(self):
     with assert_raises(ExpressionSyntaxError):
         x = Expression.from_string('3.14')
         if isinstance(x.value, Symbol):
             raise ExpressionSyntaxError