o
    Eh                     @   s\   d Z ddlZddlZddlZddlZddlmZ	 ej
ejejjejjdZG dd dZdS )zX
Tests for Series cumulative operations.

See also
--------
tests.frame.test_cumulative
    N)cumsumcumprodcummincummaxc                &   @   s  e Zd Zejdejejgdd Z	ejdddgdd Z
ejd	ed
ededdgejdddg dgddg dgddg dgddg dggdd Zejddejdddfdejdddfgdd Zejdg dg dgejjddd  d!d  gd"d#gd$ejde d%d& Zejd'd(ejd
d)ejd)ged*gd+edd
ejd
ggdeddejdggdeddejdgggd,d- Zd.d/ Zejd0g d(dg fg d(dg fg d1d(dg d2fg d1d(dg d2fd3ejd4gd(dd3ejd5gfd3ejd4gd(dd3ejejgfejd3d4gd(dejd3d5gfejd3d4gd(dejejejgfejejejgd(dejejejgfejejejgd(dejejejgfg ddg fg ddg fg d6ddg d7fg d6ddg d7fd4ejd3gddd4ejd3gfd4ejd3gddd4ejejgfejd4d3gddejd4d3gfejd4d3gddejejejgfejejejgddejejejgfejejejgddejejejgfg ddg fg ddg fg d1ddg d8fg d1ddg d8fd3ejd4gddd3ejd4gfd3ejd4gddd3ejejgfejd3d4gddejd3d4gfejd3d4gddejejejgfejejejgddejejejgfejejejgddejejejgfgd9d: Zd;d< Zd=S )>TestSeriesCumulativeOpsfuncc                 C   sr   t j||j|t|dd | }tj|d d d< ||dd d }|t| }t j|j|dd d S )NT)Zcheck_dtype      F)tmassert_numpy_array_equalvaluesnparraycopynandropna)selfdatetime_seriesr   tsresultexpected r   Clib/python3.10/site-packages/pandas/tests/series/test_cumulative.pytest_datetime_series   s   z,TestSeriesCumulativeOps.test_datetime_seriesmethodr   r   c                 C   s   t | }t|| j}|t|}t|| | }tj|d d d< t|| dd d }||	 }|j
d |_
t|| d S )Nr   r	   )methodsgetattrr   r   r   r
   r   r   r   r   indexZ
_with_freqassert_series_equal)r   r   r   ufuncr   r   r   r   r   r   test_cummin_cummax+   s   z*TestSeriesCumulativeOps.test_cummin_cummaxr   r   z
1999-12-31z
US/Pacificzmethod, skipna, exp_tdiT)NaT2 daysr!   r"   r!   3 days)r!   r"   r!   1 daysr!   r$   F)r!   r!   r!   r!   r!   r!   c           	      C   sT   t g d}t || }t |}t || }t|||d}t|| d S )N)r!   r"   r!   r$   r!   r#   skipna)pdZto_timedeltaSeriesr   r
   r   )	r   r   r   r&   Zexp_tdiZtdiserr   r   r   r   r   test_cummin_cummax_datetimelike;   s   
z7TestSeriesCumulativeOps.test_cummin_cummax_datetimelikez	func, exp2012-1-1DZfreq2012-1-2c                 C   s   t t jdddt jt jdddg}t||dd}t t jdddt jt jg}t|| t||dd}t t jdddt j|g}t|| d S )Nr+   r,   r-   r.   Fr%   T)r'   r(   Periodr!   r   r
   r   )r   r   Zexpr)   r   r   r   r   r   test_cummin_cummax_period`   s   	z1TestSeriesCumulativeOps.test_cummin_cummax_periodarg)FFFTTFF)FFFFFFFc                 C   s   | S Nr   xr   r   r   <lambda>|   s    z TestSeriesCumulativeOps.<lambda>c                 C   s   |  S r2   r   r3   r   r   r   r5   |   s    identityZinverse)Zidsc           	      C   sF   |t |}t| }||j}t |}t|| }t|| d S r2   )r'   r(   r   r   r   r
   r   )	r   r1   r   r   r)   r   Zexp_valsr   r   r   r   r   test_cummethods_boolt   s   

z,TestSeriesCumulativeOps.test_cummethods_boolzmethod, expectedr   r	   dtyper   c                 C   s0   t ddtjdg}t|| }t|| d S )NFT)r'   r(   r   r   r   r
   r   )r   r   r   r)   r   r   r   r   $test_cummethods_bool_in_object_dtype   s   
z<TestSeriesCumulativeOps.test_cummethods_bool_in_object_dtypec                 C   sZ   t t jddt jddg}tjtdd |  W d    d S 1 s&w   Y  d S )Nr	   )Zdays   z#cumprod not supported for Timedeltamatch)r'   r(   	Timedeltapytestraises	TypeErrorr   )r   r)   r   r   r   test_cumprod_timedelta   s   
"z.TestSeriesCumulativeOps.test_cumprod_timedeltazdata, op, skipna, expected_data)r4   zy)r4   xzZxzyr4   rD   Zxy)rD   rC   r4   )rD   rD   r4   )r4   rC   rC   c           
      C   s@   t j||d}t||}t j||d}||d}	t|	| d S )Nr8   r%   )r'   r(   r   r
   r   )
r   Zstring_dtype_no_objectdataopr&   Zexpected_datar)   r   r   r   r   r   r   test_cum_methods_ea_strings   s
   (

z3TestSeriesCumulativeOps.test_cum_methods_ea_stringsc                 C   sf   t jtd|d}td|j d}tjt|d |j	|d W d    d S 1 s,w   Y  d S )NZxyzr8   z-operation 'cumprod' not supported for dtype ''r<   r%   )
r'   r(   listreescaper9   r?   r@   rA   r   )r   Zpyarrow_string_dtyper&   r)   msgr   r   r   test_cumprod_pyarrow_strings   s
   "z4TestSeriesCumulativeOps.test_cumprod_pyarrow_stringsN)__name__
__module____qualname__r?   ZmarkZparametrizer   r   r   r   r    r'   r>   Z	TimestampZtz_localizer*   r/   r0   r   keysr7   r(   r   objectr:   rB   ZNArH   rN   r   r   r   r   r      s    



	

""

""

""
#r   )__doc__rK   Znumpyr   r?   Zpandasr'   Zpandas._testingZ_testingr
   r   r   Zminimum
accumulateZmaximumr   r   r   r   r   r   <module>   s    