
    ]j7H                     N   d dl Z d dlZd dlmZ d dlZd dlmZ d Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d e#d!e#d"ee#   d#dfd$Z$d% Z%d& Z&d' Z'd( Z(d) Z)d* Z*d+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2y)3    N)Optional)JSFc                     t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          c} y # 1 sw Y   <xY wc c}w )Nzobject_no_properties.json
   )openjsonloadr   rangegenerateTestDatafileschemap_s        E/root/env/lib/python3.12/site-packages/jsf/tests/test_default_fake.pytest_fake_object_no_propertiesr   	   sY    	h44	5 !4!FA 9%aQZZ\%	! ! &   A A, A)c                 4   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]%  }t        |t              rt        |t              r%J  y # 1 sw Y   exY wc c}w )Nz
anyof.jsonr   )	r   r   r	   r   r
   r   
isinstancestrfloatr   r   r   r   r   	fake_datads          r   test_fake_anyofr      s    	h%	& !$4!FA',Ry1!1I1 :!S!Z5%999:! ! 2   B	B	Bc                 .   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]"  }t        |t              rt        |      dk  r"J  y # 1 sw Y   bxY wc c}w )Nz
allof.jsonr      )	r   r   r	   r   r
   r   r   r   lenr   s          r   test_fake_allofr!      s    	h%	& !$4!FA',Ry1!1I1 2!S!c!fk112! ! 2s   BBBc                    t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]  }t        |t              sJ t        |j                               dhk(  sJ t        |d   j                               ddhk(  sJ t        |d   d   t              sJ t        |d   d   t              rJ  y # 1 sw Y   xY wc c}w )Nzallof-complex.jsonr   
prometheusportpath)r   r   r	   r   r
   r   r   dictsetkeysintr   r   s          r   test_fake_allof_complexr*   %   s    	h--	. !$4!FA',Ry1!1I1 8!T"""1668}...1\?'')*vv.>>>>!L/&13777!L/&137778! ! 2s   C*C6*C3c                 4   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]%  }t        |t              sJ d|d   v rd|d   v r%J  y # 1 sw Y   exY wc c}w )Nzanyof_object.jsonr   nameobidr   r   r	   r   r
   r   r   r&   r   s          r   test_fake_anyof_objectr0   3       	h,,	- !4!FA',Ry1!1I1 8!T"""!D'!tqw778! ! 2r   c                 4   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]%  }t        |t              rt        |t              r%J  y # 1 sw Y   exY wc c}w )Nz
oneof.jsonr   )	r   r   r	   r   r
   r   r   boolr   r   s          r   test_fake_oneofr4   >   s    	h%	& !$4!FA',Ry1!1I1 9!T"jC&8889! ! 2r   c                 P   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]3  }t        |t              rt        |t              rt        |      dk  r3J  y # 1 sw Y   sxY wc c}w )Nzoneof_allof.jsonr   r   )
r   r   r	   r   r
   r   r   r3   r   r    r   s          r   test_fake_oneof_allofr6   H   s    	h++	, !4!FA',Ry1!1I1 K!T"z!S'9c!fkJJK! ! 2s   BB#B c                 4   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          }}|D ]%  }t        |t              sJ d|d   v rd|d   v r%J  y # 1 sw Y   exY wc c}w )Nzoneof_object.jsonr   r,   r-   r.   r/   r   s          r   test_fake_oneof_objectr8   R   r1   r   c                 8   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}d|v sJ d|v sJ y # 1 sw Y   gxY wc c}w )Nzboolean.jsond   FT)r   r   r	   r   r   r   r3   r
   r   r   r   r   r   r   s         r   test_fake_booleanr<   ]   s    	h'	( !D4!FAajjlD)))',Sz2!2I2I9! !
 3s   B%BBc                 j   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        |      t        t        |            z
  dk  sJ y # 1 sw Y   xY wc c}w )Nzstring.jsonr:   2   )
