
    i                         d dl Zd dlZd dlmZmZmZmZm	Z	 d dl
mZ ej                  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y)    N)	DataFrameSeriesarraycol
date_rangec                  &    t        g dg dd      S )z$
    base dataframe for testing
             )         ab)r        g/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/series/methods/test_case_when.pydfr      s    
 99566r   c                     d}|dz  }t        j                  t        |      5  | d   j                  d       ddd       y# 1 sw Y   yxY w)z5
    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"      sK     5C?C	y	, '
32&' ' 's   AAc                     d}|dz  }t        j                  t        |      5  | d   j                  g        ddd       y# 1 sw Y   yxY w)z6
    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%       sI     5C..C	z	- 
3"  s   AA
c                     d}|dz  }t        j                  t        |      5  | d   j                  | d   j	                  d      d| j
                  j                  d      fg       ddd       y# 1 sw Y   yxY w)z4
    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)   *   sk     ,C??C	z	- <
3BsGJJqM1bddggaj9:;< < <s   AA00A9c                     d}t        j                  t        |      5  | d   j                  | d   j	                  d      ddgfg       ddd       y# 1 sw Y   yxY w)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   sV     9C	z	- 5
3BsGJJqMAq62345 5 5s   ,AAc                 J   t        t        j                  t        j                  t        j                  g      j                  | j                  j                  d      dfg      }t        dt        j                  t        j                  g      }t        j                  ||       y)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   >   sh     RVVRVVRVV,-77"$$''!*a8IJFq"&&"&&)*H68,r   c                 J   t        t        j                  t        j                  t        j                  g      j                  | j                  j                  d      dft        g d      dfg      }t        ddt        j                  g      }t        j                  ||       y)zB
    Test output when booleans are derived from a computation
    r
   )FTFr   Nr-   r2   s      r   "test_case_when_multiple_conditionsr7   G   su     RVVRVVRVV,-77
$$''!*a6"67;<F q!RVVn%H68,r   c                 X   t        t        j                  t        j                  t        j                  g      j                  g ddf| d   j	                  d      | d   j                  d      z  g dfg      }t        ddt        j                  g      }t        j                  ||       y)	z0
    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68,r   c                 r   t        t        j                  t        j                  t        j                  g      j                  g ddf| d   j	                  d      | d   j                  d      z  t        g dd      fg      }t        dd	t        j                  gd
      }t        j                  ||       y)z=
    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68,r   c                    t        t        j                  t        j                  t        j                  g      j                  t        j                  g d      df| d   j                  d      | d   j                  d      z  t        g d      fg      }t        ddt        j                  g      }t        j                  ||       y)	z2
    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68,r   c                  4   t         j                  j                  d      } t        dd      }t	        | j                  d      |g d	      }t        d
|j                  d      j                  |j                  j                  d      |j                  fg      }|j                  j                  |j                  j                  d      |j                        j                  |j                  j                  d      d
      }t        j                  ||       y)z0
    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68,r   c                     t        j                  ddd      } t        |       }|j                  d d fd d fg      }t        j                  | | d	k  | d	k\  gd
 d g      }t        j                  |t        |             y)z#
    Test output on a callable
    g      g      @r   c                     | dk  S Nr   r   r   s    r   <lambda>z)test_case_when_callable.<locals>.<lambda>   s
    Q r   c                     |  S Nr   r[   s    r   r\   z)test_case_when_callable.<locals>.<lambda>   s    B3 r   c                     | dk\  S rZ   r   r[   s    r   r\   z)test_case_when_callable.<locals>.<lambda>   s
    a r   c                     | S r^   r   r[   s    r   r\   z)test_case_when_callable.<locals>.<lambda>   s    B r   r   r   c                     |  S r^   r   xs    r   r\   z)test_case_when_callable.<locals>.<lambda>   s    A2 r   c                     | S r^   r   rb   s    r   r\   z)test_case_when_callable.<locals>.<lambda>   s     r   N)r.   linspacer   r   	piecewiser0   r1   )rc   serr3   r4   s       r   test_case_when_callablerh      s    
 	D#q!A
)C]]//
  F ||AAqAv{0KLH66(#34r   c                    | j                  t        d      j                  t        d      dkD  dft        d      dk  dfg            }| j                  t        g d| j                              }t        j                  ||       y )Nr   r
   
   r   out)r   rj   rj   rM   assignr   r   r   rM   r0   assert_frame_equalr2   s      r   #test_case_when_expression_conditionrq      sm    YY3s8--C1b/ACHPQMSTCU.VWYXFyyVKrxx@yAH&(+r   c           	      *   | j                  t        d      j                  | d   dkD  t        d      dz   f| d   dk  t        d      dz   fg            }| j                  t        g d| j                              }t        j                  ||       y )Nr   r
   d   rk   )r   f   g   rm   rn   r2   s      r   %test_case_when_expression_replacementrv      s    YYHgk3s8c>*RW\3s8a<,HI
  F
 yyVMByCH&(+r   c                  0   t        ddgddgd      } | j                  t        d      j                  t        d      j	                  d      dfg      	      }| j                  t        ddg| j                  
      	      }t        j                  ||       y )NA      JasonAnna)agerO   r|   rO   r
   elderlyrm   )	r   ro   r   r   r'   r   rM   r0   rp   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                  V   t        g dg dd      } d t        d      dz   ft        d      j                  d      d	fg}| j                  t        d      j	                  |
            }| j                  t        g d| j                              }t        j                  ||       y )N)rz   AmyBob)*   rj   r   )rO   r|   c                     | dk  S )Nrj   r   )ss    r   r\   z@test_case_when_expression_mixed_args_in_assign.<locals>.<lambda>   s
    1r6 r   r|   rs   rO   rz   r
   r   r}   )r
   rj   i   rm   )	r   r   r'   ro   r   r   rM   r0   rp   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                  6   t        g dg dd      } t        d      t        d      z   dkD  dfg}| j                  t        d      j                  |      	      }| j                  t	        g d
| j
                        	      }t        j                  ||       y )N)r
   r   )r   r
   r   r   r   r   c   r   )flag)r   r
   r   rm   )r   r   ro   r   r   rM   r0   rp   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                  t   t        dt        j                  ddgi      } t        d      j	                         dft        d      dkD  dfg}| j                  t        d      j                  |            }| j                  t        g d	| j                  t        
            }t        j                  ||       y )Nr|         @g      4@missingrj   adultr   )group)r   r   r   )rM   r=   )r   r.   r/   r   isnaro   r   r   rM   objectr0   rp   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   rh   rq   rv   r   r   r   r   r   r   r   <module>r      s        7 7'<5------5",,,	,,,r   