[jsinterp] Adding switch ast to parser test
This commit is contained in:
parent
007f19ea49
commit
cf4c9c3db8
@ -731,7 +731,6 @@ class TestJSInterpreterParser(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
self.assertEqual(list(jsi.statements()), ast)
|
self.assertEqual(list(jsi.statements()), ast)
|
||||||
|
|
||||||
@unittest.skip('Test not yet implemented: missing ast')
|
|
||||||
def test_switch(self):
|
def test_switch(self):
|
||||||
# ASAP switch statement test
|
# ASAP switch statement test
|
||||||
jsi = JSInterpreter(
|
jsi = JSInterpreter(
|
||||||
@ -752,8 +751,54 @@ class TestJSInterpreterParser(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
ast = []
|
ast = [
|
||||||
self.assertEqual(list(jsi.statements()), ast)
|
(Token.FUNC, 'a', ['x'],
|
||||||
|
(Token.BLOCK, [
|
||||||
|
(Token.SWITCH, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.ID, 'x'), None, None)
|
||||||
|
]), None)]),
|
||||||
|
[
|
||||||
|
((Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 6), None, None)]), None)]),
|
||||||
|
[
|
||||||
|
(Token.BREAK, None)
|
||||||
|
]),
|
||||||
|
((Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 5), None, None)]), None)]),
|
||||||
|
[
|
||||||
|
(Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.ID, 'x'), None, None),
|
||||||
|
(Token.UOP, _UNARY_OPERATORS['++'][1])
|
||||||
|
]), None)])
|
||||||
|
]),
|
||||||
|
((Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 8), None, None)]), None)]),
|
||||||
|
[
|
||||||
|
(Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.ID, 'x'), None, None),
|
||||||
|
(Token.UOP, _UNARY_OPERATORS['--'][1])
|
||||||
|
]), None)]),
|
||||||
|
(Token.BREAK, None)
|
||||||
|
]),
|
||||||
|
(None,
|
||||||
|
[
|
||||||
|
(Token.EXPR, [
|
||||||
|
(Token.ASSIGN,
|
||||||
|
_ASSIGN_OPERATORS['='][1],
|
||||||
|
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]),
|
||||||
|
(Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 0), None, None)]), None)
|
||||||
|
)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
]
|
||||||
|
),
|
||||||
|
(Token.RETURN, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.ID, 'x'), None, None)]), None)]))
|
||||||
|
]))
|
||||||
|
]
|
||||||
|
result = list(jsi.statements())
|
||||||
|
self.assertEqual(result, ast)
|
||||||
|
|
||||||
@unittest.skip('Test not yet implemented: missing ast')
|
@unittest.skip('Test not yet implemented: missing ast')
|
||||||
def test_for(self):
|
def test_for(self):
|
||||||
|
@ -314,11 +314,12 @@ class JSInterpreter(object):
|
|||||||
break
|
break
|
||||||
elif token_id is Token.END and token_stream.ended:
|
elif token_id is Token.END and token_stream.ended:
|
||||||
raise ExtractorError('Unbalanced parentheses at %d' % open_pos)
|
raise ExtractorError('Unbalanced parentheses at %d' % open_pos)
|
||||||
statement_list.append(self._next_statement(token_id, stack_top - 1))
|
statement_list.append(self._next_statement(token_stream, stack_top - 1))
|
||||||
token_stream.pop()
|
|
||||||
|
|
||||||
block.append((expr, statement_list))
|
block.append((expr, statement_list))
|
||||||
statement = (Token.BLOCK, discriminant, block)
|
|
||||||
|
token_stream.pop()
|
||||||
|
statement = (Token.SWITCH, discriminant, block)
|
||||||
|
|
||||||
elif token_value == 'throw':
|
elif token_value == 'throw':
|
||||||
token_stream.pop()
|
token_stream.pop()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user