예제 #1
0
 def setup(self):
     """Pre-test setup"""
     self.dice = Dice()
예제 #2
0
class Testdice:
    """Unit tests for the dice class."""
    def __init__(self):
        self.dice = None

    def setup(self):
        """Pre-test setup"""
        self.dice = Dice()

    def teardown(self):
        """Post-test cleanup"""
        self.dice = None

    def test_roll_with_no_qty(self):
        """Verify an unspecified number of dice only rolls one."""
        total, values = self.dice.roll('d20')
        assert 1 <= total <= 20
        assert len(values) == 1

    def test_multiple(self):
        """Verify the correct number are rolled with a reasonable total"""
        total, values = self.dice.roll('4d6')
        for value in values:
            assert 1 <= value <= 6
        assert len(values) == 4
        assert sum(values) == total

    def test_single_with_mod(self):
        """Verify a modifier is added in correctly."""
        total, values = self.dice.roll('d20+5')
        for value in values:
            assert 1 <= value <= 20
        assert len(values) == 1
        assert sum(values) + 5 == total

    def test_multiple_with_mod(self):
        """Verify modifiers are applied correctly for multiple dice"""
        total, values = self.dice.roll("4d6-5")
        for value in values:
            assert 1 <= value <= 6
        assert len(values) == 4
        assert sum(values) - 5 == total

    def test_multiple_with_mod_and_mult(self):
        """Verify multiplier is applied last."""
        total, values = self.dice.roll("4d6+5*2")
        for value in values:
            assert 1 <= value <= 6
        assert len(values) == 4
        assert (sum(values) + 5) * 2 == total

    def test_multiple_with_multiplier(self):
        """Verift the multiplier is applied last for multiple dice."""
        total, values = self.dice.roll("4d6*2")
        for value in values:
            assert 1 <= value <= 6
        assert len(values) == 4
        assert sum(values) * 2 == total

    def test_multiple_of_diff_sizes(self):
        """Verify dice can be multiple sizes."""
        total, values = self.dice.roll("2d4+2d8")
        assert len(values) == 4
        assert 1 <= values[0] <= 4
        assert 1 <= values[1] <= 4
        assert 1 <= values[2] <= 8
        assert 1 <= values[3] <= 8

        assert sum(values) == total