diff options
Diffstat (limited to 'test/test_jsinterp.py')
| -rw-r--r-- | test/test_jsinterp.py | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py index c24b8ca74..4d05ea610 100644 --- a/test/test_jsinterp.py +++ b/test/test_jsinterp.py @@ -112,6 +112,57 @@ class TestJSInterpreter(unittest.TestCase):          ''')          self.assertEqual(jsi.call_function('z'), 5) +    def test_for_loop(self): +        # function x() { a=0; for (i=0; i-10; i++) {a++} a } +        jsi = JSInterpreter(''' +        function x() { a=0; for (i=0; i-10; i = i + 1) {a++} a } +        ''') +        self.assertEqual(jsi.call_function('x'), 10) + +    def test_switch(self): +        jsi = JSInterpreter(''' +        function x(f) { switch(f){ +            case 1:f+=1; +            case 2:f+=2; +            case 3:f+=3;break; +            case 4:f+=4; +            default:f=0; +        } return f } +        ''') +        self.assertEqual(jsi.call_function('x', 1), 7) +        self.assertEqual(jsi.call_function('x', 3), 6) +        self.assertEqual(jsi.call_function('x', 5), 0) + +    def test_try(self): +        jsi = JSInterpreter(''' +        function x() { try{return 10} catch(e){return 5} } +        ''') +        self.assertEqual(jsi.call_function('x'), 10) + +    def test_for_loop_continue(self): +        jsi = JSInterpreter(''' +        function x() { a=0; for (i=0; i-10; i++) { continue; a++ } a } +        ''') +        self.assertEqual(jsi.call_function('x'), 0) + +    def test_for_loop_break(self): +        jsi = JSInterpreter(''' +        function x() { a=0; for (i=0; i-10; i++) { break; a++ } a } +        ''') +        self.assertEqual(jsi.call_function('x'), 0) + +    def test_literal_list(self): +        jsi = JSInterpreter(''' +        function x() { [1, 2, "asdf", [5, 6, 7]][3] } +        ''') +        self.assertEqual(jsi.call_function('x'), [5, 6, 7]) + +    def test_comma(self): +        jsi = JSInterpreter(''' +        function x() { a=5; a -= 1, a+=3; return a } +        ''') +        self.assertEqual(jsi.call_function('x'), 7) +  if __name__ == '__main__':      unittest.main()  | 
