コード例 #1
0
def test_task_rejected_fork_should_return_resolved_value():
    def rejected_spy(value):
        assert value == 0

    def resolved_spy(_):
        assert False

    task_spy = TaskSpy()
    task = Task(task_spy.fork_rejected)
    task.fork(rejected_spy, resolved_spy)
コード例 #2
0
def test_task_resolved_fork_should_applied_bind_on_his_result():
    def rejected_spy(_):
        assert False

    def resolved_spy(value):
        assert value == 42 + 1

    task_spy = TaskSpy()
    task = Task(task_spy.fork_resolved).bind(task_spy.binder)
    task.fork(rejected_spy, resolved_spy)
コード例 #3
0
def test_task_rejected_fork_should_be_called_only_during_calling_fork(
        task_spy):
    task = Task(task_spy.fork_rejected)
    assert task_spy.fork_resolved.call_count == 0

    task.fork(task_spy.rejected, task_spy.resolved)
    assert task_spy.fork_resolved.call_count == 0
    assert task_spy.fork_rejected.call_count == 1
    assert task_spy.fork_resolved.call_count == 0
    assert task_spy.fork_rejected.call_count == 1
コード例 #4
0
def test_task_rejected_fork_should_not_applied_map_on_his_result():
    def rejected_spy(value):
        assert value == 0

    def resolved_spy(_):
        assert False

    task_spy = TaskSpy()
    task = Task(task_spy.fork_rejected).map(task_spy.mapper)
    task.fork(rejected_spy, resolved_spy)
コード例 #5
0
def test_task_mapper_should_be_called_during_calling_fork(task_spy):
    task = Task(task_spy.fork_resolved).map(task_spy.mapper)
    assert task_spy.mapper.call_count == 0

    task.fork(task_spy.rejected, task_spy.resolved)
    assert task_spy.mapper.call_count == 1
コード例 #6
0
 def binder(self, arg):
     return Task(lambda reject, resolve: resolve(arg + 1))
コード例 #7
0
def test_task_monad_laws(integer):
    MonadLawTester(monad=Task.of,
                   value=integer,
                   mapper1=lambda value: Task.of(value + 1),
                   mapper2=lambda value: Task.of(value + 2),
                   get_fn=lambda task: task.fork(identity, identity)).test()
コード例 #8
0
def test_task_functor_laws(integer):
    FunctorLawTester(functor=Task.of(integer),
                     mapper1=increase,
                     mapper2=lambda value: value + 2,
                     get_fn=lambda task: task.fork(identity, identity)).test()
コード例 #9
0
def test_task_of_should_applied_only_reject_callback(task_spy):
    assert Task.reject(42).fork(task_spy.rejected, task_spy.resolved) == 42
    assert task_spy.resolved.call_count == 0
    assert task_spy.rejected.call_count == 1