-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathpool_alignment_test.py
More file actions
78 lines (48 loc) · 1.76 KB
/
pool_alignment_test.py
File metadata and controls
78 lines (48 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import icepool
import pytest
from icepool import d4, d6, d8, d10, d12, MultisetEvaluator, Pool
class OutcomeCountEvaluator(MultisetEvaluator):
def next_state(self, state, order, outcome, *pools):
return (state or 0) + 1
outcome_count = OutcomeCountEvaluator()
class OutcomeRangeEvaluator(MultisetEvaluator):
def next_state(self, state, order, outcome, *pools):
return (state or 0) + 1
extra_outcomes = MultisetEvaluator.consecutive
outcome_range = OutcomeRangeEvaluator()
def test_simple_pool():
pool = d6.pool(5)
result = outcome_range.evaluate(pool)
assert result.outcomes() == (6, )
def test_individual_outcomes():
pool = Pool([1, 5, 6])
result = outcome_range.evaluate(pool)
assert result.outcomes() == (6, )
def test_mixed_pool():
pool = Pool([d4, d6, d6, d8])
result = outcome_range.evaluate(pool)
assert result.outcomes() == (8, )
def test_simple_pool_keep_tuple():
pool = d6.pool(5)[-2:]
result = outcome_range.evaluate(pool)
assert result.outcomes() == (6, )
def test_simple_pool_keep_tuple_low():
pool = d6.pool(5)[:2]
result = outcome_range.evaluate(pool)
assert result.outcomes() == (6, )
def test_mixed_pool_keep_tuple():
pool = Pool([d4, d6, d6, d8])[-2:]
result = outcome_range.evaluate(pool)
assert result.outcomes() == (8, )
def test_mixed_pool_keep_tuple_low():
pool = Pool([d4, d6, d6, d8])[:2]
result = outcome_range.evaluate(pool)
assert result.outcomes() == (8, )
def test_zero_dice_count():
pool = Pool({d6: 0})
result = outcome_count.evaluate(pool)
assert result.outcomes() == (6, )
def test_range_alignment_non_int():
pool = Pool([0.5])
with pytest.raises(TypeError):
result = outcome_range.evaluate(pool)