
    Eg                         d dl Zd dlZd dl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S )    N)	DataFrameSeriesarray
date_rangec                  .    t          g dg dd          S )z$
    base dataframe for testing
             )         )ab)r        _/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/series/methods/test_case_when.pydfr      s"    
 99999955666r   c                     d}|dz  }t          j        t          |          5  | d                             d           ddd           dS # 1 swxY w Y   dS )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       s     5C?C	y	,	,	, ' '
32&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   AAAc                     d}|dz  }t          j        t          |          5  | d                             g            ddd           dS # 1 swxY w Y   dS )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#      s     5C..C	z	-	-	-  
3"                 s   AAAc                    d}|dz  }t          j        t          |          5  | d                             | d                             d          d| j                            d          fg           ddd           dS # 1 swxY w Y   dS )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'   )   s     ,C??C	z	-	-	- < <
3BsGJJqMM1bdggajj9:;;;< < < < < < < < < < < < < < < < < <s   ABBBc                     d}t          j        t          |          5  | d                             | d                             d          ddgfg           ddd           dS # 1 swxY w Y   dS )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)   4   s     9C	z	-	-	- 5 5
3BsGJJqMMAq6234445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   :A%%A),A)c                 8   t          t          j        t          j        t          j        g                              | j                            d          dfg          }t          dt          j        t          j        g          }t          j        ||           dS )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_conditionr3   =   sp     RVRVRV,--77"$''!**a8IJJFq"&"&)**H68,,,,,r   c                 H   t          t          j        t          j        t          j        g                              | j                            d          dft          g d          dfg          }t          ddt          j        g          }t          j        ||           dS )zB
    Test output when booleans are derived from a computation
    r	   )FTFr
   Nr+   r0   s      r   "test_case_when_multiple_conditionsr5   F   s     RVRVRV,--77
$''!**a6"6"6"677;< F q!RVn%%H68,,,,,r   c                 l   t          t          j        t          j        t          j        g                              g ddf| d                             d          | d                             d          z  g dfg          }t          ddt          j        g          }t          j        ||           dS )	z0
    Test output when replacement is a list
    TFFr	   r   r   r   r   r
   N)r   r,   r-   r   r&   r%   r.   r/   r0   s      r   3test_case_when_multiple_conditions_replacement_listr8   Q   s     RVRVRV,--77


	"RWZZ]]RWZZ]]%BIII$NO F q!RVn%%H68,,,,,r   c                    t          t          j        t          j        t          j        g                              g ddf| d                             d          | d                             d          z  t          g dd          fg          }t          dd	t          j        gd
          }t          j        ||           dS )z=
    Test output when replacement has an extension dtype
    r7   r	   r   r   r   r   Int64)dtyper
   Float64N)	r   r,   r-   r   r&   r%   pd_arrayr.   r/   r0   s      r   >test_case_when_multiple_conditions_replacement_extension_dtyper>   \   s     RVRVRV,--77!!!1%WZZ]]RWZZ]]*HYYYg,N,N,NO	
 F q!RVnI666H68,,,,,r   c                    t          t          j        t          j        t          j        g                              t          j        g d          df| d                             d          | d                             d          z  t          g d          fg          }t          ddt          j        g          }t          j        ||           dS )	z2
    Test output when replacement is a Series
    r7   r	   r   r   r   r   r
   N)	r   r,   r-   r   r   r&   r%   r.   r/   r0   s      r   5test_case_when_multiple_conditions_replacement_seriesr@   j   s     RVRVRV,--77X***++Q/WZZ]]RWZZ]]*F999,=,=>	
 F q!RVn%%H68,,,,,r   c                  >   t           j                            d          } t          dd          }t	          |                     d          |g d	          }t          d
|j        d                              |j	        
                    d          |j        fg          }|j	                            |j	        
                    d          |j                                      |j	        
                    d          d
          }t          j        ||           dS )z0
    Test output if index is not RangeIndex
    {   )seedz1/1/2000   )periods)rD   r   )size)ABCD)indexcolumnsr   rG   )rK   namer   N)r,   randomdefault_rngr   r   standard_normalr   rK   r   rG   r&   rH   maskwherer.   r/   )rngdatesr   r1   r2   s        r   test_case_when_non_range_indexrU   x   s     )

S

)
)Cz1---E	((?S?S?S
 
 
B ARXC000::RTWWQZZ<N;OPPFtyyRT**00Q??H68,,,,,r   c                     t          j        ddd          } t          |           }|                    d d fd d fg          }t          j        | | d	k     | d	k    gd
 d g          }t          j        |t          |                     dS )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   rY   s    r   rZ   z)test_case_when_callable.<locals>.<lambda>   s    B3 r   c                     | dk    S rX   r   rY   s    r   rZ   z)test_case_when_callable.<locals>.<lambda>   s
    a r   c                     | S r\   r   rY   s    r   rZ   z)test_case_when_callable.<locals>.<lambda>   s    B r   r   r   c                     |  S r\   r   xs    r   rZ   z)test_case_when_callable.<locals>.<lambda>   s    A2 r   c                     | S r\   r   r`   s    r   rZ   z)test_case_when_callable.<locals>.<lambda>   s     r   N)r,   linspacer   r   	piecewiser.   r/   )ra   serr1   r2   s       r   test_case_when_callablerf      s    
 	D#q!!A
))C]]//
   F |AAqAv{{0KLLH66(#3#344444r   )numpyr,   r   pandasr   r   r   r=   r   pandas._testing_testingr.   fixturer   r    r#   r'   r)   r3   r5   r8   r>   r@   rU   rf   r   r   r   <module>rl      s6                         7 7 7' ' '  < < <5 5 5- - -- - -- - -- - -- - -- - -5 5 5 5 5r   