|
1 | 1 | from __future__ import absolute_import, unicode_literals, division |
2 | 2 |
|
3 | 3 | from dice.elements import Integer, Roll |
4 | | -from dice.grammar import integer, expression |
5 | | -from dice.tests import parse |
| 4 | +from dice import roll |
6 | 5 |
|
7 | 6 | class TestInteger(object): |
8 | | - def test_parse(self): |
9 | | - assert parse(integer, "1337") == 1337 |
10 | | - assert parse(expression, "1337") == 1337 |
| 7 | + def test_value(self): |
| 8 | + assert roll("1337") == 1337 |
11 | 9 |
|
12 | 10 | def test_type(self): |
13 | | - assert isinstance(parse(integer, "1"), int) |
14 | | - assert isinstance(parse(integer, "1"), Integer) |
| 11 | + assert isinstance(roll("1"), int) |
| 12 | + assert isinstance(roll("1"), Integer) |
15 | 13 |
|
16 | 14 |
|
17 | 15 | class TestDice(object): |
18 | | - def test_dice_type(self): |
19 | | - for dice in ("d6", "1d6"): |
20 | | - assert isinstance(parse(expression, dice), Roll) |
21 | | - |
22 | 16 | def test_dice_value(self): |
23 | | - for dice in ("d6", "1d6"): |
24 | | - assert 0 < int(parse(expression, dice)) <= 6 |
25 | | - |
26 | | - def test_dice_result(self): |
27 | | - for result in parse(expression, "6d6"): |
28 | | - assert 0 < result <= 6 |
29 | | - |
| 17 | + assert 0 < int(roll('d6')) <= 6 |
| 18 | + assert 0 < int(roll('1d6')) <= 6 |
30 | 19 |
|
31 | | -class TestExpression(object): |
32 | | - def test_expression(self): |
33 | | - assert parse(expression, "2d6") |
| 20 | + def test_dice_type(self): |
| 21 | + assert isinstance(roll('d6'), Roll) |
| 22 | + assert isinstance(roll('1d6'), Roll) |
34 | 23 |
|
35 | | - def test_sub_expression(self): |
36 | | - assert parse(expression, "(2d6)d(2d6)") |
| 24 | + def test_dice_values(self): |
| 25 | + for die in roll("6d6"): |
| 26 | + assert 0 < die <= 6 |
37 | 27 |
|
38 | 28 |
|
39 | | -class TestExpressionMaths(object): |
| 29 | +class TestFunctionOperators(object): |
40 | 30 | def test_add(self): |
41 | | - assert parse(expression, "2 + 2") == 4 |
| 31 | + assert roll("2 + 2") == 4 |
42 | 32 |
|
43 | 33 | def test_sub(self): |
44 | | - assert parse(expression, "2 - 2") == 0 |
| 34 | + assert roll("2 - 2") == 0 |
45 | 35 |
|
46 | 36 | def test_mul(self): |
47 | | - assert parse(expression, "2 * 2") == 4 |
| 37 | + assert roll("2 * 2") == 4 |
48 | 38 |
|
49 | 39 | def test_div(self): |
50 | | - assert parse(expression, "2 / 2") == 1 |
| 40 | + assert roll("2 / 2") == 1 |
51 | 41 |
|
| 42 | + def test_total(self): |
| 43 | + assert (6 * 1) <= roll("6d6t") <= (6 * 6) |
| 44 | + |
| 45 | + |
| 46 | +def TestOperatorPrecedence(object): |
52 | 47 | def test_operator_precedence_1(self): |
53 | | - assert parse(expression, "16 / 8 * 4 + 2 - 1") == 9 |
| 48 | + assert roll("16 / 8 * 4 + 2 - 1") == 9 |
54 | 49 |
|
55 | 50 | def test_operator_precedence_2(self): |
56 | | - assert parse(expression, "16 - 8 + 4 * 2 / 1") == 16 |
| 51 | + assert roll("16 - 8 + 4 * 2 / 1") == 16 |
57 | 52 |
|
58 | 53 | def test_operator_precedence_3(self): |
59 | | - assert parse(expression, "10 - 3 + 2") == 9 |
| 54 | + assert roll("10 - 3 + 2") == 9 |
60 | 55 |
|
61 | 56 | def test_operator_precedence_4(self): |
62 | | - assert parse(expression, "1 + 2 * 3") == 7 |
| 57 | + assert roll("1 + 2 * 3") == 7 |
| 58 | + |
| 59 | + |
| 60 | +class TestExpression(object): |
| 61 | + def test_expression(self): |
| 62 | + assert isinstance(roll("2d6"), Roll) |
| 63 | + |
| 64 | + def test_sub_expression(self): |
| 65 | + assert isinstance(roll("(2d6)d(2d6)"), Roll) |
0 commit comments