Exemple #1
0
    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))
Exemple #2
0
    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))
Exemple #3
0
    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])
Exemple #4
0
    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])
Exemple #5
0
    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])
Exemple #6
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])
Exemple #7
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])
Exemple #8
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])
Exemple #9
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)
Exemple #10
0
    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:.*')