def test_unique_history_dict(): source = Stream() s = source.unique(maxsize=2, hashable=False) L = s.sink_to_list() a = {'hi': 'world'} b = {'hi': 'bar'} c = {'foo': 'bar'} source.emit(a) source.emit(b) source.emit(a) source.emit(b) source.emit(a) source.emit(b) assert L == [a, b] source.emit(c) source.emit(b) assert L == [a, b, c] source.emit(a) assert L == [a, b, c, a]
def test_unique_metadata(): source = Stream() L = metadata(source.unique()).flatten().sink_to_list() for i in range(5): source.emit(i, metadata=[{'v': i}]) assert L == [{'v': i} for i in range(5)]
def test_unique(): source = Stream() L = source.unique().sink_to_list() source.emit(1) source.emit(2) source.emit(1) assert L == [1, 2]
def test_unique_key(): source = Stream() L = source.unique(key=lambda x: x % 2, history=1).sink_to_list() source.emit(1) source.emit(2) source.emit(4) source.emit(6) source.emit(3) assert L == [1, 2, 3]
def test_unique_history(): source = Stream() s = source.unique(maxsize=2) s2 = source.unique(maxsize=2, hashable=False) L = s.sink_to_list() L2 = s2.sink_to_list() source.emit(1) source.emit(2) source.emit(1) source.emit(2) source.emit(1) source.emit(2) assert L == [1, 2] assert L == L2 source.emit(3) source.emit(2) assert L == [1, 2, 3] assert L == L2 source.emit(1) assert L == [1, 2, 3, 1] assert L == L2 # update 2 position source.emit(2) # knock out 1 source.emit(3) # update 2 position source.emit(2) assert L == [1, 2, 3, 1, 3] assert L == L2
def test_unique_history(): source = Stream() s = source.unique(history=2) L = s.sink_to_list() source.emit(1) source.emit(2) source.emit(1) source.emit(2) source.emit(1) source.emit(2) assert L == [1, 2] source.emit(3) source.emit(2) assert L == [1, 2, 3] source.emit(1) assert L == [1, 2, 3, 1]