mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[jsinterp] Small updates for a85a875
				
					
				
			* update signature tests * clarify NaN handling
This commit is contained in:
		| @@ -516,6 +516,9 @@ class TestJSInterpreter(unittest.TestCase): | |||||||
|         jsi = JSInterpreter('function x(){return 42 << NaN}') |         jsi = JSInterpreter('function x(){return 42 << NaN}') | ||||||
|         self.assertEqual(jsi.call_function('x'), 42) |         self.assertEqual(jsi.call_function('x'), 42) | ||||||
|  |  | ||||||
|  |         jsi = JSInterpreter('function x(){return 42 << Infinity}') | ||||||
|  |         self.assertEqual(jsi.call_function('x'), 42) | ||||||
|  |  | ||||||
|     def test_32066(self): |     def test_32066(self): | ||||||
|         jsi = JSInterpreter("function x(){return Math.pow(3, 5) + new Date('1970-01-01T08:01:42.000+08:00') / 1000 * -239 - -24205;}") |         jsi = JSInterpreter("function x(){return Math.pow(3, 5) + new Date('1970-01-01T08:01:42.000+08:00') / 1000 * -239 - -24205;}") | ||||||
|         self.assertEqual(jsi.call_function('x'), 70) |         self.assertEqual(jsi.call_function('x'), 70) | ||||||
|   | |||||||
| @@ -143,6 +143,14 @@ _NSIG_TESTS = [ | |||||||
|         'https://www.youtube.com/s/player/dac945fd/player_ias.vflset/en_US/base.js', |         'https://www.youtube.com/s/player/dac945fd/player_ias.vflset/en_US/base.js', | ||||||
|         'o8BkRxXhuYsBCWi6RplPdP', '3Lx32v_hmzTm6A', |         'o8BkRxXhuYsBCWi6RplPdP', '3Lx32v_hmzTm6A', | ||||||
|     ), |     ), | ||||||
|  |     ( | ||||||
|  |         'https://www.youtube.com/s/player/6f20102c/player_ias.vflset/en_US/base.js', | ||||||
|  |         'lE8DhoDmKqnmJJ', 'pJTTX6XyJP2BYw', | ||||||
|  |     ), | ||||||
|  |     ( | ||||||
|  |         'https://www.youtube.com/s/player/cfa9e7cb/player_ias.vflset/en_US/base.js', | ||||||
|  |         'qO0NiMtYQ7TeJnfFG2', 'k9cuJDHNS5O7kQ', | ||||||
|  |     ), | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ from __future__ import unicode_literals | |||||||
|  |  | ||||||
| import itertools | import itertools | ||||||
| import json | import json | ||||||
| import math |  | ||||||
| import operator | import operator | ||||||
| import re | import re | ||||||
|  |  | ||||||
| @@ -52,6 +51,10 @@ def wraps_op(op): | |||||||
|     return update_and_rename_wrapper |     return update_and_rename_wrapper | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # NB In principle NaN cannot be checked by membership. | ||||||
|  | # Here all NaN values are actually this one, so _NaN is _NaN, | ||||||
|  | # although _NaN != _NaN. | ||||||
|  |  | ||||||
| _NaN = float('nan') | _NaN = float('nan') | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -126,13 +129,8 @@ def _js_comp_op(op): | |||||||
|  |  | ||||||
| def _js_ternary(cndn, if_true=True, if_false=False): | def _js_ternary(cndn, if_true=True, if_false=False): | ||||||
|     """Simulate JS's ternary operator (cndn?if_true:if_false)""" |     """Simulate JS's ternary operator (cndn?if_true:if_false)""" | ||||||
|     if cndn in (False, None, 0, '', JS_Undefined): |     if cndn in (False, None, 0, '', JS_Undefined, _NaN): | ||||||
|         return if_false |         return if_false | ||||||
|     try: |  | ||||||
|         if math.isnan(cndn):  # NB: NaN cannot be checked by membership |  | ||||||
|             return if_false |  | ||||||
|     except TypeError: |  | ||||||
|         pass |  | ||||||
|     return if_true |     return if_true | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user