def test_matches_init(): generator_func = lambda: (item / 2.0 for item in range(1, 10, 2)) init_stream = Stream(generator_func) validate_stream(init_stream, 5, float) from_stream = Stream.from_func(generator_func) validate_stream(init_stream, 5, float) for item1, item2 in zip(init_stream, from_stream): assert abs(item1 - item2) < 1.0e-4
def test_many_short(): stream = Stream.from_iterable(range(100)) validate_stream(stream, 100, int) stream_repr = repr(stream) validate_header(stream_repr) assert ', ' in stream_repr assert stream_repr.endswith('...')
def test_few_short(): stream = Stream.from_iterable(range(3)) validate_stream(stream, 3, int) stream_repr = repr(stream) validate_header(stream_repr) assert ', ' in stream_repr assert not stream_repr.endswith('...')
def test_from_iterable_tuple(): values = [ [1, 2, 3], ['a', 'b', 'c'], ['x', 'y', 'z'], ] iter_stream = Stream.from_iterable(values) validate_stream(iter_stream, 3, list, 3)
def test_many_long(): long_string = string.ascii_letters * 2 stream = Stream.from_iterable([long_string,] * 100) validate_stream(stream, 100, str, len(long_string)) stream_repr = repr(stream) validate_header(stream_repr) assert ',\n' in stream_repr assert stream_repr.endswith('...')
def test_chain(name_stream, number_stream): chain_stream = Stream.chain(name_stream, number_stream, name_stream) validate_stream(chain_stream, 4 + 256 + 4, str) chain_stream = name_stream.chain(number_stream, name_stream) validate_stream(chain_stream, 4 + 256 + 4, str) chain_stream = name_stream + number_stream + name_stream validate_stream(chain_stream, 4 + 256 + 4, str) list_stream = list(chain_stream) assert list_stream[0] == 'Elliott 38' assert list_stream[-1] == 'Alexa 3'
def test_from_iterable(): iter_stream = Stream.from_iterable([1, 2, 3]) validate_stream(iter_stream, 3, int)
def test_no_func(): none_stream = Stream.from_iterable([1, 2, None, 3, 4, None, 5]) validate_stream(none_stream, 7, (int, type(None))) filter_stream = none_stream.filter() validate_stream(filter_stream, 5, int)
def test_no_args(empty_stream): validate_stream(empty_stream.chain(), 0, object) with pytest.raises(TypeError): Stream.chain()
def test_empty_tuple_stream(): empty_tuple_stream = Stream.from_iterable(()) unbatched_stream = empty_tuple_stream.unbatch() validate_stream(unbatched_stream, 0, object)
def test_from_empty(): empty_stream = Stream.from_func(lambda: iter(())) validate_stream(empty_stream, 0, object)
def test_from_txt(names_path): txt_stream = Stream.from_txt(names_path) validate_stream(txt_stream, 4, str)
def test_from_empty_txt(): # create a stream from an empty temp file and validate that its empty with tempfile.NamedTemporaryFile() as temp_file: txt_stream = Stream.from_txt(temp_file.name) validate_stream(txt_stream, 0, object)