
    I j                         S SK rS SKrS SKJrJrJrJrJ	r	  S SK
Jr  \R                  S 5       rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rg)    N)	DataFrameSeriesarraycol
date_rangec                  &    [        / SQ/ SQS.5      $ )z
base dataframe for testing
         )         ab)r        {/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/tests/series/methods/test_case_when.pydfr      s    
 99566r   c                     SnUS-  n[         R                  " [        US9   U S   R                  SS9  SSS5        g! , (       d  f       g= f)z-
Raise ValueError if caselist is not a list.
z(The caselist argument should be a list; zinstead got.+matchr   r   caselistN)pytestraises	TypeError	case_whenr   msgs     r   %test_case_when_caselist_is_not_a_listr"      sB     5C?C	y	,
32& 
-	,	,s	   =
Ac                     SnUS-  n[         R                  " [        US9   U S   R                  / 5        SSS5        g! , (       d  f       g= f)z.
Raise ValueError if no caselist is provided.
z(provide at least one boolean condition, z!with a corresponding replacement.r   r   N)r   r   
ValueErrorr   r    s     r   test_case_when_no_caselistr%       s@     5C..C	z	-
3" 
.	-	-s	   ?
Ac                     SnUS-  n[         R                  " [        US9   U S   R                  U S   R	                  S5      SU R
                  R                  S5      4/5        SSS5        g! , (       d  f       g= f)z,
Raise ValueError if no of caselist is odd.
zArgument 0 must have length 2; z2a condition and replacement; instead got length 3.r   r   r
   N)r   r   r$   r   eqr   gtr    s     r   test_case_when_odd_caselistr)   *   sb     ,C??C	z	-
3BsGJJqM1bddggaj9:; 
.	-	-s   AA..
A<c                     Sn[         R                  " [        US9   U S   R                  U S   R	                  S5      SS/4/5        SSS5        g! , (       d  f       g= f)z%
Raise Error from within Series.mask
z,Failed to apply condition0 and replacement0.r   r   r
   r   N)r   r   r$   r   r'   r    s     r   $test_case_when_raise_error_from_maskr+   5   sM     9C	z	-
3BsGJJqMAq6234 
.	-	-s   ,A
Ac                 J   [        [        R                  [        R                  [        R                  /5      R                  U R                  R                  S5      S4/5      n[        S[        R                  [        R                  /5      n[        R                  " X5        g)z$
Test output on a single condition.
r
   Nr   npnanr   r   r'   tmassert_series_equalr   resultexpecteds      r   test_case_when_single_conditionr5   >   sf     RVVRVVRVV,-77"$$''!*a8IJFq"&&"&&)*H6,r   c                 J   [        [        R                  [        R                  [        R                  /5      R                  U R                  R                  S5      S4[        / SQ5      S4/5      n[        SS[        R                  /5      n[        R                  " X5        g)z:
Test output when booleans are derived from a computation
r
   )FTFr   Nr-   r2   s      r   "test_case_when_multiple_conditionsr7   G   ss     RVVRVVRVV,-77
$$''!*a6"67;<F q!RVVn%H6,r   c                 X   [        [        R                  [        R                  [        R                  /5      R                  / SQS4U S   R	                  S5      U S   R                  S5      -  / SQ4/5      n[        SS[        R                  /5      n[        R                  " X5        g)	z(
Test output when replacement is a list
TFFr
   r   r   r   r	   r   N)r   r.   r/   r   r(   r'   r0   r1   r2   s      r   3test_case_when_multiple_conditions_replacement_listr:   R   s     RVVRVVRVV,-77
	"RWZZ]RWZZ]%BI$NOF q!RVVn%H6,r   c           	      f   [        [        R                  [        R                  [        R                  /5      R                  / SQS4U S   R	                  S5      U S   R                  S5      -  [        / SQSS94/5      n[        SS	[        R                  /S
S9n[        R                  " X5        g)z5
Test output when replacement has an extension dtype
r9   r
   r   r   r   r	   Int64)dtyper   Float64N)	r   r.   r/   r   r(   r'   pd_arrayr0   r1   r2   s      r   >test_case_when_multiple_conditions_replacement_extension_dtyper@   ]   s     RVVRVVRVV,-77!1%WZZ]RWZZ]*HYg,NO	
F q!RVVnI6H6,r   c                    [        [        R                  [        R                  [        R                  /5      R                  [        R                  " / SQ5      S4U S   R                  S5      U S   R                  S5      -  [        / SQ5      4/5      n[        SS[        R                  /5      n[        R                  " X5        g)	z*
Test output when replacement is a Series
r9   r
   r   r   r   r	   r   N)	r   r.   r/   r   r   r(   r'   r0   r1   r2   s      r   5test_case_when_multiple_conditions_replacement_seriesrB   k   s     RVVRVVRVV,-77XX*+Q/WZZ]RWZZ]*F9,=>	
F q!RVVn%H6,r   c                     [         R                  R                  SS9n [        SSS9n[	        U R                  SS9U/ SQS	9n[        S
UR                  SS9R                  UR                  R                  S5      UR                  4/5      nUR                  R                  UR                  R                  S5      UR                  5      R                  UR                  R                  S5      S
5      n[        R                  " X45        g)z(
Test output if index is not RangeIndex
{   )seedz1/1/2000   )periods)rF   r   )size)ABCD)indexcolumnsr   rI   )rM   namer   N)r.   randomdefault_rngr   r   standard_normalr   rM   r   rI   r(   rJ   maskwherer0   r1   )rngdatesr   r3   r4   s        r   test_case_when_non_range_indexrW   y   s     ))

S

)Cz1-E	(?S
B ARXXC0::RTTWWQZ<N;OPFttyyRTT*00Q?H6,r   c                     [         R                  " SSS5      n [        U 5      nUR                  S S 4S S 4/S9n[         R                  " X S	:  U S	:  /S
 S /5      n[
        R                  " U[        U5      5        g)z
Test output on a callable
g      g      @r   c                     U S:  $ Nr   r   r   s    r   <lambda>)test_case_when_callable.<locals>.<lambda>   s    Qr   c                     U * $ Nr   r[   s    r   r\   r]      s    B3r   c                     U S:  $ rZ   r   r[   s    r   r\   r]      s    ar   c                     U $ r_   r   r[   s    r   r\   r]      s    Br   r   r   c                     U * $ r_   r   xs    r   r\   r]      s    A2r   c                     U $ r_   r   rc   s    r   r\   r]      s    r   N)r.   linspacer   r   	piecewiser0   r1   )rd   serr3   r4   s       r   test_case_when_callableri      s    
 	D#q!A
)C]]//
  F ||AAqAv{0KLH66(#34r   c                     U R                  [        S5      R                  [        S5      S:  S4[        S5      S:*  S4/5      S9nU R                  [        / SQU R                  S9S9n[
        R                  " X5        g )Nr   r
   
   r   out)r   rk   rk   rM   assignr   r   r   rM   r0   assert_frame_equalr2   s      r   #test_case_when_expression_conditionrr      sk    YY3s8--C1b/ACHPQMSTCU.VWYXFyyVKrxx@yAH&+r   c           	         U R                  [        S5      R                  U S   S:  [        S5      S-   4U S   S:*  [        S5      S-   4/5      S9nU R                  [        / SQU R                  S9S9n[
        R                  " X5        g )Nr   r
   d   rl   )r   f   g   rn   ro   r2   s      r   %test_case_when_expression_replacementrw      s    YYHgk3s8c>*RW\3s8a<,HI
  F
 yyVMByCH&+r   c                     [        SS/SS/S.5      n U R                  [        S5      R                  [        S5      R	                  S5      S4/5      S	9nU R                  [        SS/U R                  S
9S	9n[        R                  " X5        g )NA      JasonAnna)agerO   r}   rO   r
   elderlyrn   )	r   rp   r   r   r'   r   rM   r0   rq   r2   s      r   #test_case_when_expression_in_assignr      s{    	B8gv->?	@BYYs5z33c&knnW6Mq5Q4RSYTFyyBrxx!@yAH&+r   c                  >   [        / SQ/ SQS.5      n S [        S5      S-   4[        S5      R                  S5      S	4/nU R                  [        S5      R	                  US
9S9nU R                  [        / SQU R                  S9S9n[        R                  " X#5        g )N)r{   AmyBob)*   rk   r   )rO   r}   c                     U S:  $ )Nrk   r   )ss    r   r\   @test_case_when_expression_mixed_args_in_assign.<locals>.<lambda>   s    1r6r   r}   rt   rO   r{   r
   r   r~   )r
   rk   i   rn   )	r   r   r'   rp   r   r   rM   r0   rq   r   r   r3   r4   s       r   .test_case_when_expression_mixed_args_in_assignr      s    	3KH	IB	3u:+,	V	 !$H YYs5z33X3FYGFyyBHH!EyFH&+r   c                     [        / SQ/ SQS.5      n [        S5      [        S5      -   S:  S4/nU R                  [        S5      R                  US9S	9nU R                  [	        / S
QU R
                  S9S	9n[        R                  " X#5        g )N)r
   r   )r   r
   r   r   r   r   c   r   )flag)r   r
   r   rn   )r   r   rp   r   r   rM   r0   rq   r   s       r   2test_case_when_expression_math_condition_in_assignr      s{    	*5	6BSCH$q("-.HYYCH...AYBFyyf[AyBH&+r   c                  \   [        S[        R                  SS/05      n [        S5      R	                  5       S4[        S5      S:  S4/nU R                  [        S5      R                  US9S9nU R                  [        / S	QU R                  [        S
9S9n[        R                  " X#5        g )Nr}         @g      4@missingrk   adultr   )group)r   r   r   )rM   r=   )r   r.   r/   r   isnarp   r   r   rM   objectr0   rq   r   s       r   2test_case_when_expression_missing_values_in_assignr      s    	EBFFC./	0B	U	I&	Ub'"H YYSZ1181DYEFyy.bhhfM  H &+r   ) numpyr.   r   pandasr   r   r   r?   r   r   pandas._testing_testingr0   fixturer   r"   r%   r)   r+   r5   r7   r:   r@   rB   rW   ri   rr   rw   r   r   r   r   r   r   r   <module>r      s        7 7'<5------5",,,	,,,r   