def test_sliding_window(): source = Stream() L = source.sliding_window(2).sink_to_list() for i in range(10): source.emit(i) assert L == [(0, ), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)] L = source.sliding_window(2, return_partial=False).sink_to_list() for i in range(10): source.emit(i) assert L == [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
def test_sliding_window_ref_counts(): source = Stream() _ = source.sliding_window(2) r_prev = RefCounter() source.emit(-2) source.emit(-1, metadata=[{'ref': r_prev}]) for i in range(10): r = RefCounter() assert r_prev.count == 1 source.emit(i, metadata=[{'ref': r}]) assert r_prev.count == 0 assert r.count == 1 r_prev = r
def test_sliding_window_metadata(): source = Stream() L = metadata(source.sliding_window(2)).sink_to_list() source.emit(0) source.emit(1, metadata=[{'v': 1}]) source.emit(2, metadata=[{'v': 2}]) source.emit(3, metadata=[{'v': 3}]) assert L == [ [{ 'v': 1 }], # First emit, because 0 has no metadata [{ 'v': 1 }, { 'v': 2 }], # Second emit [{ 'v': 2 }, { 'v': 3 }] # Third emit ]