diff options
Diffstat (limited to 'test/test_jsinterp.py')
| -rw-r--r-- | test/test_jsinterp.py | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py index 328941e09..faddf00d5 100644 --- a/test/test_jsinterp.py +++ b/test/test_jsinterp.py @@ -9,6 +9,7 @@ import unittest  sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  import math +import re  from youtube_dl.jsinterp import JSInterpreter  undefined = JSInterpreter.undefined @@ -316,19 +317,39 @@ class TestJSInterpreter(unittest.TestCase):          function x() { return {}; }          ''')          self.assertEqual(jsi.call_function('x'), {}) +          jsi = JSInterpreter('''          function x() { let a = {m1: 42, m2: 0 }; return [a["m1"], a.m2]; }          ''')          self.assertEqual(jsi.call_function('x'), [42, 0]) +          jsi = JSInterpreter('''          function x() { let a; return a?.qq; }          ''')          self.assertIs(jsi.call_function('x'), undefined) +          jsi = JSInterpreter('''          function x() { let a = {m1: 42, m2: 0 }; return a?.qq; }          ''')          self.assertIs(jsi.call_function('x'), undefined) +    def test_regex(self): +        jsi = JSInterpreter(''' +        function x() { let a=/,,[/,913,/](,)}/; } +        ''') +        self.assertIs(jsi.call_function('x'), None) + +        jsi = JSInterpreter(''' +        function x() { let a=/,,[/,913,/](,)}/; return a; } +        ''') +        # Pythons disagree on the type of a pattern +        self.assertTrue(isinstance(jsi.call_function('x'), type(re.compile('')))) + +        jsi = JSInterpreter(''' +        function x() { let a=/,,[/,913,/](,)}/i; return a; } +        ''') +        self.assertEqual(jsi.call_function('x').flags & re.I, re.I) +  if __name__ == '__main__':      unittest.main()  | 
