
    Owg                         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y)    N)	DataFrameSeriesarray
date_rangec                  &    t        g dg dd      S )z$
    base dataframe for testing
             )         )ab)r        a/var/www/horilla/myenv/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)   4   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_conditionr3   =   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+   r0   s      r   "test_case_when_multiple_conditionsr5   F   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%   r.   r/   r0   s      r   3test_case_when_multiple_conditions_replacement_listr8   Q   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
    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     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
    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     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)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
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   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LH66(#3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      si        7 7'<5------5r   