2021-06-24 17:11:00 -07:00
|
|
|
from datahub.utilities.delayed_iter import delayed_iter
|
2021-07-30 17:41:03 -07:00
|
|
|
from datahub.utilities.groupby import groupby_unsorted
|
2021-06-24 17:11:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
def test_delayed_iter():
|
|
|
|
events = []
|
|
|
|
|
2021-07-14 20:05:31 -07:00
|
|
|
def maker(n):
|
|
|
|
for i in range(n):
|
2021-06-24 17:11:00 -07:00
|
|
|
events.append(("add", i))
|
|
|
|
yield i
|
|
|
|
|
2021-07-14 20:05:31 -07:00
|
|
|
for i in delayed_iter(maker(4), 2):
|
2021-06-24 17:11:00 -07:00
|
|
|
events.append(("remove", i))
|
|
|
|
|
|
|
|
assert events == [
|
|
|
|
("add", 0),
|
|
|
|
("add", 1),
|
|
|
|
("add", 2),
|
|
|
|
("remove", 0),
|
|
|
|
("add", 3),
|
|
|
|
("remove", 1),
|
|
|
|
("remove", 2),
|
|
|
|
("remove", 3),
|
|
|
|
]
|
2021-07-14 20:05:31 -07:00
|
|
|
|
|
|
|
events.clear()
|
|
|
|
for i in delayed_iter(maker(2), None):
|
|
|
|
events.append(("remove", i))
|
|
|
|
|
|
|
|
assert events == [
|
|
|
|
("add", 0),
|
|
|
|
("add", 1),
|
|
|
|
("remove", 0),
|
|
|
|
("remove", 1),
|
|
|
|
]
|
2021-07-30 17:41:03 -07:00
|
|
|
|
|
|
|
|
|
|
|
def test_groupby_unsorted():
|
|
|
|
grouped = groupby_unsorted("ABCAC", key=lambda x: x)
|
|
|
|
|
|
|
|
assert list(grouped) == [
|
|
|
|
("A", ["A", "A"]),
|
|
|
|
("B", ["B"]),
|
|
|
|
("C", ["C", "C"]),
|
|
|
|
]
|