def testParseBinaryOperatorParenthesesPrecedence1(self): string = "(3 + 4) * 5" parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result) self.assertIsNode('BinaryOperation', result.left) self.assertIsNode('NumberLiteral', result.right)
def testParseCommaExpression(self): testCases = [ 'a, b, c', ] for string in testCases: parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result)
def testParseBinaryOperatorComparison(self): string = "3 + 4 && 5 + 6" parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result) self.assertEquals('&&', result.op) self.assertIsNode('BinaryOperation', result.left) self.assertIsNode('BinaryOperation', result.right)
def testParseBinaryOperatorEqualPrecedence(self): string = "a + b - c" parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result) self.assertEqual(u'-', result.op) self.assertIsNode('BinaryOperation', result.left) self.assertEqual(u'+', result.left.op)
def testParseBinaryOperatorParenthesesPrecedence2(self): string = "a + (b - c)" parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result) self.assertEqual(u'+', result.op) self.assertIsNode('BinaryOperation', result.right) self.assertEqual(u'-', result.right.op)
def testParseExpression(self): testCases = { 'call-functionexpression': ('(function() { return {};})();', 'CallExpression'), } for test_name, (string, expected) in testCases.iteritems(): parser = self.makeStringParser(string) result = parser.parse_expression() fmt_args = (test_name, expected, result.__class__.__name__) msg = '%s did not parse an %s; got %s' % fmt_args self.assertIsNode(expected, result, msg=msg)
def testParseBinaryOperatorMultiplePrecedence(self): string = "3 + 4 * 5 + 6" parser = self.makeStringParser(string) result = parser.parse_expression() self.assertIsNode('BinaryOperation', result) self.assertIsNode('BinaryOperation', result.left) self.assertIsNode('NumberLiteral', result.right) self.assertEquals('+', result.left.op) self.assertIsNode('BinaryOperation', result.left.right) self.assertEquals('*', result.left.right.op)