def setup(self): """Pre-test setup""" self.dice = Dice()
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