Ejemplo n.º 1
0
 def _test_one(self, input_text, parsed):
     self.assertEqual(build_eval_tree(tokenizer(input_text)).to_string(), parsed)
Ejemplo n.º 2
0
def _test_build_tree(input_text):
    '''
    
    ####
    >>> _test_build_tree('3') #single number
    u'3'
    >>> _test_build_tree('1 + 2') #basic addition
    u'(1 + 2)'
    >>> _test_build_tree('2 * 3 + 4') #order of operations
    u'((2 * 3) + 4)'
    >>> _test_build_tree('2 * (3 + 4)') #parentheses
    u'(2 * (3 + 4))'
    >>> _test_build_tree('1 + 2 * 3 ** (4 + 3 / 5)') #more order of operations
    u'(1 + (2 * (3 ** (4 + (3 / 5)))))'
    >>> _test_build_tree('1 * ((3 + 4) * 5)') #nested parentheses at beginning
    u'(1 * ((3 + 4) * 5))'
    >>> _test_build_tree('1 * (5 * (3 + 4))') #nested parentheses at end
    u'(1 * (5 * (3 + 4)))'
    >>> _test_build_tree('1 * (5 * (3 + 4) / 6)') #nested parentheses in middle
    u'(1 * ((5 * (3 + 4)) / 6))'
    >>> _test_build_tree('-1') #unary
    u'(- 1)'
    >>> _test_build_tree('3 * -1') #unary
    u'(3 * (- 1))'
    >>> _test_build_tree('3 * --1') #double unary
    u'(3 * (- (- 1)))'
    >>> _test_build_tree('3 * -(2 + 4)') #parenthetical unary
    u'(3 * (- (2 + 4)))'
    >>> _test_build_tree('3 * -((2 + 4))') #parenthetical unary
    u'(3 * (- (2 + 4)))'
    >>> _test_build_tree('3 4') #implicit op
    u'(3 4)'
    >>> _test_build_tree('3 (2 + 4)') #implicit op, then parentheses
    u'(3 (2 + 4))'
    >>> _test_build_tree('(3 ** 4 ) 5') #parentheses, then implicit
    u'((3 ** 4) 5)'
    >>> _test_build_tree('3 4 ** 5') #implicit op, then exponentiation
    u'(3 (4 ** 5))'
    >>> _test_build_tree('3 4 + 5') #implicit op, then addition
    u'((3 4) + 5)'
    >>> _test_build_tree('3 ** 4 5') #power followed by implicit
    u'((3 ** 4) 5)'
    >>> _test_build_tree('3 (4 ** 5)') #implicit with parentheses
    u'(3 (4 ** 5))'
    >>> _test_build_tree('3e-1') #exponent with e
    u'3e-1'
    
    >>> _test_build_tree('kg ** 1 * s ** 2') #multiple units with exponents
    u'((kg ** 1) * (s ** 2))'
    >>> _test_build_tree('kg ** -1 * s ** -2') #multiple units with neg exponents
    u'((kg ** (- 1)) * (s ** (- 2)))'
    >>> _test_build_tree('kg^-1 * s^-2') #multiple units with neg exponents
    u'((kg ^ (- 1)) * (s ^ (- 2)))'
    >>> _test_build_tree('kg^-1 s^-2') #multiple units with neg exponents, implicit op
    u'((kg ^ (- 1)) (s ^ (- 2)))'
    
    >>> _test_build_tree('2 ^ 3 ^ 2') #nested power
    u'(2 ^ (3 ^ 2))'
    
    >>> _test_build_tree('gram * second / meter ** 2') #nested power
    u'((gram * second) / (meter ** 2))'
    >>> _test_build_tree('gram / meter ** 2 / second') #nested power
    u'((gram / (meter ** 2)) / second)'
    
    #units should behave like numbers, so we don't need a bunch of extra tests for them
    >>> _test_build_tree('3 kg + 5') #implicit op, then addition
    u'((3 kg) + 5)'
    '''
    return build_eval_tree(tokenizer(input_text)).to_string()
Ejemplo n.º 3
0
 def _test_one(self, input_text, parsed):
     self.assertEqual(
         build_eval_tree(tokenizer(input_text)).to_string(), parsed)
Ejemplo n.º 4
0
 def _test_one(self, input_text, parsed):
     assert build_eval_tree(tokenizer(input_text)).to_string() == parsed