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