- bugfix: some iterables caused an error
- pytest tests - deprecation warnings - use poetry for installs
This commit is contained in:
70
tests/test_parfor.py
Normal file
70
tests/test_parfor.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import pytest
|
||||
from parfor import Chunks, parfor, Parpool, pmap
|
||||
|
||||
|
||||
class SequenceIterator:
|
||||
def __init__(self, sequence):
|
||||
self._sequence = sequence
|
||||
self._index = 0
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
if self._index < len(self._sequence):
|
||||
item = self._sequence[self._index]
|
||||
self._index += 1
|
||||
return item
|
||||
else:
|
||||
raise StopIteration
|
||||
|
||||
def __len__(self):
|
||||
return len(self._sequence)
|
||||
|
||||
|
||||
class Iterable:
|
||||
def __init__(self, sequence):
|
||||
self.sequence = sequence
|
||||
|
||||
def __iter__(self):
|
||||
return SequenceIterator(self.sequence)
|
||||
|
||||
|
||||
def iterators():
|
||||
yield range(10), None
|
||||
yield list(range(10)), None
|
||||
yield (i for i in range(10)), 10
|
||||
yield SequenceIterator(range(10)), None
|
||||
yield Iterable(range(10)), 10
|
||||
|
||||
|
||||
@pytest.mark.parametrize('iterator', iterators())
|
||||
def test_chunks(iterator):
|
||||
chunks = Chunks(iterator[0], size=2, length=iterator[1])
|
||||
assert list(chunks) == [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
|
||||
|
||||
|
||||
def test_parpool():
|
||||
def fun(i, j, k):
|
||||
return i * j * k
|
||||
|
||||
with Parpool(fun, (3,), {'k': 2}) as pool:
|
||||
for i in range(10):
|
||||
pool[i] = i
|
||||
|
||||
assert [pool[i] for i in range(10)] == [0, 6, 12, 18, 24, 30, 36, 42, 48, 54]
|
||||
|
||||
|
||||
def test_parfor():
|
||||
@parfor(range(10), (3,), {'k': 2})
|
||||
def fun(i, j, k):
|
||||
return i * j * k
|
||||
|
||||
assert fun == [0, 6, 12, 18, 24, 30, 36, 42, 48, 54]
|
||||
|
||||
|
||||
def test_pmap():
|
||||
def fun(i, j, k):
|
||||
return i * j * k
|
||||
|
||||
assert pmap(fun, range(10), (3,), {'k': 2}) == [0, 6, 12, 18, 24, 30, 36, 42, 48, 54]
|
||||
Reference in New Issue
Block a user