[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)
|
||||
|
||||
@unittest.skip('Test not yet implemented: missing ast')
|
||||
def test_switch(self):
|
||||
# ASAP switch statement test
|
||||
jsi = JSInterpreter(
|
||||
@ -752,8 +751,54 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
}
|
||||
'''
|
||||
)
|
||||
ast = []
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
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')
|
||||
def test_for(self):
|
||||
|
@ -314,11 +314,12 @@ class JSInterpreter(object):
|
||||
break
|
||||
elif token_id is Token.END and token_stream.ended:
|
||||
raise ExtractorError('Unbalanced parentheses at %d' % open_pos)
|
||||
statement_list.append(self._next_statement(token_id, stack_top - 1))
|
||||
token_stream.pop()
|
||||
statement_list.append(self._next_statement(token_stream, stack_top - 1))
|
||||
|
||||
block.append((expr, statement_list))
|
||||
statement = (Token.BLOCK, discriminant, block)
|
||||
|
||||
token_stream.pop()
|
||||
statement = (Token.SWITCH, discriminant, block)
|
||||
|
||||
elif token_value == 'throw':
|
||||
token_stream.pop()
|
||||
|
Loading…
x
Reference in New Issue
Block a user