mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	Back-port JS interpreter upgrade from yt-dlp PR #1437
This commit is contained in:
		| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user