1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # -*- coding: utf-8 -*-
- import os
- from boltons.jsonutils import (JSONLIterator,
- DEFAULT_BLOCKSIZE,
- reverse_iter_lines)
- CUR_PATH = os.path.dirname(os.path.abspath(__file__))
- NEWLINES_DATA_PATH = CUR_PATH + '/newlines_test_data.txt'
- JSONL_DATA_PATH = CUR_PATH + '/jsonl_test_data.txt'
- def _test_reverse_iter_lines(filename, blocksize=DEFAULT_BLOCKSIZE):
- fo = open(filename)
- reference = fo.read()
- fo.seek(0, os.SEEK_SET)
- rev_lines = list(reverse_iter_lines(fo, blocksize))
- assert '\n'.join(rev_lines[::-1]) == reference
- def _test_reverse_iter_lines_bytes(filename, blocksize=DEFAULT_BLOCKSIZE):
- fo = open(filename, 'rb')
- reference = fo.read()
- fo.seek(0, os.SEEK_SET)
- rev_lines = list(reverse_iter_lines(fo, blocksize))
- assert os.linesep.encode('ascii').join(rev_lines[::-1]) == reference
- def test_reverse_iter_lines():
- for blocksize in (2, 4, 16, 4096):
- _test_reverse_iter_lines(NEWLINES_DATA_PATH, blocksize)
- _test_reverse_iter_lines_bytes(NEWLINES_DATA_PATH, blocksize)
- def test_jsonl_iterator():
- ref = [{u'4': 4}, {u'3': 3}, {u'2': 2}, {u'1': 1}, {}]
- jsonl_iter = JSONLIterator(open(JSONL_DATA_PATH), reverse=True)
- jsonl_list = list(jsonl_iter)
- assert jsonl_list == ref
|