Пример #1
0
    def __init__(self, string_form: str):
        self._string_form = string_form
        self._number_of_dice = self._get_number_of_dice()
        self._single_dice_outcome_map = (
            dice_expression_helper.get_single_dice_outcome_map(
                re.split(r"[dk]", self._string_form)[1]
            )
        )
        self._number_to_keep_or_drop = self._get_number_to_keep_or_drop()
        self._simplified_form = None

        if self._is_keep():
            if self._number_of_dice <= self._number_to_keep_or_drop:
                self._simplified_form = dice_expression.DiceExpression(
                    "%dd%s" % (self._number_of_dice, self._get_number_of_sides_string())
                )
            elif self._number_to_keep_or_drop == 0:
                self._simplified_form = (
                    constant_integer_expression.ConstantIntegerExpression("0")
                )
        else:
            if self._number_of_dice <= self._number_to_keep_or_drop:
                self._simplified_form = (
                    constant_integer_expression.ConstantIntegerExpression("0")
                )
            elif self._number_to_keep_or_drop == 0:
                self._simplified_form = dice_expression.DiceExpression(
                    "%dd%s" % (self._number_of_dice, self._get_number_of_sides_string())
                )
Пример #2
0
 def test_custom_dice_multiplier(self):
     self.assertEqual(
         {
             5: 79,
             4: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("[4*1, 5*79]"),
     )
Пример #3
0
 def test_custom_dice_range(self):
     self.assertEqual(
         {
             7: 1,
             8: 1,
             9: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("[7-9]"),
     )
Пример #4
0
 def test_custom_dice(self):
     self.assertEqual(
         {
             2: 1,
             -9: 1,
             1: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("[2, -9, 1]"),
     )
Пример #5
0
 def test_custom_dice_repeated_sides(self):
     self.assertEqual(
         {
             2: 2,
             -9: 1,
             1: 5
         },
         dice_expression_helper.get_single_dice_outcome_map(
             "[2, -9, 1, 1, 1, 1, 1 ,2     ]"),
     )
Пример #6
0
 def test_custom_dice_range_negative(self):
     self.assertEqual(
         {
             -3: 1,
             -2: 1,
             -1: 1,
             0: 1,
             1: 1,
             2: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("[-3-2]"),
     )
Пример #7
0
 def test_numbered_dice(self):
     self.assertEqual(
         {
             1: 1,
             2: 1,
             3: 1,
             4: 1,
             5: 1,
             6: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("6"),
     )
Пример #8
0
 def test_custom_dice_range_out_of_order_range(self):
     self.assertEqual(
         {
             -3: 1,
             -2: 1,
             -1: 1,
             1: 1,
             2: 1,
             3: 1,
             4: 1
         },
         dice_expression_helper.get_single_dice_outcome_map("[4-1, -1--3]"),
     )
Пример #9
0
 def test_custom_dice_range_negative_to_negative(self):
     self.assertEqual(
         {
             -10: 1,
             -9: 1,
             -8: 1,
             -7: 1,
             -3: 1,
             -2: 1,
             -1: 1,
             0: 1
         },
         dice_expression_helper.get_single_dice_outcome_map(
             "[-3--1, -10--7, 0]"),
     )
Пример #10
0
 def test_custom_dice_multiplier_range(self):
     self.assertEqual(
         {
             -1: 10,
             0: 10,
             1: 10,
             4: 2,
             5: 2,
             6: 2,
             7: 2,
             8: 2
         },
         dice_expression_helper.get_single_dice_outcome_map(
             "[4-8*2, -1-1*10]"),
     )
Пример #11
0
 def test_percentile_dice(self):
     self.assertEqual(
         {i: 1
          for i in range(1, 101)},
         dice_expression_helper.get_single_dice_outcome_map("%"),
     )
Пример #12
0
 def test_fate_dice(self):
     self.assertEqual({
         -1: 1,
         0: 1,
         1: 1
     }, dice_expression_helper.get_single_dice_outcome_map("F"))
Пример #13
0
 def __init__(self, string_form: str):
     self._string_form = string_form
     self._single_dice_outcome_map = (
         dice_expression_helper.get_single_dice_outcome_map(
             self._string_form.split("d")[1]))
     self._number_of_dice = self._get_number_of_dice()