r   r   r	   r   r   r   r   r
   r    r'   r;   s         r   test_fake_stringr?   h   s    	h&	' !44!FAajjlC(((',Sz2!2I2y>CI//"444! ! 3s   B$%B0$B-c                 H   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ y # 1 sw Y   oxY wc c}w )Nzstring-max-min-length.jsonr   c              3   8   K   | ]  }t        |      d k(    yw)   Nr    ).0fds     r   	<genexpr>z2test_fake_string_max_min_length.<locals>.<genexpr>w   s     0s2w!|0   )	r   r   r	   r   r   r   r   r
   allr;   s         r   test_fake_string_max_min_lengthrI   q   s    	h55	6 !$4!FAajjlC(((',Ry1!1I10i0000! ! 2s   B%BBc                 n   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}|D ]"  }t        |d         ddhz
  t               k(  r"J  y # 1 sw Y   xY wc c}w )Nzstring-content-encoding.jsonr:   binary10)	r   r   r	   r   r   r   r&   r
   r'   r   s          r   !test_fake_string_content_encodingrN   z   s    	h77	8 !D4!FAajjlD)))',Sz2!2I2 61X;3*,5556! ! 3s   B&%B2&B/c                 B   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}|D ]  }t        |d         dk\  rt        |d         dk  sJ t        j                  |d   ddi      }t        |j                               d	d
hk(  sJ t	        |d	   t              sJ t	        |d
   t              rJ  y # 1 sw Y   xY wc c}w )Nzstring-content-type.jsonr   z
text/plainr   zapplication/jwtverify_signatureF)optionsexpiss)r   r   r	   r   r   r   r&   r
   r    jwtdecoder'   r(   r)   r   )r   r   r   r   r   r   r   decoded_jwts           r   test_fake_string_content_typerW      s   	h33	4 !4!FAajjlD)))',Ry1!1I1 31\?#q(S<-AR-GGGjj#4!5@RTY?Z[;##%&5%.888+e,c222+e,c2223! ! 2s   D%DDc                 \   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t        d             sJ t        d      D cg c]  }|j                          }}t        t        |            dk(  sJ y # 1 sw Y   yxY wc c}w )Nz	null.jsonr:      )
r   r   r	   r   r   r   typer
   r    r'   r;   s         r   test_fake_nullr[      s    	h$	% !4!FAajjlDJ///',Sz2!2I2s9~!###! !
 3s   B*B)B&c                 *   t        | dz        5 }t        j                  |      }d d d        t              t	        j                         t        t        d       t        f      sJ t        fdt        d      D              sJ y # 1 sw Y   dxY w)Nz	enum.jsonc              3   B   K   | ]  }j                         d v   yw))redambergreenN*   Nr   rD   r   r   s     r   rF   z!test_fake_enum.<locals>.<genexpr>   s     Wqqzz|BBW   r:   )r   r   r	   r   r   r   r   rZ   r)   rH   r
   r   r   r   r   s      @r   test_fake_enumrf      sw    	h$	% !4!FAajjlS$t*c$:;;;WERUJWWWW! !s   B		Bc                 
   t        | dz        5 }t        j                  |      }d d d        t              t	        j                         t              sJ t        fdt        d      D              sJ y # 1 sw Y   TxY w)Nzstring-enum.jsonc              3   B   K   | ]  }j                         d v   yw)StreetAvenue	BoulevardNrb   rc   s     r   rF   z(test_fake_string_enum.<locals>.<genexpr>   s     UQqzz|@@Urd   r:   )	r   r   r	   r   r   r   r   rH   r
   re   s      @r   test_fake_string_enumrm      sm    	h++	, !4!FAajjlC(((U%PS*UUUU! !   A99Bc                 
   t        | dz        5 }t        j                  |      }d d d        t              t	        j                         t              sJ t        fdt        d      D              sJ y # 1 sw Y   TxY w)Nzobject-enum.jsonc              3   R   K   | ]  }j                         d dddddfv    yw)rL   CHILD)codevalue2ADULTNrb   rc   s     r   rF   z(test_fake_object_enum.<locals>.<genexpr>   s4       	


#83QX:YZZs   $'r:   )	r   r   r	   r   r   r   r&   rH   r
   re   s      @r   test_fake_object_enumrv      sw    	h++	, !4!FAajjlD))) s   ! !rn   c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ t        d |D              sJ |       t        d |D              sJ t        d |D              sJ y # 1 sw Y   xY wc c}w )Nzinteger.json  c              3   &   K   | ]	  }|d k    ywi  N rD   r   s     r   rF   z test_fake_int.<locals>.<genexpr>        +AqCx+   c              3   &   K   | ]	  }|d kD    ywiX  Nr{   r|   s     r   rF   z test_fake_int.<locals>.<genexpr>        *1q3w*r~   c              3   &   K   | ]	  }|d k7    ywr   r{   r|   s     r   rF   z test_fake_int.<locals>.<genexpr>   r}   r~   c              3   ,   K   | ]  }|d z  dk(    yw)   r   Nr{   r|   s     r   rF   z test_fake_int.<locals>.<genexpr>   s     -aq1uz-s   )	r   r   r	   r   r   r   r)   r
   rH   r;   s         r   test_fake_intr      s    	h'	( !D4!FAajjlC(((',T{3!3I3+++++*	**5I5*+++++-9----! !
 4s   C%C Cc                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ t        d |D              sJ |       t        d |D              sJ y # 1 sw Y   xY wc c}w )Nznumber.jsonrx   c              3   &   K   | ]	  }|d k    ywrz   r{   r|   s     r   rF   z#test_fake_number.<locals>.<genexpr>   r}   r~   c              3   &   K   | ]	  }|d kD    ywr   r{   r|   s     r   rF   z#test_fake_number.<locals>.<genexpr>   r   r~   c              3   &   K   | ]	  }|d k7    ywr   r{   r|   s     r   rF   z#test_fake_number.<locals>.<genexpr>   r}   r~   	r   r   r	   r   r   r   r   r
   rH   r;   s         r   test_fake_numberr      s    	h&	' !44!FAajjlE***',T{3!3I3+++++*	**5I5*+++++! !
 4   C %C C	c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ t        d |D              sJ |       t        d |D              sJ y # 1 sw Y   xY wc c}w )Nznumber-exclusive.jsonrx   c              3   &   K   | ]	  }|d k    ywrz   r{   r|   s     r   rF   z-test_fake_number_exclusive.<locals>.<genexpr>   r   r~   c              3   &   K   | ]	  }|d k\    ywr   r{   r|   s     r   rF   z-test_fake_number_exclusive.<locals>.<genexpr>   r}   r~   c              3   &   K   | ]	  }|d k7    ywrz   r{   r|   s     r   rF   z-test_fake_number_exclusive.<locals>.<genexpr>   r}   r~   r   r;   s         r   test_fake_number_exclusiver      s    	h00	1 !T4!FAajjlE***',T{3!3I3*	****+++6Y6++++++! !
 4r   c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ t        d |D              sJ y # 1 sw Y   xY wc c}w )Nznumber-exclusive-float.jsonrx   c              3   &   K   | ]	  }|d k    ywrz   r{   r|   s     r   rF   z3test_fake_number_exclusive_float.<locals>.<genexpr>   r   r~   c              3   &   K   | ]	  }|d kD    ywr   r{   r|   s     r   rF   z3test_fake_number_exclusive_float.<locals>.<genexpr>   r   r~   c              3   &   K   | ]	  }|d k7    ywrz   r{   r|   s     r   rF   z3test_fake_number_exclusive_float.<locals>.<genexpr>   r}   r~   c              3   &   K   | ]	  }|d k7    ywr   r{   r|   s     r   rF   z3test_fake_number_exclusive_float.<locals>.<genexpr>   r}   r~   r   r;   s         r    test_fake_number_exclusive_floatr      s    	h66	7 !44!FAajjlE***',T{3!3I3*	**5I5**	**5I5*++++++++++! !
 4s   C%C%C"c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nz
array.jsonrx   c              3   R   K   | ]  }t        |      h d z
  t               k(   ! yw>   r^   r_   r`   Nr'   r|   s     r   rF   z"test_fake_array.<locals>.<genexpr>   !     Nqs1v11SU:N   %'c              3   \   K   | ]$  }t        t        |            t        |      k(   & y wN)r    r'   r|   s     r   rF   z"test_fake_array.<locals>.<genexpr>   s!     8s3q6{c!f$8s   *,c              3   8   K   | ]  }t        |      d k    ywr   NrC   r|   s     r   rF   z"test_fake_array.<locals>.<genexpr>        .qs1v{.rG   c              3   8   K   | ]  }t        |      d k\    yw)rY   NrC   r|   s     r   rF   z"test_fake_array.<locals>.<genexpr>   r   rG   	r   r   r	   r   r   r   listr
   rH   r;   s         r   test_fake_arrayr      s    	h%	& !$4!FAajjlD)))',T{3!3I3NINNYPYYN8i88C)C8.I..9	9..I..9	9.! !
 4s   C#%C/#C,c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nzarray-dicts.jsonrx   c              3   >   K   | ]  }t        |d          dk(    yw)BasketrB   NrC   r|   s     r   rF   z(test_fake_array_dicts.<locals>.<genexpr>  s     8s1X;1$8s   c              3   6   K   | ]  }|d    d   d   dv   yw)r   r   	Item NameABCDENr{   r|   s     r   rF   z(test_fake_array_dicts.<locals>.<genexpr>  (      EF(A{#'@@   c              3   6   K   | ]  }|d    d   d   dv   yw)r   rY   r   r   Nr{   r|   s     r   rF   z(test_fake_array_dicts.<locals>.<genexpr>  r   r   c              3   N   K   | ]  }d |d   d    d   cxk  xr dk  nc   yw)r   r   Amountr   Nr{   r|   s     r   rF   z(test_fake_array_dicts.<locals>.<genexpr>	  *     DQqAhKN8,0q00D   #%c              3   N   K   | ]  }d |d   d   d   cxk  xr dk  nc   yw)r   r   rY   r   r   Nr{   r|   s     r   rF   z(test_fake_array_dicts.<locals>.<genexpr>
  r   r   	r   r   r	   r   r   r   r&   r
   rH   r;   s         r   test_fake_array_dictsr      s   	h++	, !4!FAajjlD)))',T{3!3I38i88C)C8 JS     JS    D)DDOiODD)DDOiOD! !
 4s   C<%D<Dc                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nzarray-fixed-int.jsonrx   c              3   R   K   | ]  }t        |      h d z
  t               k(   ! ywr   r   r|   s     r   rF   z,test_fake_array_fixed_int.<locals>.<genexpr>  r   r   c              3   8   K   | ]  }t        |      d k(    ywr   rC   r|   s     r   rF   z,test_fake_array_fixed_int.<locals>.<genexpr>  r   rG   r   r;   s         r   test_fake_array_fixed_intr     s    	h//	0 !D4!FAajjlD)))',T{3!3I3NINNYPYYN.I..9	9.! !
 4   B1%B=1B:c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nzarray-fixed-str.jsonrx   c              3   R   K   | ]  }t        |      h d z
  t               k(   ! ywr   r   r|   s     r   rF   z,test_fake_array_fixed_str.<locals>.<genexpr>  r   r   c              3   8   K   | ]  }t        |      d k(    yw)r>   NrC   r|   s     r   rF   z,test_fake_array_fixed_str.<locals>.<genexpr>   s     /s1v|/rG   r   r;   s         r   test_fake_array_fixed_strr     s    	h//	0 !D4!FAajjlD)))',T{3!3I3NINNYPYYN/Y//::/! !
 4r   c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}|D ]d  }t	        |d   t              sJ t	        |d   t              sJ t	        |d   t              r|d   dv sJ t	        |d   t              r|d   dv rdJ  y # 1 sw Y   xY wc c}w )	Nz
tuple.jsonrx   r   rY   rB   ri      )NWNESWSE)
r   r   r	   r   r   r   tupler
   r   r   r   s          r   test_fake_tupler   #  s    	h%	& !$4!FAajjlE***',T{3!3I3 J!A$&&&!A$$$$!A$$11R)RRR!A$$11I)III	J! !
 4s   C(%C4(C1c                    t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nzobject.jsonrx   c              3   B   K   | ]  }t        |d    t                ywr,   Nr   r   r|   s     r   rF   z#test_fake_object.<locals>.<genexpr>8       =az!F)S)=   c              3   B   K   | ]  }t        |d    t                yw)credit_cardN)r   r   r|   s     r   rF   z#test_fake_object.<locals>.<genexpr>9  s     Fqz!M*E2Fr   c              3   B   K   | ]  }t        |d    t                yw)testNr   r)   r|   s     r   rF   z#test_fake_object.<locals>.<genexpr>:  r   r   r   r;   s         r   test_fake_objectr   1  s    	h&	' !44!FAajjlD)))',T{3!3I3=9==HyH=FIFFQ	QF=9==HyH=! !
 4s   C
%C
Cc                 \   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}t        d |D              sJ |       t               }t               }|D ]  j                         D cg c]  }|j                  d      s| }	}j                         D cg c]  }|j                  d      s| }
}|j                  t        |	            }|j                  t        |
            }t        fd|	D              sJ t        fd|
D              rJ  t        |      dkD  sJ t        |      dkD  sJ y # 1 sw Y   nxY wc c}w c c}w c c}w )	Nzobject-pattern-properties.jsonrx   c              3   B   K   | ]  }t        |d    t                ywr   r   r|   s     r   rF   z6test_fake_object_pattern_properties.<locals>.<genexpr>D  r   r   S_I_c              3   D   K   | ]  }t        |   t                y wr   r   rD   keyr   s     r   rF   z6test_fake_object_pattern_properties.<locals>.<genexpr>L  s     Cs:afc*C    c              3   D   K   | ]  }t        |   t                y wr   r   r   s     r   rF   z6test_fake_object_pattern_properties.<locals>.<genexpr>M  s     @s:afc*@r   r   )r   r   r	   r   r   r   r&   r
   rH   r'   r(   
startswithunionr    )r   r   r   r   r   r   all_str_namesall_int_nameskstring_types	int_typesr   s              @r   #test_fake_object_pattern_propertiesr   =  sw   	h99	: !d4!FAajjlD)))',T{3!3I3=9==HyH=EMEM A#$668Baq||D/ABB !?1ALL,>Q?	?%++C,=>%++C	N;ClCCCC@i@@@@A }!!!}!!!%! !
 4
 C?s)   F&FF$F$2F)	F)Fpatternstringinforeturnc                 T    t        t        j                  | |            s	J ||f       y r   )r3   rematch)r   r   r   s      r   assert_regexr   S  s$    &)*:VTN:*    c                 N   t        | dz        5 }t        j                  |      }d d d        t              }t	        |j                         t              sJ t        d      D cg c]  }|j                          }}|D ]  }t        d|d   d       t        d|d   d       t        d|d   d       t        d|d	   d	       t        d
|d   d       t        d|d   d       t        d|d   d       t        d|d   d       t        d|d   d        y # 1 sw Y   xY wc c}w )Nzstring-format.jsonr   z.*@.*emailz	idn-emailz<\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.*\d*[-\+]\d{2}\:\d{2}z	date-timez\d{4}-\d{2}-\d{2}datezn^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$durationz*\d{2}\:\d{2}\:\d{2}\.*\d*[-\+]\d{2}\:\d{2}timez![a-zA-Z0-9+-\.]{1,33}\.[a-z]{2,4}hostnamezidn-hostnamez [a-f0-9]{0,4}(:[a-f0-9]{0,4}){7}ipv6)	r   r   r	   r   r   r   r&   r
   r   r   s          r   test_fake_string_formatr   W  s)   	h--	. !$4!FAajjlD)))',Ry1!1I1 MXqz73Xq~{;KkN	

 	)1V9f=}jM	

 	BAfIvV91Z=*U91^;Ln]8!F)VL#M! !
 2s   D%D"Dc           
         t        | dz        5 }t        j                  |      }d d d        t              }|j	                  d      }|D ]d  }t        |t              sJ t        |D cg c]  }t        |t               c}      sJ t        t        |            t        |      k(  r_J |        y # 1 sw Y   xY wc c}w )Nzunique-items-array.jsonr>   )r   r   r	   r   r   r   r   rH   r3   r    r'   )r   r   r   r   r   fts          r   test_unique_items_arrayr     s    	h22	3 !t4!FA

2I (!T"""3AJq$'34443q6{c!f$'a'$(	! ! 4s   B3)B?
3B<c                    t        | dz        5 }t        j                  |      }d d d        t              }|j	                  d      }|D ]3  }t        |t              sJ t        |d   t              sJ |d   dk(  r3J  y # 1 sw Y   ^xY w)Nz
const.jsonr>   countryzUnited States of America)r   r   r	   r   r   r   r&   r   r   r   r   r   r   r   s         r   
test_constr    s    	h%	& !$4!FA

2I :!T"""!I,,,,|9999:	! !s   BBc                    t        | dz        5 }t        j                  |      }d d d        t              }|j	                  d      }|D ]  }t        |t              sJ t        |d   t              sJ t        |d   d   t              sJ t        |d   t              sJ t        |d   d   t              sJ t        d |d   d   D              rJ  y # 1 sw Y   xY w)Nzexternal-ref.jsonr>   ReferenceToLocalSchemazno-writeReferenceToExternalSchemasrcc              3   <   K   | ]  }t        |t                y wr   r   )rD   r   s     r   rF   z$test_external_ref.<locals>.<genexpr>  s     U!:a%U   )
r   r   r	   r   r   r   r&   r3   r   rH   r  s         r   test_external_refr	    s    	h,,	- !4!FA

2I V!T"""!45t<<<!45jA4HHH!78$???!78?FFFUq1L/Me/TUUUUV	! !s   CC c                     t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                          c} y # 1 sw Y   <xY wc c}w )Nzcustom.jsonr>   )r   r   r	   r   r
   generate_and_validater   s        r   test_gen_and_validater    s[    	h&	' !44!FA(-b	21Q2! ! 3r   c                    t        | dz        5 }t        j                  |      }d d d        t        d      D cg c]  }t	              j                          }}|D ]  }t        |        t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       t        d |D              sJ |       y # 1 sw Y   xY wc c}w )Nztype-list.jsonr:   c              3   <   K   | ]  }t        |t                y wr   )r   r&   rD   r   s     r   rF   z%test_list_of_types.<locals>.<genexpr>  s     6qz!T"6r  c              3   Z   K   | ]#  }t        |d          t        d      t        fv  % yw)randTypeValueNullableN)rZ   r3   r  s     r   rF   z%test_list_of_types.<locals>.<genexpr>  s)     Y!tA-./DJ3EEYs   )+c              3   d   K   | ](  }t        |d          t        t        t        t        fv  * yw)randTypeValueN)rZ   r3   r)   r   r   r  s     r   rF   z%test_list_of_types.<locals>.<genexpr>  s(     VqtAo&'D#uc+BBVs   .0c              3   B   K   | ]  }t        |d    t                yw)r)   Nr   r  s     r   rF   z%test_list_of_types.<locals>.<genexpr>  s     <Qz!E(C(<r   c              3   L   K   | ]  }t        |d    t        d              yw)nullN)r   rZ   r  s     r   rF   z%test_list_of_types.<locals>.<genexpr>  s     DQz!F)T$Z0Ds   "$)r   r   r	   r
   r   r   printrH   )r   r   r   r   r   r   s         r   test_list_of_typesr    s    	h))	* !d4!16s<AV%%'<I< a6I66A	A6YyYYd[ddYVIVVaXaaV<)<<GiG<D)DDOiOD! !<s   C, C8,C5c                     t        | dz        5 }t        j                  |      }d d d        t        d      D ]+  }t	        d      j                         }|d   J |d   +J  y # 1 sw Y   CxY w)Nzobject-with-optionals.jsonr           )allow_none_optionalsr,   r   r   r   r	   r
   r   r   )r   r   r   r   r   s        r   test_non_required_are_not_noner    s~    	h55	6 !$4!2Y 4S9BBD	 ,,,'333	4! !s   A''A0c                    t        | dz        5 }t        j                  |      }d d d        t        dd      }t	        d      D cg c]  }|j                          }}|D ]k  }t        |t              sJ d|v rd|v sJ d|d   v rd	|d   v sJ |d   d   D ]2  }t        |t              sJ d|v rd	|v sJ |d   D ]  }d|vrd	|v rJ  4 m y # 1 sw Y   xY wc c}w )
Nzobject_recursive.jsonr  rB   )r  max_recursive_depthr   treer.   branchesrs   r/   )	r   r   r   r   r   r   r   subtreeleaves	            r   test_fake_object_recursiver$    s   	h00	1 !T4!F!DA',Qx0!0I0 D!T"""{tqy((QvY&7ai+???y, 	DGgt,,,(W-??? , D!.7e3CCCD	D	D! ! 1s   CCCc                 j   t        | dz        5 }t        j                  |      }d d d        t        d      }t	        d      D cg c]  }|j                          }}|D ]>  }t        |t              sJ |D ]%  }t        |t              rt        |t              r%J  @ y # 1 sw Y   xY wc c}w )Nzoneof_recursive.jsonrB   r  r   )	r   r   r	   r   r
   r   r   r   r)   )r   r   r   r   r   r   r   items           r   test_fake_oneof_recursiver(    s    	h//	0 !D4!F*A',Ry1!1I1 C!T""" 	CDdC(JtT,BBB	CC! ! 2s   B$B0$B-c                 d   t        | dz        5 }t        j                  |      }d d d        t        d      }t	        d      D cg c]  }|j                          }}|D ];  }t        |t              st        |t              sJ t        |t              s6d|v r;J  y # 1 sw Y   }xY wc c}w )Nzcomplex_recursive.jsonrB   r&  r   rs   )	r   r   r	   r   r
   r   r   r   r&   r   s          r   test_fake_complex_recursiver*    s    	h11	2 !d4!F*A',Ry1!1I1  !S!Z4%888aa<< ! ! 2s   B!B-!B*c                     t        | dz        5 }t        j                  |      }d d d        t        d      D cg c]  }t	              j                          c} y # 1 sw Y   :xY wc c}w )Nz
empty.jsonr   r  )r   r   r   r   s       r   test_fake_emptyr,    sT    	h%	& !$4!%*2Y/S[/! !/s   A A*A'c                 L   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                  d       }}|D ]/  }t        |t              sJ |j                  d      }|)|dk(  r/J  y # 1 sw Y   qxY wc c}w )Nobject-with-examples.jsonr   T)use_defaultsbreedMixed Breed	r   r   r	   r   r
   r   r   r&   getr   r   r   r   r   r   r   r0  s           r   test_use_defaultsr5    s    	h44	5 !4!FA8=b	B1.BIB 7!T"""g} 6667! ! Cs   BB!Bc                 n   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                  d       }}|D ]@  }t        |t              sJ |d   dv sJ |d   dv sJ |j                  d	      }|;|d
v r@J  y # 1 sw Y   xY wc c}w )Nr.  r   T)use_examplesspeciesDogCatRabbitr,   ChopLunaThanosr0  )zLabrador RetrieverSiamesezGolden Retrieverr2  r4  s           r   test_use_examplesrB  	  s    	h44	5 !4!FA8=b	B1.BIB _!T"""|7777y6666g})^ ^^^_! ! Cs   B&B2&B/c                 r   t        | dz        5 }t        j                  |      }d d d        t              }t	        d      D cg c]  }|j                  dd       }}|D ]A  }t        |t              sJ |d   dv sJ |d   dv sJ |j                  d	      }|;|d
k(  rAJ  y # 1 sw Y   xY wc c}w )Nr.  r   T)r/  r7  r8  r9  r,   r=  r0  r1  r2  r4  s           r   test_use_defaults_and_examplesrD    s    	h44	5 !4!FAKPQS9UaDAUIU 7!T"""|7777y6666g} 6667! ! Vs   B(B4(B1)3r   r   typingr   rT   
jsf.parserr   r   r   r!   r*   r0   r4   r6   r8   r<   r?   rI   rN   rW   r[   rf   rm   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r$  r(  r*  r,  r5  rB  rD  r{   r   r   <module>rG     s    	  
 &:2889K85163$XV	
.	,	,
,
:P$:;J	I",;# ;s ;(3- ;D ;Mh(:V3
P4D"	C	 0	7_7r   