def test_unsupported_dice_amount(self): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['0d10'])) with self.assertRaises(DiceException) as context: roll(user, prefix, arguments) self.assertEqual('Dice amount must be positive, but is: 0', str(context.exception))
def test_unsupported_modifiers(self): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['1d10 -m -x'])) with self.assertRaises(DiceException) as context: roll(user, prefix, arguments) self.assertEqual('Unsupported dice type: 1d10 -m -x', str(context.exception))
def test_three_rolls(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['2d100', '3d2', '1d20', '-m'])) randrange_mock.side_effect = lambda *it: { (1, 100 + 1, 1): 88, (1, 2 + 1, 1): 2, (1, 20 + 1, 1): 20 }[it] dice_result = roll(user, prefix, tuple(arguments)) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.MIN) self.assertEqual(dice_result.dices_filter, DicesFilterType.NONE) self.assertEqual(3, len(dice_result.descriptions)) self.assertEqual('[88, 88] 🠖 88', dice_result.descriptions[0]) self.assertEqual(dice_result.result_dices[0], [88]) self.assertEqual([88, 88], dice_result.all_dices[0]) self.assertEqual('[2, 2, 2] 🠖 2', dice_result.descriptions[1]) self.assertEqual(dice_result.result_dices[1], [2]) self.assertEqual([2, 2, 2], dice_result.all_dices[1]) self.assertEqual(dice_result.descriptions[2], '20') self.assertEqual(dice_result.result_dices[2], [20]) self.assertEqual(dice_result.all_dices[2], [20])
def test_default_dice_amount_short_roll(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['8'])) randrange_mock.side_effect = [5] dice_result = roll(user, prefix, tuple(arguments)) randrange_mock.assert_has_calls([mock.call(1, 8 + 1, 1)]) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.NONE) self.assertEqual(dice_result.dices_filter, DicesFilterType.NONE) self.assertEqual(1, len(dice_result.descriptions)) self.assertEqual(dice_result.descriptions[0], '5') self.assertEqual(dice_result.result_dices[0], [5]) self.assertEqual(dice_result.all_dices[0], [5])
def test_single_roll(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['3d8'])) randrange_mock.side_effect = [5, 8, 1] dice_result = roll(user, prefix, tuple(arguments)) randrange_mock.assert_has_calls([ mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1) ]) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.NONE) self.assertEqual(dice_result.dices_filter, DicesFilterType.NONE) self.assertEqual(1, len(dice_result.descriptions)) self.assertEqual('5, 8, 1', dice_result.descriptions[0]) self.assertEqual([5, 8, 1], dice_result.result_dices[0]) self.assertEqual([5, 8, 1], dice_result.all_dices[0])
def test_upper_than_roll(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['3d8', '--upper-than', '4'])) randrange_mock.side_effect = [5, 8, 1] dice_result = roll(user, prefix, tuple(arguments)) randrange_mock.assert_has_calls([ mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), ]) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.NONE) self.assertEqual(dice_result.dices_filter, DicesFilterType.UPPER_THAN) self.assertEqual(1, len(dice_result.descriptions)) self.assertEqual('[5, 8, 1] 🠖 [5, 8]', dice_result.descriptions[0]) self.assertEqual([5, 8], dice_result.result_dices[0]) self.assertEqual([5, 8, 1], dice_result.all_dices[0])
def test_average_ceil_roll(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['3d8', '--average-ceil'])) randrange_mock.side_effect = [5, 8, 1] dice_result = roll(user, prefix, tuple(arguments)) randrange_mock.assert_has_calls([ mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), ]) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.AVERAGE_CEIL) self.assertEqual(dice_result.dices_filter, DicesFilterType.NONE) self.assertEqual(1, len(dice_result.descriptions)) self.assertEqual('[5, 8, 1] 🠖 5', dice_result.descriptions[0]) self.assertEqual(dice_result.result_dices[0], [5]) self.assertEqual([5, 8, 1], dice_result.all_dices[0])
def test_reverse_sorted_roll(self, randrange_mock): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['3d8', '--reverse'])) randrange_mock.side_effect = [5, 8, 1] dice_result = roll(user, prefix, tuple(arguments)) randrange_mock.assert_has_calls([ mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), mock.call(1, 8 + 1, 1), ]) self.assertEqual(dice_result.user, user) self.assertEqual(dice_result.dices_modifier, DicesModifierType.REVERSE_SORTED) self.assertEqual(dice_result.dices_filter, DicesFilterType.NONE) self.assertEqual(1, len(dice_result.descriptions)) self.assertEqual('[5, 8, 1] 🠖 [8, 5, 1]', dice_result.descriptions[0]) self.assertEqual([8, 5, 1], dice_result.result_dices[0]) self.assertEqual([5, 8, 1], dice_result.all_dices[0])
async def universal_roll(self, ctx: Context, *arguments: str) -> None: command_prefix: str = ctx.prefix + ctx.invoked_with roll_result = roll(ctx.author.name, command_prefix, arguments) discord_result = crate_embed(roll_result, ctx.message, SIMPLE_PRESENTATION) await self._send_message(ctx, discord_result, roll_result)
def test_help(self): (user, prefix, arguments) = ('userTest', 'prefix', tuple(['-h'])) with self.assertRaises(DiceArgumentParserException) as context: roll(user, prefix, arguments) self.assertRegex(str(context.exception), '.*usage:.*')