11
22import operator
33
4- from effect import Effect , sync_perform
4+ from effect import ComposedDispatcher , Effect , base_dispatcher , sync_perform
55from effect .fold import fold_effect , sequence
66from effect .testing import SequenceDispatcher
77
88
99def test_fold_effect ():
10+ """Behaves like foldM."""
1011 effs = [Effect ('a' ), Effect ('b' ), Effect ('c' )]
1112
1213 dispatcher = SequenceDispatcher ([
@@ -17,10 +18,21 @@ def test_fold_effect():
1718 eff = fold_effect (operator .add , 'Nil' , effs )
1819
1920 with dispatcher .consume ():
20- result = sync_perform (dispatcher , eff )
21+ result = sync_perform (
22+ ComposedDispatcher ([dispatcher , base_dispatcher ]),
23+ eff )
2124 assert result == 'NilEiBeeCee'
2225
2326
27+ def test_fold_effect_empty ():
28+ """
29+ Returns an Effect resulting in the initial value when there are no effects.
30+ """
31+ eff = fold_effect (operator .add , 0 , [])
32+ result = sync_perform (base_dispatcher , eff )
33+ assert result == 0
34+
35+
2436def test_sequence ():
2537 effs = [Effect ('a' ), Effect ('b' ), Effect ('c' )]
2638 dispatcher = SequenceDispatcher ([
0 commit comments