88from decimal import Decimal
99
1010import esprima
11+ try :
12+ import numpy as np
13+ HAS_NUMPY = True
14+ except ImportError :
15+ HAS_NUMPY = False
16+
1117from validator_collection import checkers
1218
1319
@@ -208,4 +214,71 @@ def test_is_js_object(original_str, expected, error):
208214 assert result is expected
209215 else :
210216 with pytest .raises (error ):
211- result = js .is_js_object (original_str )
217+ result = js .is_js_object (original_str )
218+
219+
220+ @pytest .mark .parametrize ('original_value, error' , [
221+ ({'test' , 123 }, TypeError ),
222+ ([{'test' : 123 }], TypeError ),
223+ ({'test' : {'subtest' : 123 }}, TypeError ),
224+ ({'test' : 'string' }, TypeError ),
225+ ('string' , TypeError ),
226+ (True , None ),
227+ (False , None ),
228+ (123 , None ),
229+ (123.45 , None ),
230+ (Decimal (123.45 ), TypeError ),
231+ ([1 , 2 , 3 ], None ),
232+ ([1.2 , 3.4 , 5.6 ], None ),
233+ (['string' , 1 , 2 , 3 ], TypeError ),
234+ (['string' , [1 , 2 , 3 ]], ValueError ),
235+ (['test' , None ], TypeError ),
236+ (None , TypeError ),
237+ ])
238+ def test_np_isnan (original_value , error ):
239+ print (f'ORIGINAL VALUE: { original_value } ' )
240+ print (f'{ type (original_value )} ' )
241+ if HAS_NUMPY and not error :
242+ result = np .isnan (original_value )
243+ print (f'RESULT: { result } ' )
244+ if not isinstance (result , np .ndarray ):
245+ assert result is False or not result
246+ else :
247+ assert result .all () is False or not result .all ()
248+ elif HAS_NUMPY :
249+ with pytest .raises (error ):
250+ result = np .isnan (original_value )
251+ else :
252+ pass
253+
254+
255+ @pytest .mark .parametrize ('original_value, expected, error' , [
256+ ({'test' : 123 }, """{'test': 123}""" , None ),
257+ ([{'test' : 123 }], """[{'test': 123}]""" , None ),
258+ ({'test' : {'subtest' : 123 }}, """{'test': {'subtest': 123}}""" , None ),
259+ ({'test' : 'string' }, """{'test': 'string'}""" , None ),
260+ ('string' , """'string'""" , None ),
261+ (True , """true""" , None ),
262+ (False , """false""" , None ),
263+ (123 , """123""" , None ),
264+ (123.45 , """123.45""" , None ),
265+ (Decimal (123.45 ), """123.45""" , None ),
266+ ([1 , 2 , 3 ], """[1,\n 2,\n 3]""" , None ),
267+ ([1.2 , 3.4 , 5.6 ], """[1.2,\n 3.4,\n 5.6]""" , None ),
268+ (['string' , 1 , 2 , 3 ], """['string',\n 1,\n 2,\n 3]""" , None ),
269+ (['string' , [1 , 2 , 3 ]], """['string',\n [1,\n 2,\n 3]]""" , None ),
270+ (['test' , None ], """['test',\n null]""" , None ),
271+ (None , """null""" , None ),
272+ ])
273+ def test_get_js_literal (original_value , expected , error ):
274+ print (f'ORIGINAL VALUE: { original_value } ' )
275+ if not error :
276+ result = js .get_js_literal (original_value )
277+ if not isinstance (original_value , Decimal ):
278+ assert result == expected
279+ else :
280+ assert result == str (original_value )
281+ else :
282+ with pytest .raises (error ):
283+ result = js .get_js_literal (original_value )
284+
0 commit comments