Exemplo n.º 1
0
 def test_is_fail(self):
     tree = EvalTree('2d20l1')
     tree.evaluate()
     self.assertTrue(tree.is_fail())
     self.assertFalse(tree.is_critical())
     tree = EvalTree('1d20 + 1d20')
     tree.evaluate()
     self.assertTrue(tree.is_fail())
     self.assertTrue(tree.is_critical())
Exemplo n.º 2
0
 def populate(self, tree: EvalTree):
     """Display the result of a roll represented by the tree."""
     try:
         tree.evaluate()
         text = tree.verbose_result()
         color = 'black'
         if tree.is_critical():
             color = 'green'
         elif tree.is_fail():
             color = 'red'
         self.setText(text)
         self.setFont(self.defaultFont)
         self.setStyleSheet('color: {}'.format(color))
     except EvaluationError as e:
         self.show_error(e)
Exemplo n.º 3
0
 def test_copy(self):
     root = EvalTreeNode(
         OPERATORS['d'], EvalTreeNode(1),
         EvalTreeNode(OPERATORS['d'], EvalTreeNode(4), EvalTreeNode(20)))
     tree = EvalTree(None)
     tree.root = root
     tree.evaluate()
     copy = tree.copy()
     self.assertEqual(tree, copy)
     self.assertIsNot(tree, copy)
     for origNode, copyNode in zip(tree.pre_order(), copy.pre_order()):
         self.assertIsNot(origNode, copyNode)
         # Avoid false positives from int interning
         if not isinstance(origNode.value, int):
             self.assertIsNot(origNode.value, copyNode.value)
         if not isinstance(origNode.payload, int):
             self.assertIsNot(origNode.payload, copyNode.payload)
Exemplo n.º 4
0
        "(1d4-1)|(1d3-2>0)",
        "1dc8+1dc4+3",
        "1dm6+1d6",
        "2d4c2",
        "2da6",
        "3da6",
        "2d10%2",
        "1d4=4|1d4=3",
        "1d8>=6",
        "10d8r>4",
        "10d8R>4",
        "10d[3,3,3,5]",
        "10d[3, 3, 3, 5]",
        "15d6t5",
        "15d6T1",
    ]
    for expr in testCases:
        tree = EvalTree(expr)
        print('EVALUATING ' + expr)
        print('EVALUATING USING TREE DIRECTLY')
        print(tree.evaluate())
        print('EVALUATING USING ROLL FUNCTION')
        print(basic(expr))
        print('EVALUATING USING ROLL FUNCTION IN VERBOSE MODE')
        print(verbose(expr))
        print('EVALUATING USING ROLL FUNCTION AND MODIFIER')
        print(basic(expr, modifiers=3))
        print('EVALUATING USING ROLL FUNCTION IN VERBOSE MODE AND MODIFIER')
        print(verbose(expr, modifiers=3))
        print()