o
    HXh                    @   s  	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlZdd Zdd	 Zd
d ZdddZG dd dZejddgdZejddgdZG dd de
jZG dd de
jZG dd de
jZG dd de
jZG dd de
jZ G d d! d!e
jZ!G d"d# d#e
jZ"G d$d% d%e
jZ#G d&d' d'e
jZ$G d(d) d)e
jZ%G d*d+ d+e
jZ&G d,d- d-e
jZ'G d.d/ d/e
jZ(G d0d1 d1e
jZ)G d2d3 d3e
jZ*G d4d5 d5e
jZ+G d6d7 d7e
jZ,G d8d9 d9e
jZ-G d:d; d;e
jZ.G d<d= d=e
jZ/G d>d? d?e
jZ0G d@dA dAZ1G dBdC dCZ2G dDdE dEe1e2Z3G dFdG dGeZ4G dHdI dIeZ5G dJdK dKeZ6G dLdM dMe1Z7G dNdO dOee7e2Z8G dPdQ dQee7e2Z9G dRdS dSee7Z:G dTdU dUee2Z;G dVdW dWe:e2Z<G dXdY dYe:e2Z=G dZd[ d[e:Z>G d\d] d]ee7e2Z?G d^d_ d_e
jZ@G d`da dae
jZAG dbdc dce1ZBG ddde deeBee2ZCG dfdg dgeBee2ZDG dhdi dieBeZEG djdk dkeBeZFG dldm dme
jZGG dndo doe
jZHG dpdq dqe
jZIG drds dse
jZJG dtdu due
jZKG dvdw dwZLG dxdy dye
jeLZMe
NedzG d{d| d|e
jeLZOd}d~ ZPeQdkrLe
R  dS dS )    N)support)import_helper)DecimalFractionc                 C   s   	 t d| S )N   )mathcopysignx r   >/opt/python-3.10.19/usr/lib/python3.10/test/test_statistics.pysign   s   r   c                 C   s\   	 t | t |urdS t| trt| ot|S |  d }| d }||ko-|dv S )NF   )nN)type
isinstancefloatr   isnanZas_tuple)abZaexpZbexpr   r   r   
_nan_equal"   s   
r   c                 C   s<   	 t t| t|}t| | }|r|| ntd}||fS Ninf)maxabsr   )actualexpectedbaseabs_errrel_errr   r   r   _calc_errorsA   s
   	r"   -q=Hz>c                 C   s   	 |dk s	|dk rt dt| st|rdS | |krdS t| s)t|r+dS t| | }t||tt| t| }||kS )Nr   z%error tolerances must be non-negativeFT)
ValueErrorr   r   isinfr   r   )r   ytolrelZactual_errorZallowed_errorr   r   r   approx_equalQ   s   !r*   c                   @   s   e Zd Z	 dS )
_DoNothingN__name__
__module____qualname__r   r   r   r   r+      s    #r+   
statistics_statistics)Zblocked)Zfreshc                   @   s.   e Zd ZdgZdd Zeeddd ZdS )TestModulesZ_normal_dist_inv_cdfc                 C   $   | j D ]}| tt|jd qd S Nr0   )
func_namesassertEqualgetattrpy_statisticsr.   selfZfnamer   r   r   test_py_functions   s   
zTestModules.test_py_functionsrequires _statisticsc                 C   r3   )Nr1   )r5   r6   r7   c_statisticsr.   r9   r   r   r   test_c_functions   s   
zTestModules.test_c_functionsN)	r-   r.   r/   r5   r;   unittest
skipUnlessr=   r>   r   r   r   r   r2      s
    
r2   c                   @   s@   e Zd Z	 d ZZ	dddZdd ZdddZed	d
 Z	dS )NumericTestCaser   Nc                 C   s\   	 |d u r| j }|d u r| j}t|tjjr!t|tjjr!| j}n| j}|||||| d S N)r(   r)   r   collectionsabcSequence_check_approx_seq_check_approx_num)r:   firstsecondr(   r)   msgcheckr   r   r   assertApproxEqual   s   z!NumericTestCase.assertApproxEqualc           
   	   C   sn   t |t |krdt |t |f }| ||}| |tt||D ]\}\}}	| ||	|||| q$d S )Nz0sequences differ in length: %d items != %d items)len_formatMessagefailureException	enumerateziprG   )
r:   rH   rI   r(   r)   rJ   standardMsgir   er   r   r   rF      s   
z!NumericTestCase._check_approx_seqc                 C   s:   t ||||r	d S | |||||}| ||}| |rB   )r*   _make_std_err_msgrN   rO   )r:   rH   rI   r(   r)   rJ   idxrR   r   r   r   rG   	  s
   
z!NumericTestCase._check_approx_numc           	      C   s>   d}|d urd| }|| }t | |\}}|| |||||f S )Nzk  %r != %r
  values differ by more than tol=%r and rel=%r
  -> absolute error = %r
  -> relative error = %rz,numeric sequences first differ at index %d.
)r"   )	rH   rI   r(   r)   rV   templateheaderr    r!   r   r   r   rU     s   z!NumericTestCase._make_std_err_msg)NNNrB   )
r-   r.   r/   r(   r)   rL   rF   rG   staticmethodrU   r   r   r   r   rA      s    
,
	rA   c                   @   s   e Zd Z	 dd ZdS )TestSignc                 C   s$   |  tdd |  tdd d S )N        r   g       )r6   r   r:   r   r   r   
testZeroes*  s   zTestSign.testZeroesN)r-   r.   r/   r^   r   r   r   r   rZ   (  s    rZ   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ApproxEqualSymmetryTestc                 C   sT   dddt dtddg}ddd	t d
tddg}t||D ]
\}}| || qd S )Ni	  gfffffB@gfffff(z2.54   6   i	  gB@gR(z2.59   )r   r   rQ   do_relative_symmetry)r:   Zargs1Zargs2r   r   r   r   r   test_relative_symmetry5  s
   
z.ApproxEqualSymmetryTest.test_relative_symmetryc                 C   st   t ||t||}}|| }t|| t|| }}|| d }| t||d|d | t||d|d d S )Nr   r   r(   r)   )minr   r   
assertTruer*   )r:   r   r   deltaZrel_err1Zrel_err2r)   r   r   r   rd   E  s   z,ApproxEqualSymmetryTest.do_relative_symmetryc                 C   s  g d}d}|D ]v}t tttfD ]m}||d }|| }t|t|| }| j||||d | j|||d d| d | j|||d |d d | j||||d d | j|||d |d | j|||d d| d | j||ddd | j||ddd qqd S )N)i   k   im r   d   rf   r   r   )intr   r   r   r   r   do_symmetry_test)r:   argsri   r   type_r   r'   rr   r   r   test_symmetryQ  s"   z%ApproxEqualSymmetryTest.test_symmetryc              
   C   s@   d}t ||||}t ||||}| |||||||f d S )Nz+approx_equal comparisons don't match for %r)r*   r6   format)r:   r   r   r(   r)   rW   Zflag1Zflag2r   r   r   ro   i  s    z(ApproxEqualSymmetryTest.do_symmetry_testN)r-   r.   r/   re   rd   rs   ro   r   r   r   r   r`   2  s
    r`   c                   @   T   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )ApproxEqualExactTestc                 C   sJ   t ||||d}| |d|  t | | ||d}| |d|   d S )Nrf   zequality failure for x=%r)r*   rh   )r:   r   r(   r)   resultr   r   r   do_exactly_equal_testv  s   z*ApproxEqualExactTest.do_exactly_equal_testc                 C      dD ]	}|  |dd qd S )N)*   iM  i~:     i  iU
 i  r   rx   r:   r   r   r   r   test_exactly_equal_ints|     z,ApproxEqualExactTest.test_exactly_equal_intsc                 C   ry   )N)gzG?g/$?ge@g      7@g     pf@g!rhQ@gB`"KB@r   r|   r:   r   r   r   r   test_exactly_equal_floats  r   z.ApproxEqualExactTest.test_exactly_equal_floatsc                 C   sN   t }|dd|d|dd|dd|dd	|ddfD ]	}| |dd qd S )
Nr   r   r   rk      	      #   $   )r   rx   r:   Ffr   r   r   test_exactly_equal_fractions  s   6z1ApproxEqualExactTest.test_exactly_equal_fractionsc                 C   s*   t }t|d D ]	}| |dd q	d S )Nz8.2 31.274 912.04 16.745 1.2047r   )r   mapsplitrx   )r:   Ddr   r   r   test_exactly_equal_decimals  s   z0ApproxEqualExactTest.test_exactly_equal_decimalsc                 C   sF   dD ]}|  |dd |  |d dd t|d}|  |dd qd S )N)   i  i\  i  i     {Gz?r   
   i  )rx   r   )r:   r   r   r   r   r   test_exactly_equal_absolute  s   
z0ApproxEqualExactTest.test_exactly_equal_absolutec                 C   s2   |  tdtdd |  td tdd d S )Nz3.5710.01r   z81.3971)rx   r   r]   r   r   r   $test_exactly_equal_absolute_decimals  s   z9ApproxEqualExactTest.test_exactly_equal_absolute_decimalsc                 C   s@   dddt ddfD ]	}| |dd q	| tddtd	 d S )
Ni   g33333SY@gzGrk      r   r   z11.68r   r   rx   r   r   r   r   r   test_exactly_equal_relative  s   z0ApproxEqualExactTest.test_exactly_equal_relativec                 C   sH   dddt ddfD ]	}| |dd q	t}| |d|d	|d
 d S )Ni9  gˡE0@g\(hr      皙?r   z7.2z0.1r   r   )r:   r   r   r   r   r   test_exactly_equal_both  s   z,ApproxEqualExactTest.test_exactly_equal_bothN)r-   r.   r/   rx   r~   r   r   r   r   r   r   r   r   r   r   r   rv   p  s    rv   c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ApproxEqualUnequalTestc                 C   s8   || fD ]}t ||d ddd}| |d|  qd S )Nr   r   rf   zinequality failure for x=%r)r*   assertFalse)r:   r   r   rw   r   r   r   do_exactly_unequal_test  s   z.ApproxEqualUnequalTest.do_exactly_unequal_testc                 C      dD ]}|  | qd S )N)i  i i  i  iXC  r   r}   r   r   r   test_exactly_unequal_ints     z0ApproxEqualUnequalTest.test_exactly_unequal_intsc                 C   r   )N)gQ#@g[@gfffffG@gףp=
W"@g=
ףp=1@r   r   r   r   r   test_exactly_unequal_floats  r   z2ApproxEqualUnequalTest.test_exactly_unequal_floatsc                 C   s<   t }|dd|dd|dd|ddfD ]}| | qd S )	Nr   rk   r   r         e   iς )r   r   r   r   r   r   test_exactly_unequal_fractions  s   (z5ApproxEqualUnequalTest.test_exactly_unequal_fractionsc                 C   s"   t td D ]}| | qd S )Nz!3.1415 298.12 3.47 18.996 0.00245)r   r   r   r   r:   r   r   r   r   test_exactly_unequal_decimals  s   z4ApproxEqualUnequalTest.test_exactly_unequal_decimalsN)r-   r.   r/   r   r   r   r   r   r   r   r   r   r     s    r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"ApproxEqualInexactTestc              	   C   sb   d}|| || fD ]$}| ||}| t||d| dd| | t|||d dd| q
d S )NTest failure for x={!r}, y={!r}r   r   rf   rt   rh   r*   r   r:   r   ri   rW   r'   rJ   r   r   r   do_approx_equal_abs_test  s   z/ApproxEqualInexactTest.do_approx_equal_abs_testc                 C   &   dD ]}|  |d |  |d qd S )N)iiIirj   r   r   r   %   i  i&  i6jr   r   r   r}   r   r   r   test_approx_equal_absolute_ints     z6ApproxEqualInexactTest.test_approx_equal_absolute_intsc                 C   s2   dD ]}|  |d |  |d |  |d qd S )N)	gtqgfffffFXg333333g333333      ?      ?g333333@gQ@gҭ@      ?r   -C6?r   r   r   r   r   !test_approx_equal_absolute_floats  s
   z8ApproxEqualInexactTest.test_approx_equal_absolute_floatsc                 C   sF   t dd}g d}dd |D D ]}| || | |t| qd S )Nr      )irj   r\   r   r   rk   ra      "   G   c                 s   s    | ]}t |d V  qdS )r   Nr   ).0r   r   r   r   	<genexpr>  s    zNApproxEqualInexactTest.test_approx_equal_absolute_fractions.<locals>.<genexpr>)r   r   r   )r:   ri   
numeratorsr   r   r   r   $test_approx_equal_absolute_fractions  s   
z;ApproxEqualInexactTest.test_approx_equal_absolute_fractionsc                 C   s:   t d}tt d D ]}| || | | | qd S )Nr   z1.0 3.5 36.08 61.79 7912.3648)r   r   r   r   )r:   ri   r   r   r   r   #test_approx_equal_absolute_decimals  s
   z:ApproxEqualInexactTest.test_approx_equal_absolute_decimalsc                 C   s   |  tddddd d S )Ngh㈵>gh㈵r   r   rf   )rh   r*   r]   r   r   r   test_cross_zero     z&ApproxEqualInexactTest.test_cross_zeroc              	   C   sj   d}|d|  |d|  fD ]$}| ||}| t||dd| d| | t||d|d d| qd S )Nr   r   r   r   rf   r   r   r   r   r   do_approx_equal_rel_test  s   z/ApproxEqualInexactTest.do_approx_equal_rel_testc                 C   sr   |  tddddd |  tddddd |  tdddd	d |  td
ddd	d | tdddd	d d S )N@   /   r   g
ףp=
?rf   gGz?i  i         ?i  i  )rh   r*   r   r]   r   r   r   test_approx_equal_relative_ints  s
   z6ApproxEqualInexactTest.test_approx_equal_relative_intsc                 C   r   )N)g{GJf皙r   r   g\(|B@gʡE>@gx@{Gz?r   )r   r   r   r   r   !test_approx_equal_relative_floats  r   z8ApproxEqualInexactTest.test_approx_equal_relative_floatsc                 C   sh   t }t dd}|dd|dd|dd|dd	fD ]}|t|fD ]}| || | | | q!qd S )
Nr   r   T   ra      1   2   \   U   )r   r   r   )r:   r   ri   r   r   r   r   r   $test_approx_equal_relative_fractions  s   
(z;ApproxEqualInexactTest.test_approx_equal_relative_fractionsc                 C   s:   t td D ]}| |td | | td qd S )Nz$0.02 1.0 5.7 13.67 94.138 91027.93210.0010.05)r   r   r   r   r   r   r   r   #test_approx_equal_relative_decimals  s   z:ApproxEqualInexactTest.test_approx_equal_relative_decimalsc                 C   st   |r| j n| j}|t|||dd |r| j n| j}|t||d|d |s(|r+| j n| j}|t||||d d S )Nr   rf   )rh   r   r*   )r:   r   r   r(   r)   Ztol_flagZrel_flagrK   r   r   r   do_check_both+  s   z$ApproxEqualInexactTest.do_check_bothc                 C   ,   |  dddddd |  dddd	dd d S )
NR@+@Mbp?W8?Tg?5^Ig%CMb`?g-C6*?r   r]   r   r   r   test_approx_equal_both13     z.ApproxEqualInexactTest.test_approx_equal_both1c                 C      |  dddddd d S )Nr   r   r   gVF?8?TFr   r]   r   r   r   test_approx_equal_both28     z.ApproxEqualInexactTest.test_approx_equal_both2c                 C   r   )Nr   r   MbP?r   FTr   r]   r   r   r   test_approx_equal_both3<  r   z.ApproxEqualInexactTest.test_approx_equal_both3c                 C   r   )
Ng=
ףp=@      @r   r   FgQ[@g(\[@r   giUMu>r   r]   r   r   r   test_approx_equal_both4@  r   z.ApproxEqualInexactTest.test_approx_equal_both4N)r-   r.   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s"    		r   c                   @   r_   )
ApproxEqualSpecialsTestc                 C   s   t tfD ]=}|d}| t|| | t||dd | t||dd | t| |  | t||  | t|d qd S )Nr   r   r   r     )r   r   rh   r*   r   )r:   rq   r   r   r   r   test_infI  s   z ApproxEqualSpecialsTest.test_infc                 C   s>   t tfD ]}|d}||ddfD ]
}| t|| qqd S )Nnanr   r   )r   r   r   r*   )r:   rq   r   otherr   r   r   test_nanS  s   z ApproxEqualSpecialsTest.test_nanc                 C   s&   t dd}| t|dddd d S )Nr[   r\   r   rf   )r   r	   rh   r*   r:   Znzeror   r   r   test_float_zeroesY  s   z)ApproxEqualSpecialsTest.test_float_zeroesc                 C   s&   t d}| t|t dddd d S )Nz-0.0r   r   rf   )r   rh   r*   r   r   r   r   test_decimal_zeroes]  s   z+ApproxEqualSpecialsTest.test_decimal_zeroesN)r-   r.   r/   r   r   r   r   r   r   r   r   r   F  s
    
r   c                   @      e Zd Zdd Zdd ZdS )TestApproxEqualErrorsc                 C      |  ttdddd d S )Nrm   r\   r   assertRaisesr%   r*   r]   r   r   r   test_bad_tole  r   z"TestApproxEqualErrors.test_bad_tolc                 C   r   )Nrm   r   r   r   r]   r   r   r   test_bad_reli  r   z"TestApproxEqualErrors.test_bad_relN)r-   r.   r/   r   r   r   r   r   r   r   b  s    r   c                   @   r   )TestNumericTestCasec                 C   s.   t j| }| j| }|D ]}| || qd S rB   )rA   rU   generate_substringsZassertIn)r:   rp   Z
actual_msgr   Z	substringr   r   r   do_testy  s
   

zTestNumericTestCase.do_testc                 C   s   |  tttj d S rB   )rh   
issubclassrA   r?   TestCaser]   r   r   r    test_numerictestcase_is_testcase  s   z4TestNumericTestCase.test_numerictestcase_is_testcasec                 C      d}|  | d S )N)      @      @r         ?Nr   r:   rp   r   r   r   test_error_msg_numeric     z*TestNumericTestCase.test_error_msg_numericc                 C   r   )N)      @g      @g      ?r   r   r  r  r   r   r   test_error_msg_sequence  r  z+TestNumericTestCase.test_error_msg_sequencec           	      C   sF   	 t ||\}}d| d| d| d| g}|d ur!|d|  |S )Nztol=%rzrel=%rzabsolute error = %rzrelative error = %rzdiffer at index %d)r"   append)	r:   rH   rI   r(   r)   rV   r    r!   Z
substringsr   r   r   r     s   z'TestNumericTestCase.generate_substringsN)r-   r.   r/   r   r   r  r	  r   r   r   r   r   r   s  s    r   c                   @   s(   e Zd ZeZddgZdd Zdd ZdS )GlobalsTest__doc____all__c                 C   s(   | j D ]}| t| j|d|  qd S )Nz%s not present)expected_metadatarh   hasattrmodule)r:   metar   r   r   	test_meta  s
   
zGlobalsTest.test_metac                 C   sB   | j }|jD ]}| |dd|  | t||d|  qd S )N_zprivate name "%s" in __all__zmissing name "%s" in __all__)r  r  r   
startswithrh   r  )r:   r  namer   r   r   test_check_all  s   
zGlobalsTest.test_check_allN)r-   r.   r/   r0   r  r  r  r  r   r   r   r   r    s
    r  c                   @   s(   e Zd Zeejjdkddd ZdS )DocTestsr   z)Docstrings are omitted with -OO and abovec                 C   s0   t jtt jd\}}| |d | |d d S )N)Zoptionflagsr   )doctesttestmodr0   ELLIPSISassertGreaterr6   )r:   ZfailedZtriedr   r   r   test_doc_tests  s   zDocTests.test_doc_testsN)	r-   r.   r/   r?   ZskipIfsysflagsoptimizer  r   r   r   r   r    s
    r  c                   @      e Zd Zdd ZdS )StatisticsErrorTestc                 C   s4   d}|  ttd |  ttjt|tjj  d S )NzNExpected StatisticsError to be a ValueError, but got a subclass of %r instead.StatisticsError)rh   r  r0   r   r"  r%   __base__)r:   errmsgr   r   r   test_has_exception  s   

z&StatisticsErrorTest.test_has_exceptionN)r-   r.   r/   r%  r   r   r   r   r!        r!  c                   @   D   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )ExactRatioTestc                 C   s$   dD ]}|  t||df qd S )N)ir   rk   c   l      Fx:^V r   )r6   r0   _exact_ratio)r:   rS   r   r   r   test_int  s   zExactRatioTest.test_intc                 C   s2   d}|D ]}t |d}| t||df qd S )N)r   r   &   r   )r   r6   r0   r+  )r:   r   r   r   r   r   r   test_fraction  s
   
zExactRatioTest.test_fractionc                 C   sb   |  tdd |  tdd dd tdD }|D ]}t|\}}|  |||  qd S )Nr   r   r         ?)r   r   c                 S      g | ]}t d dqS )rm   randomuniformr   r  r   r   r   
<listcomp>      z-ExactRatioTest.test_float.<locals>.<listcomp>rm   )r6   r0   r+  range)r:   datar   numdenr   r   r   
test_float  s   zExactRatioTest.test_floatc                 C   sJ   t }tj}| ||dd | ||dd | ||dd d S )Nz0.125r0  z12.345)i	     z-1.98)ir   )r   r0   r+  r6   )r:   r   r+  r   r   r   test_decimal  s
   zExactRatioTest.test_decimalc                 C   s   t d}G dd dt }G dd dt}|| fD ]0}t |t|fD ]'}||}t|}| ||d f | t|d | | t|d  q!qd S )NINFc                   @      e Zd ZdS )z(ExactRatioTest.test_inf.<locals>.MyFloatNr,   r   r   r   r   MyFloat      rC  c                   @   rB  )z*ExactRatioTest.test_inf.<locals>.MyDecimalNr,   r   r   r   r   	MyDecimal  rD  rE  r   )	r   r   r0   r+  r6   r   rh   r   r&   )r:   rA  rC  rE  r   rq   r   ratior   r   r   r     s   
zExactRatioTest.test_infc                 C   st   t d}G dd dt }|||fD ]%}t|}| t|d  | |d d  | t|d t| qd S )NNANc                   @   rB  )z.ExactRatioTest.test_float_nan.<locals>.MyFloatNr,   r   r   r   r   rC    rD  rC  r   r   )	r   r0   r+  rh   r   r   assertIsr6   r   )r:   rG  rC  r   rF  r   r   r   test_float_nan  s   
zExactRatioTest.test_float_nanc                 C   s   t d}t d}G dd dt }||||||fD ]%}t|}| t|d | | |d d  | t|d t| qd S )NrG  sNANc                   @   rB  )z2ExactRatioTest.test_decimal_nan.<locals>.MyDecimalNr,   r   r   r   r   rE    rD  rE  r   r   )r   r0   r+  rh   r   rH  r6   r   )r:   rG  rJ  rE  r   rF  r   r   r   test_decimal_nan  s   
zExactRatioTest.test_decimal_nanN)
r-   r.   r/   r,  r/  r>  r@  r   rI  rK  r   r   r   r   r(    s    
r(  c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )DecimalToRatioTestc                 C   s<   t d}| t||d f | t| | d f d S )NrA  )r   r6   r0   r+  )r:   r   r   r   r   test_infinity  s   z DecimalToRatioTest.test_infinityc                 C   sD   t dt dfD ]}t|\}}| t|| | |d  qd S )NrG  rJ  )r   r0   r+  rh   r   rH  )r:   r   r<  r=  r   r   r   r     s
   zDecimalToRatioTest.test_nanc                 C   sl   t dt dg}|D ])}t|\}}| |d | |d t| \}}| |d | |d q
d S )Nz	9.8765e12z
9.8765e-12r   )r   r0   r+  assertGreaterEqualr  ZassertLessEqual)r:   Znumbersr   r<  r=  r   r   r   	test_sign   s   zDecimalToRatioTest.test_signc                 C      t td}| |d d S )Nz0.1234)ii    r0   r+  r   r6   r:   tr   r   r   test_negative_exponent.     z)DecimalToRatioTest.test_negative_exponentc                 C   rQ  )Nz1.234e7)i K r   rS  rT  r   r   r   test_positive_exponent3  rW  z)DecimalToRatioTest.test_positive_exponentc                 C   s8   t td}| |d t td}| |d d S )NZ1e2)rm   r   z1.47e5)i8> r   rS  rT  r   r   r   test_regression_205368  s   z(DecimalToRatioTest.test_regression_20536N)	r-   r.   r/   rN  r   rP  rV  rX  rY  r   r   r   r   rM    s    
rM  c                   @   $   e Zd Zdd Zdd Zdd ZdS )IsFiniteTestc                 C   s0   dt dddtdfD ]
}| t| qd S )Nrk   r   r   r  5.5)r   r   rh   r0   	_isfiniter   r   r   r   test_finiteD     zIsFiniteTest.test_finitec                 C   s*   t dtdfD ]
}| t| qd S r   r   r   r   r0   r]  r   r   r   r   rN  I  s   zIsFiniteTest.test_infinityc                 C   s0   t dtdtdfD ]
}| t| qd S Nr   rG  rJ  r`  r   r   r   r   r   N  r_  zIsFiniteTest.test_nanN)r-   r.   r/   r^  rN  r   r   r   r   r   r[  A  s    r[  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )
CoerceTestc                 C   sN   t tttfD ]}| t|t| G dd d|}| t|t| qd S )Nc                   @   rB  )z%CoerceTest.test_bool.<locals>.MyClassNr,   r   r   r   r   MyClasso      rc  )rn   r   r   r   rH  r0   _coercebool)r:   Trc  r   r   r   	test_booli  s
   zCoerceTest.test_boolc                 C   s.   	 |  t||| |  t||| d S rB   )rH  r0   re  r:   ABr   r   r   assertCoerceTor     zCoerceTest.assertCoerceToc                 C   sV   	 |  || G dd d|}|  || G dd d|}|  || |  || d S )Nc                   @   rB  )z/CoerceTest.check_coerce_to.<locals>.SubclassOfANr,   r   r   r   r   SubclassOfA|  rd  rn  c                   @   rB  )z/CoerceTest.check_coerce_to.<locals>.SubclassOfBNr,   r   r   r   r   SubclassOfB  rd  ro  )rl  )r:   rj  rk  rn  ro  r   r   r   check_coerce_tow  s   zCoerceTest.check_coerce_toc                 C   s.   	 |  ttj||f |  ttj||f d S rB   )r   	TypeErrorr0   re  ri  r   r   r   assertCoerceRaises  rm  zCoerceTest.assertCoerceRaisesc                 C   s   	 |  t||| G dd d|}G dd d|}G dd d|}|||fD ]}| || q(| || | || | || d S )Nc                   @   rB  )z*CoerceTest.check_type_coercions.<locals>.UNr,   r   r   r   r   U  rd  rs  c                   @   rB  )z*CoerceTest.check_type_coercions.<locals>.VNr,   r   r   r   r   V  rd  rt  c                   @   rB  )z*CoerceTest.check_type_coercions.<locals>.WNr,   r   r   r   r   W  rd  ru  )rH  r0   re  rl  rr  )r:   rg  rs  rt  ru  typr   r   r   check_type_coercions  s   zCoerceTest.check_type_coercionsc                 C   s*   |  t tttfD ]}| t| q
d S rB   )rw  rn   r   r   r   rp  )r:   rv  r   r   r   r,    s   
zCoerceTest.test_intc                 C   s   |  t | tt d S rB   )rw  r   rp  r   r]   r   r   r   r/    s   
zCoerceTest.test_fractionc                 C      |  t d S rB   )rw  r   r]   r   r   r   r@       zCoerceTest.test_decimalc                 C   rx  rB   )rw  r   r]   r   r   r   r>    ry  zCoerceTest.test_floatc                 C   s:   t ttd ttfD ]}ttttfD ]}| 	|| qq	d S rB   )
strlistr   tupledictrn   r   r   r   rr  )r:   Zbad_typeZ	good_typer   r   r   test_non_numeric_types  s
   z!CoerceTest.test_non_numeric_typesc                 C   s:   t tfD ]}G dd d|}| |t | |t qd S )Nc                   @   rB  )z6CoerceTest.test_incompatible_types.<locals>.MySubclassNr,   r   r   r   r   
MySubclass  rd  r  )r   r   rr  r   )r:   rg  r  r   r   r   test_incompatible_types  s
   z"CoerceTest.test_incompatible_typesN)r-   r.   r/   rh  rl  rp  rr  rw  r,  r/  r@  r>  r~  r  r   r   r   r   rb  T  s    	rb  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )ConvertTestc                 C   s&   	 |  || | t|t| d S rB   )r6   rH  r   r:   r   r'   r   r   r   check_exact_equal  s   zConvertTest.check_exact_equalc                 C   sP   t tdt}| |d G dd dt}t td|}| ||d d S )Nr   c                   @   rB  )z#ConvertTest.test_int.<locals>.MyIntNr,   r   r   r   r   MyInt  rd  r  ra   )r0   _convertr   rn   r  )r:   r   r  r   r   r   r,    s
   zConvertTest.test_intc                 C   s\   t tddt}| |tdd G dd dt}t tdd|}| ||dd d S )N_   r*  c                          e Zd Z fddZ  ZS )z-ConvertTest.test_fraction.<locals>.MyFractionc                       |  t |S rB   	__class__super__truediv__r:   r   r  r   r   r       z9ConvertTest.test_fraction.<locals>.MyFraction.__truediv__r-   r.   r/   r  __classcell__r   r   r  r   
MyFraction      r  r      )r0   r  r   r  )r:   r   r  r   r   r   r/    s
   zConvertTest.test_fractionc                 C   sT   t tddt}| |d G dd dt}t tdd|}| ||d d S )	Nr\   r   g      c                       r  )z'ConvertTest.test_float.<locals>.MyFloatc                    r  rB   r  r  r  r   r   r    r  z3ConvertTest.test_float.<locals>.MyFloat.__truediv__r  r   r   r  r   rC    r  rC  r   r   r1  )r0   r  r   r   r  )r:   r   rC  r   r   r   r>    s
   zConvertTest.test_floatc                 C   sX   t tddt}| |td G dd dt}t tdd|}| ||d d S )	Nr   (   z0.025c                       r  )z+ConvertTest.test_decimal.<locals>.MyDecimalc                    r  rB   r  r  r  r   r   r    r  z7ConvertTest.test_decimal.<locals>.MyDecimal.__truediv__r  r   r   r  r   rE    r  rE  r   r   z-0.9375)r0   r  r   r   r  )r:   r   rE  r   r   r   r@    s
   zConvertTest.test_decimalc                 C   sF   t dtdfD ]}|| fD ]}t|t|}| || qqd S r   )r   r   r0   r  r   r  )r:   rA  r   r   r   r   r   r     s   zConvertTest.test_infc                 C   s@   t dtdtdfD ]}t|t|}| t|| qd S ra  )r   r   r0   r  r   rh   r   )r:   r   r   r   r   r   r     s   zConvertTest.test_nanc                 C   s<   |  t td t W d    d S 1 sw   Y  d S rB   )r   rq  r0   r  r   r]   r   r   r   test_invalid_input_type  s   "z#ConvertTest.test_invalid_input_typeN)r-   r.   r/   r  r,  r/  r>  r@  r   r   r  r   r   r   r   r    s    


r  c                   @   s&   e Zd Z	 dd Zdd Zdd ZdS )FailNegTestc                 C   s2   ddt dtdg}tt|}| || d S Nr          @r   r   )r   r   r{  r0   	_fail_negr6   )r:   valuesnewr   r   r   test_pass_through  s   zFailNegTest.test_pass_throughc                 C   s@   ddt dtdfD ]}| g}t|}| tjt| q
d S r  )r   r   r0   r  r   r"  next)r:   r   seqitr   r   r   test_negatives_raise  s
   
z FailNegTest.test_negatives_raisec              
   C   sr   dt dd }zttdg| W n tjy+ } z|jd }W Y d }~n
d }~ww | d | || d S )Nzbadness #%d'  i r\   r   z(expected exception, but it didn't happen)	r5  randintr  r0   r  r"  rp   Zfailr6   )r:   rJ   rT   r$  r   r   r   test_error_msg  s   
zFailNegTest.test_error_msgN)r-   r.   r/   r  r  r  r   r   r   r   r    s
    r  c                   @   r   )FindLteqTestc              
   C   s   g dfddgdfddgdffD ]6\}}| j ||d# | t t|| W d    n1 s1w   Y  W d    n1 s@w   Y  qd S )Nr   r   r   r   r   )subTestr   r%   r0   
_find_lteq)r:   r   r   r   r   r   test_invalid_input_values  s   

z&FindLteqTest.test_invalid_input_valuesc              	   C   sz   g dddfg dddfg dddffD ]&\}}}| j ||d | |t|| W d    n1 s5w   Y  qd S )	Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  )r  r6   r0   r  )r:   r   r   
expected_ir   r   r   test_locate_successfully  s   z%FindLteqTest.test_locate_successfullyNr-   r.   r/   r  r  r   r   r   r   r    s    
r  c                   @   r   )FindRteqTestc              	   C   sb   dgddfddgddffD ]!\}}}|  t t||| W d    n1 s)w   Y  qd S )Nr   r   r   r   )r   r%   r0   
_find_rteq)r:   r   lr   r   r   r   r  ,  s   
z&FindRteqTest.test_invalid_input_valuesc              
   C   s   g ddddfg ddddfg ddddffD ])\}}}}| j |||d	 | |t||| W d    n1 s;w   Y  qd S )
Nr  r   r   r   r  r   r  r   )r   r  r   )r  r6   r0   r  )r:   r   r  r   r  r   r   r   r  4  s   z%FindRteqTest.test_locate_successfullyNr  r   r   r   r   r  )  s    r  c                   @   \   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )UnivariateCommonMixinc                 C   s   |  t| j d S rB   r   rq  funcr]   r   r   r   test_no_argsC  s   z"UnivariateCommonMixin.test_no_argsc                 C   s*   g dt g fD ]}| tj| j| qd S )Nr   )iterr   r0   r"  r  )r:   emptyr   r   r   test_empty_dataG  s   z%UnivariateCommonMixin.test_empty_datac                 C   s4   	 t td}|t|krt| |t|ks|S Nr   r{  r:  sortedr5  shuffler:   r;  r   r   r   prepare_dataL  s   
z"UnivariateCommonMixin.prepare_datac                 C   s0   |   }|d d  }| |}| ||d d S )Nzdata has been modified)r  r  ZassertListEqual)r:   r;  Zsavedr  r   r   r   test_no_inplace_modificationsS  s   
z3UnivariateCommonMixin.test_no_inplace_modificationsc                 C   s:   g dd }|  |}t| |  |}| || d S )N)r   r   r   r   r   r   rk      rm   )r  r5  r  r6   r:   r;  r   r   r   r   r   test_order_doesnt_matter]  s
   


z.UnivariateCommonMixin.test_order_doesnt_matterc                 C   sn   G dd dt }G dd dt}dd }|  }| |}t tt|||fD ]}| ||}| || q%d S )Nc                   @   rB  )zBUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyListNr,   r   r   r   r   MyListl  rD  r  c                   @   rB  )zCUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyTupleNr,   r   r   r   r   MyTuplen  rD  r  c                 S   s   dd | D S )Nc                 s   s    | ]}|V  qd S rB   r   )r   objr   r   r   r   q  s    zXUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator.<locals>.<genexpr>r   r;  r   r   r   	generatorp     zEUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator)r{  r|  r  r  r  r6   )r:   r  r  r  r;  r   kindrw   r   r   r   test_type_of_data_collectionj  s   
z2UnivariateCommonMixin.test_type_of_data_collectionc                 C   s0   t ddd}| t|}| | || d S N   r   r   )r:  r  r{  r6   r:   r;  r   r   r   r   test_range_datax  s   z%UnivariateCommonMixin.test_range_datac                 C   s.   |  d  |  d |  d |  t  d S )Nr   g      E@)check_for_type_errorobjectr]   r   r   r   test_bad_arg_types~  s   



z(UnivariateCommonMixin.test_bad_arg_typesc                 G   s   | j t| jg|R   d S rB   r  r  r   r   r   r    s   z*UnivariateCommonMixin.check_for_type_errorc                    sh   G dd dt }|  }| |}t |ttfD ]  fdd|D }t|| |}| || qd S )Nc                       s,   e Zd Z fddZ fddZeZ  ZS )z@UnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloatc                       t | t |S rB   r   r  r  r  r  r   r   r       zLUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__truediv__c                    r  rB   r   r  __add__r  r  r   r   r    r  zHUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__add__)r-   r.   r/   r  r  __radd__r  r   r   r  r   rC    s    rC  c                       g | ]} |qS r   r   r   r   r  r   r   r8        zCUnivariateCommonMixin.test_type_of_data_element.<locals>.<listcomp>)r   r  r  r   r   r   r6   )r:   rC  rawr   r;  rw   r   r  r   test_type_of_data_element  s   
z/UnivariateCommonMixin.test_type_of_data_elementN)r-   r.   r/   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  @  s    
r  c                   @   s   e Zd Z	 dd Zdd ZdS )UnivariateTypeMixinc                 C   s   	 G dd dt }t tt|fS )Nc                       s\   e Zd Z fddZ fddZ fddZ fddZ fd	d
Z fddZeZ	  Z
S )zHUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloatc                    r  rB   r  r  r  r   r   r    r  zTUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__truediv__c                    r  rB   )r   r  __rtruediv__r  r  r   r   r    r  zUUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rtruediv__c                    r  rB   )r   r  __sub__r  r  r   r   r    r  zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__sub__c                    r  rB   )r   r  __rsub__r  r  r   r   r    r  zQUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rsub__c                    r  rB   )r   r  __pow__r  r  r   r   r    r  zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__pow__c                    r  rB   r  r  r  r   r   r    r  zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__add__)r-   r.   r/   r  r  r  r  r  r  r  r  r   r   r  r   rC    s    rC  )r   r   r   )r:   rC  r   r   r   #prepare_types_for_conservation_test  s   z7UnivariateTypeMixin.prepare_types_for_conservation_testc                    sF   |   }|  D ]  fdd|D }| |}| t|  qd S )Nc                    r  r   r   r  r  r   r   r8    r  z<UnivariateTypeMixin.test_types_conserved.<locals>.<listcomp>)r  r  r  rH  r   )r:   r;  r   rw   r   r  r   test_types_conserved  s   
z(UnivariateTypeMixin.test_types_conservedN)r-   r.   r/   r  r  r   r   r   r   r    s    	r  c                   @   r   )TestSumCommonc                 C   s   dd }|| _ d S )Nc                  W   s   t j|  \}}}t ||S rB   )r0   _sumre  )rp   rg  valuer   r   r   r   simplified_sum  s   z+TestSumCommon.setUp.<locals>.simplified_sum)r  )r:   r  r   r   r   setUp  s   
zTestSumCommon.setUpN)r-   r.   r/   r  r   r   r   r   r    s    r  c                   @   r  )TestSumc                 C      t j| _d S rB   )r0   r  r  r]   r   r   r   r       zTestSum.setUpc                 C   s4   g dt g fD ]}| | |ttddf qd S )Nr   r   )r  r6   r  rn   r   r  r   r   r   r    s   zTestSum.test_empty_datac                 C   s$   |  | g dttddf d S )N)r   rk   r   ir  rz   r   <   r   )r6   r  rn   r   r]   r   r   r   	test_ints  s   zTestSum.test_intsc                 C   s&   |  | dgd ttddf d S )Nr  r        @)r6   r  r   r   r]   r   r   r   test_floats  s   zTestSum.test_floatsc                 C   s.   |  | tddgd ttdddf d S )Nr   r     r   )r6   r  r   r]   r   r   r   test_fractions  s   zTestSum.test_fractionsc              	   C   sX   t }|d|d|d|d|d|d|d|dg}| | |t t d	d
f d S )Nr   z5.246z1.702z-0.025z3.974z2.328z4.617z2.843z20.686r   )r   r6   r  r:   r   r;  r   r   r   test_decimals  s   zTestSum.test_decimalsc                 C   s:   dd t dD }| jt| |d t|dd d S )Nc                 S   r2  )r3  r   r4  r7  r   r   r   r8    r9  z7TestSum.test_compare_with_math_fsum.<locals>.<listcomp>r   r   gؗҬ<r)   )r:  rL   r   r  r   fsumr  r   r   r   test_compare_with_math_fsum  s   (z#TestSum.test_compare_with_math_fsumc                 C   .   |  t| jg dd |  t| jg d d S )Nr   r   r   999)r   r   r   r  r  r]   r   r   r   test_strings_fail     zTestSum.test_strings_failc                 C   r  )Nr     999)r   r   r   r   r  r]   r   r   r   test_bytes_fail  r  zTestSum.test_bytes_failc                 C   s8   |  t| jddtdg |  t| jddgtd d S )Nr   r  )r   rq  r  r   r]   r   r   r   test_mixed_sum  s   zTestSum.test_mixed_sumN)r-   r.   r/   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s    r  c                   @   r   )SumTortureTestc                 C   s   |  tg dd ttddf |  tg dd ttddf tg dd \}}}| |t |  |d | jt|ddd	 d S )
N)r   }Ô%ITr   }Ô%Ir  g     @i@  )r  r   r   r  )0.++r   r  r\   g^,gV瞯<r  )r6   r0   r  r   r   rH  rL   )r:   rg  r<  countr   r   r   test_torture  s   zSumTortureTest.test_tortureN)r-   r.   r/   r  r   r   r   r   r    r&  r  c                   @   ru   )SumSpecialValuesc                 C   sN   t tfD ] }|d}td|dgd }| t|| | t| qd S )Nr   r   r   )	r   r   r0   r  rH  r   rh   r   r   )r:   rq   r   rw   r   r   r   r      s   zSumSpecialValues.test_nanc                 C   s>   	 |  t| | t|t| | |dk|dk d S Nr   )rh   r   r&   rH  r   r6   )r:   r   r   r   r   r   check_infinity'  s   zSumSpecialValues.check_infinityc                 C   sL   t dd|dgd }| || t dd|d|dgd }| || d S )Nr   r   r   r   )r0   r  r  r:   r   rw   r   r   r   do_test_inf.  s   zSumSpecialValues.do_test_infc                 C   $   t d}dD ]	}| ||  qd S Nr   r   r\   )r   r  r:   r   r   r   r   r   test_float_inf6     zSumSpecialValues.test_float_infc                 C   r  r  )r   r  r  r   r   r   test_decimal_inf;  r  z!SumSpecialValues.test_decimal_infc                 C   s8   t d}tdd|d| dgd }| t| d S Nr   r   r   r   r   )r   r0   r  rh   r   r   r  r   r   r   test_float_mismatched_infs@  s   z+SumSpecialValues.test_float_mismatched_infsc                 C   sf   t d}dd|d| dg}ttj | tt|d  W d    d S 1 s,w   Y  d S r  )	r   decimallocalcontextZExtendedContextrh   r   r   r0   r  r:   r   r;  r   r   r   3test_decimal_extendedcontext_mismatched_infs_to_nanF  s
   "zDSumSpecialValues.test_decimal_extendedcontext_mismatched_infs_to_nanc                 C   s^   t d}dd|d| dg}ttj | tjtj| W d    d S 1 s(w   Y  d S r  )r   r  r  ZBasicContextr   InvalidOperationr0   r  r  r   r   r   0test_decimal_basiccontext_mismatched_infs_to_nanM  s
   "zASumSpecialValues.test_decimal_basiccontext_mismatched_infs_to_nanc                 C   s(   t d}d|dg}| tjtj| d S )NrJ  r   r   )r   r   r  r  r0   r  )r:   rJ  r;  r   r   r   test_decimal_snan_raisesT     
z)SumSpecialValues.test_decimal_snan_raisesN)r-   r.   r/   r   r  r  r  r  r  r  r  r  r   r   r   r   r	    s    r	  c                   @   rZ  )AverageMixinc                 C   s6   dddt ddtdfD ]}| | |g| qd S )Nr   g     @E@g  X_yCrc      z0.28r   r   r6   r  r   r   r   r   test_single_value`     zAverageMixin.test_single_valuec                 C      dddt ddtdfS )N      @ra    7y!C=   C   z4.9712r   r   r]   r   r   r   'prepare_values_for_repeated_single_teste  s   z4AverageMixin.prepare_values_for_repeated_single_testc              
   C   sf   |   D ],}dD ]'}| j||d |g| }| | || W d    n1 s*w   Y  qqd S )Nr   rk   r   r  )r   r  )r*  r  r6   r  r:   r   r  r;  r   r   r   test_repeated_single_valueh  s   
z'AverageMixin.test_repeated_single_valueN)r-   r.   r/   r"  r*  r-  r   r   r   r   r  ]  s    r  c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestMeanc                 C   r  rB   )r0   meanr  r]   r   r   r   r  r  r  zTestMean.setUpc                 C   s   |  | g dd d S )N)r  r   r   r  r   r6   r  r]   r   r   r   test_torture_pepu  r   zTestMean.test_torture_pepc                 C   (   g d}t | | | |d d S )N)r   r   r   r   r   r   r   rk   rk   r  r   r   r   r   r   r   g     @@r5  r  r6   r  r  r   r   r   r  y  r  zTestMean.test_intsc                 C   r2  )N)g     @1@g     3@      4@g     5@g     5@g     @7@g      9@g     ;@g     6@r3  r  r   r   r   r    r  zTestMean.test_floatsc                 C   sJ   t }|d|d|d|d|dg}t| | | ||d d S )Nz1.634z2.517z3.912z4.072z5.813z3.5896r   r5  r  r6   r  r  r   r   r   r    s   "
zTestMean.test_decimalsc              	   C   f   t }|dd|dd|dd|dd|dd|dd|ddg}t| | | ||d	d
 d S )Nr   r   r   r   rk   r  r   r   i  i  r   r5  r  r6   r  r:   r   r;  r   r   r   r       <
zTestMean.test_fractionsc                 C   s`   g d}t tfD ]%}dD ] }|d| }||g }| |}| t| | || qqd S )Nr   r   rk   r   r   r  r   )r   r   r  rh   r   r&   r6   )r:   r  r  r   r   r;  rw   r   r   r   r     s   

zTestMean.test_infc              	   C   s:   dddt ddddt dg}| |}| t| d S )	Nr   r   r  r   r   r   rk   z-inf)r   r  rh   r   r   r:   r;  rw   r   r   r   test_mismatched_infs  s   
zTestMean.test_mismatched_infsc                 C   sF   g d}t tfD ]}|d}||g }| |}| t| qd S )Nr:  r   )r   r   r  rh   r   r   )r:   r  r  r   r;  rw   r   r   r   r     s   

zTestMean.test_nanc                    sB   d g d}|  |  }|   fdd|D }| || d S )Ng    eA	333333@      @g@g@g333333@@g       @g333333 @g"@c                       g | ]}|  qS r   r   r  cr   r   r8    r  z*TestMean.test_big_data.<locals>.<listcomp>r  r6   r:   r;  r   rw   r   rB  r   test_big_data  s
   zTestMean.test_big_datac                 C   :   dd t dD }| |}| |d }| || d S )Nc                 S   r2  )r)  rk   r4  r7  r   r   r   r8    r9  z.TestMean.test_doubled_data.<locals>.<listcomp>r   r   r:  r  rL   r  r   r   r   test_doubled_data     
zTestMean.test_doubled_datac                 C   s    t d}| t|g| d S )NZ1e4)r   r6   r0   r/  r   r   r   r   test_regression_20561  s   zTestMean.test_regression_20561c                 C   s\   |  tddgd d}d}dD ]}|  t|g| | |  t|g| | qd S )Ngg      g       )r   r   rk   r?  )r6   r0   r/  )r:   bigZtinyr   r   r   r   test_regression_25177  s   zTestMean.test_regression_25177N)r-   r.   r/   r  r1  r  r  r  r  r   r<  r   rF  rI  rK  rM  r   r   r   r   r.  q  s    		r.  c                       s   e Zd Zdd Z fddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Z  ZS )!TestHarmonicMeanc                 C   r  rB   )r0   Zharmonic_meanr  r]   r   r   r   r    r  zTestHarmonicMean.setUpc                    s   t   }|d |S r
  )r  r  remover:   r  r  r   r   r    s   

zTestHarmonicMean.prepare_datac                 C   r$  )Nr%  ra   r&  r'  r(  z4.125r)  r]   r   r   r   r*    r   z8TestHarmonicMean.prepare_values_for_repeated_single_testc                 C      g d}|  | |d d S )N)r   r   r   r   r0  rP  r   r   r   	test_zero  s   zTestHarmonicMean.test_zeroc              	   C   sZ   t j}dgg dfD ] }| j|d | || j| W d    n1 s%w   Y  q
d S )Nr\   )r   rj   r   )r  )r0   r"  r  r   r  )r:   excr  r   r   r   test_negative_error  s   z$TestHarmonicMean.test_negative_errorc              
   C   s   dgg dg dg dfD ]2}| j |d" | t | | W d    n1 s+w   Y  W d    n1 s:w   Y  qd S )Nz3.14)123)r   rV  r   4rk   )gffffff@r>  r?  z5.6r  )r  r   rq  r  r  r   r   r   test_invalid_type_error  s   z(TestHarmonicMean.test_invalid_type_errorc                 C   r2  )N)r   r   r   r   r   r   g333333@r3  r  r   r   r   r    r  zTestHarmonicMean.test_intsc                 C   s>   g d}t | | | |d | | g dd d S )N)r   r  r  r   r   r  )r  r   r   r   r   r3  r  r   r   r   test_floats_exact  s   
z"TestHarmonicMean.test_floats_exactc                 C   s(   t ddD ]}| | |g| qd S )Nr   r   r:  r6   r  r   r   r   r   test_singleton_lists  s   z%TestHarmonicMean.test_singleton_listsc              	   C   s   t }| | |d|d|d|dg|d |d|d|d|dg}t| | | ||d |d|d|d	|d
g}t| | | ||dd  d S )Nrc   r   r  r   z0.10z0.20z1.68z0.32z5.94z2.75i iC )r   r6   r  r5  r  r  r   r   r   test_decimals_exact	  s   .

z$TestHarmonicMean.test_decimals_exactc              	   C   r6  )Nr   r   r   r   rk   r  r   r   i|  i  r7  r8  r   r   r   r    r9  zTestHarmonicMean.test_fractionsc                 C   s$   dt ddg}| | |d d S )Nr  r   r   )r   r6   r  rP  r   r   r   r     s   zTestHarmonicMean.test_infc                 C   s(   dt ddg}| t| | d S )Nr  r   r   )r   rh   r   r   r  rP  r   r   r   r      s   zTestHarmonicMean.test_nanc                    sB   d g d}|  |  }|   fdd|D }| || d S )No   r=  c                    s   g | ]}|  qS r   r   r  rB  r   r   r8  *  r  z>TestHarmonicMean.test_multiply_data_points.<locals>.<listcomp>rD  rE  r   rB  r   test_multiply_data_points%  s
   z*TestHarmonicMean.test_multiply_data_pointsc                 C   rG  )Nc                 S   r2  )r   rk   r4  r7  r   r   r   r8  /  r9  z6TestHarmonicMean.test_doubled_data.<locals>.<listcomp>r   r   rH  r  r   r   r   rI  -  rJ  z"TestHarmonicMean.test_doubled_datac              	   C   s  |  | ddgddgd |  | jddgddgdd |  | tddgtddgd |  | tddtd	dtd
dgg d| tddgd td	dgd  td
dgd   |  | dgd
gd | t | g dg d W d    n1 sw   Y  | tj | g dddg W d    n1 sw   Y  | tj | dgdg W d    n1 sw   Y  | tj | ddgddg W d    d S 1 sw   Y  d S )Nr  r  rk   r   g      L@)weightsr   r   r   r   r   )rk   r   r   r  )r   r   r   r   r   r  )r6   r  r  r   r   rq  r0   r"  r]   r   r   r   test_with_weights4  s@   
&"z"TestHarmonicMean.test_with_weights)r-   r.   r/   r  r  r*  rR  rT  rY  r  rZ  r\  r]  r  r   r   r_  rI  ra  r  r   r   r  r   rN    s"    rN  c                       sT   e Zd Zdd Z fddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
  ZS )
TestMedianc                 C   r  rB   r0   medianr  r]   r   r   r   r  L  r  zTestMedian.setUpc                    s*   	 t   }t|d dkr|d |S )Nr   r   )r  r  rM   r
  r  r  r   r   r  O  s
   

zTestMedian.prepare_datac                 C   rQ  )Nr   r   r   r   rk   r  r%  r0  r  r   r   r   test_even_intsV     zTestMedian.test_even_intsc                 C   rQ  )N)r   r   r   r   rk   r  r   r   r0  r  r   r   r   test_odd_ints\  rg  zTestMedian.test_odd_intsc                 C   sV   t }|dd|dd|dd|dd|ddg}t| | | ||dd d S )Nr   r   r   r   r   rk   r7  r8  r   r   r   test_odd_fractionsb  s   ,
zTestMedian.test_odd_fractionsc                 C   s^   t }|dd|dd|dd|dd|dd|ddg}t| | | ||dd d S Nr   r   r   r   r   rk   r  r7  r8  r   r   r   test_even_fractionsj     4
zTestMedian.test_even_fractionsc                 C   sJ   t }|d|d|d|d|dg}t| | | ||d d S )N2.53.14.25.75.8r5  r  r   r   r   test_odd_decimalsr  s   "
zTestMedian.test_odd_decimalsc                 C   sP   t }|d|d|d|d|d|dg}t| | | ||d d S )Nz1.2rm  rn  ro  rp  rq  z3.65r5  r  r   r   r   test_even_decimalsz     (
zTestMedian.test_even_decimals)r-   r.   r/   r  r  rf  rh  ri  rk  rr  rs  r  r   r   r  r   rb  J  s    rb  c                   @   r   )TestMedianDataTypec                 C   r  rB   rc  r]   r   r   r   r    r  zTestMedianDataType.setUpc                 C   s2   t td}|t|krt| |t|ks|S )Nrc   r  r  r   r   r   r    s
   
zTestMedianDataType.prepare_dataN)r-   r.   r/   r  r  r   r   r   r   ru    s    ru  c                   @   r_   )
TestMedianLowc                 C   r  rB   )r0   Z
median_lowr  r]   r   r   r   r    r  zTestMedianLow.setUpc                 C   rQ  )Nre  r   r0  r  r   r   r   rf    rg  zTestMedianLow.test_even_intsc                 C   s^   t }|dd|dd|dd|dd|dd|ddg}t| | | ||dd d S rj  r7  r8  r   r   r   rk    rl  z!TestMedianLow.test_even_fractionsc                 C   sP   t }|d|d|d|d|d|dg}t| | | ||d d S Nz1.1z2.2z3.3z4.4r\  z6.6r5  r  r   r   r   rs    rt  z TestMedianLow.test_even_decimalsNr-   r.   r/   r  rf  rk  rs  r   r   r   r   rv    
    rv  c                   @   r_   )
TestMedianHighc                 C   r  rB   )r0   Zmedian_highr  r]   r   r   r   r    r  zTestMedianHigh.setUpc                 C   rQ  )Nre  r   r0  r  r   r   r   rf    rg  zTestMedianHigh.test_even_intsc                 C   s^   t }|dd|dd|dd|dd|dd|ddg}t| | | ||dd d S rj  r7  r8  r   r   r   rk    rl  z"TestMedianHigh.test_even_fractionsc                 C   sP   t }|d|d|d|d|d|dg}t| | | ||d d S rw  r5  r  r   r   r   rs    rt  z!TestMedianHigh.test_even_decimalsNrx  r   r   r   r   rz    ry  rz  c                   @   r  )TestMedianGroupedc                 C   r  rB   )r0   Zmedian_groupedr  r]   r   r   r   r    r  zTestMedianGrouped.setUpc                 C   st   g d}|  | |d g d}|  | |d g d}|  | |dd g d}| j| |d	d
dd d S )N)r   r     r|  r|  rc   rc   r|  )r   r  r|  r|  r|  r|  rc   g     +@)rk   r   r   rc   r  r  r  r     r}  r   rk   g     `3@)r      r~  r~  r~  r  r  r     r  r     r        r   g4@:0yE>r(   r6   r  rL   r  r   r   r   test_odd_number_repeated  s   z*TestMedianGrouped.test_odd_number_repeatedc                 C   sv   g d}| j | |dddd g d}| j | |ddd g d}| | |d	 g d
}| | |d d S )N)
rk   r   r   rc   r  r  r  r}  r}  r   rk   g*3@r  r  )r   r   r   r   r   rk   g["8@)r   r   r   r   r   r   rk   rk   rk   rk   r  r  r?  )
r   r   r   r   rk   rk   rk   rk   r  r        @)rL   r  r6   r  r   r   r   test_even_number_repeated  s   z+TestMedianGrouped.test_even_number_repeatedc                 C   sL   dddt ddtdfD ]}dD ]}|g| }| | |t| qqd S )N333333@D   g ޗCr   r   z32.9714r+  )r   r   r6   r  r   r,  r   r   r   r-    s   
z,TestMedianGrouped.test_repeated_single_valuec                 C   sP   t }|dd|dd|dd|dd|ddg}t| | | |d d S )Nrk   r   r   r  ra         @r7  r8  r   r   r   ri    s   ,
z$TestMedianGrouped.test_odd_fractionsc                 C   sX   t }|dd|dd|dd|dd|dd|ddg}t| | | |d d S )Nrk   r   r   r  ra         
@r7  r8  r   r   r   rk    s   4
z%TestMedianGrouped.test_even_fractionsc                 C   sF   t }|d|d|d|d|dg}t| | | |d d S )Nr\  6.57.58.5g      @r5  r  r   r   r   rr  	  s   "
z#TestMedianGrouped.test_odd_decimalsc                 C   s   t }|d|d|d|d|d|dg}t| | | |d |d|d|d|d|d|dg}t| | | |d d S )Nr\  r  r  r        @g      @r5  r  r   r   r   rs    s   (
(
z$TestMedianGrouped.test_even_decimalsc                 C   s\   g d}|  | |dd g d}| j| |dddd g d}|  | |d	d
 d S )N)
      @r  r  r   r   r  r  r  r%  r  r  g      @)r  r  r  r   r   r   r  r  r  r%  r  g["8@r  r  )   r       r  r  r    r  ,  @  iT  r  g     p@r  r  r   r   r   test_interval  s   zTestMedianGrouped.test_intervalc                 C   sp   g d}|  t| j| g d}|  t| j| g d}d}|  t| j|| g d}d}|  t| j|| d S )N) r  r  )    r  r  r  r  r  r  )r:   r;  intervalr   r   r   test_data_type_error'  s   z&TestMedianGrouped.test_data_type_errorN)r-   r.   r/   r  r  r  r-  ri  rk  rr  rs  r  r  r   r   r   r   r{    s    		r{  c                   @   ru   )TestModec                 C   r  rB   )r0   moder  r]   r   r   r   r  :  r  zTestMode.setUpc                 C   s
   	 g dS )N)r   r   r   r   r   r   r   r   r   r   r   r   r]   r   r   r   r  =  s   zTestMode.prepare_datac                 C   s"   t ddd}| | |d d S r  r[  r  r   r   r   r  B  s   zTestMode.test_range_datac                 C   s4   d}|  | |d d }|  | |d d S )NZabcbdbr   zfe fi fo fum fi fifi)r6   r  r   r  r   r   r   test_nominal_dataG  s   zTestMode.test_nominal_datac                 C   sD   t td}tdD ]}||g }t| | | || q
d S r  r{  r:  r5  r  r6   r  )r:   r;  rS   r   r   r   r   test_discrete_dataN  s   

zTestMode.test_discrete_datac                 C   rQ  )N)r   r   r   r   r   r   r   r   rk   r  r  r  r  r   r   r   r   r   r0  r  r   r   r   test_bimodal_dataV  s   zTestMode.test_bimodal_datac                 C   s"   t td}| | |d d S )Nr   r   )r{  r:  r6   r  r  r   r   r   test_unique_data]  s   zTestMode.test_unique_datac                 C   s   |  t| jd  d S rB   r  r]   r   r   r   test_none_datac  s   zTestMode.test_none_datac                 C   s$   t jddd}| | |d d S )Nr   r   )r   r   r   )rC   Counterr6   r  )r:   rC  r   r   r   test_counter_dataj  s   zTestMode.test_counter_dataN)r-   r.   r/   r  r  r  r  r  r  r  r  r  r   r   r   r   r  8  s    r  c                   @   r   )TestMultiModec                 C   s@   t j}| |ddg | |dg d | |dg  d S )NZaabbbbbbbbccr   Zaabbbbccddddeeffffgg)r   r   r   r  )r0   	multimoder6   )r:   r  r   r   r   test_basicsw  s   zTestMultiMode.test_basicsN)r-   r.   r/   r  r   r   r   r   r  u  s    r  c                   @   rZ  )	TestFMeanc              	   C   s   t j}t}t}g dddf|d|d|dgddf|dd	|d
d|dd
gddfg dddfdd
|dd
gddfdtg dddffD ]\}}}||}| t|t| | ||| qEd S )Nr%  r        @      @floats3.54.05.25decimalsr   r   r   r   r   	fractions)TFTTF333333?Zbooleansr%  mixed types)r  r  r|  iterator)	r0   fmeanr   r   r  rH  r   r   r6   )r:   r  r   r   r;  expected_meanr  actual_meanr   r   r   r    s    	zTestFMean.test_basicsc                 C   sJ  t j}t j}| | |g  W d    n1 sw   Y  | | |tg  W d    n1 s5w   Y  | t |d  W d    n1 sNw   Y  | t |g d W d    n1 siw   Y  | t |  W d    n1 sw   Y  | t |g dd W d    d S 1 sw   Y  d S )Nr   Nr  r   r  r  F   )r0   r  r"  r   r  rq  )r:   r  r"  r   r   r   test_error_cases  s(   

"zTestFMean.test_error_casesc                 C      t j}td}td}| t|d|gd | t|||gd | t|d|gd | t ||| g W d    d S 1 sJw   Y  d S NZNanInfr   r   znan and infinityZinfinity)	r0   r  r   rh   r   r   r&   r   r%   )r:   r  NaNr  r   r   r   test_special_values     "zTestFMean.test_special_valuesN)r-   r.   r/   r  r  r  r   r   r   r   r  ~  s    r  c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )VarianceStdevMixinr#   c                 C   s6   dddt ddtdfD ]}| | |gd qd S )Nr   g3@g  %Br   r   z8.392r   r!  r   r   r   r   r"    r#  z$VarianceStdevMixin.test_single_valuec                 C   sH   dddt ddtdfD ]}dD ]}|g| }| | |d qqd S )	Nr@  r   g @6<Cr   r   z62.4802)r   r   rk   rc   r   r!  r,  r   r   r   r-    s   
z-VarianceStdevMixin.test_repeated_single_valuec                 C   s4   dgd }|  |}| j|ddd | |d d S )Ng.F7ݚ?r  r[   gؗҌ<r  r   )r  rL   rO  r;  r   r   r   test_domain_error_regression  s   

z/VarianceStdevMixin.test_domain_error_regressionc                    >   g d}|  |}d  fdd|D }| |  || d S )N)
g{Gz?gRQ?g
ףp=
?gRQ @gp=
ף@gQ	@r  gQ@gGz@gQ@g     j@c                    rA  r   r   r  shiftr   r   r8    r  z6VarianceStdevMixin.test_shift_data.<locals>.<listcomp>)r  rL   r:   r  r   r;  r   r  r   test_shift_data  s
   
z"VarianceStdevMixin.test_shift_datac                    r  )N)
r   r   r   r   rk   r   r   r   r   r   i ʚ;c                    rA  r   r   r  r  r   r   r8    r  z<VarianceStdevMixin.test_shift_data_exact.<locals>.<listcomp>rD  r  r   r  r   test_shift_data_exact  s
   
z(VarianceStdevMixin.test_shift_data_exactc                 C   s6   dd t dD }| |}| | t|| d S )Nc                 S   r2  )r)  r   r4  r7  r   r   r   r8    r9  z:VarianceStdevMixin.test_iter_list_same.<locals>.<listcomp>r   )r:  r  r6   r  r  r   r   r   test_iter_list_same  s   
z&VarianceStdevMixin.test_iter_list_sameN)
r-   r.   r/   r)   r"  r-  r  r  r  r  r   r   r   r   r    s    
	r  c                   @   rL  )TestPVariancec                 C   r  rB   )r0   	pvariancer  r]   r   r   r   r    r  zTestPVariance.setUpc                 C   s0   t td}t| d}| | || d S )Nr  g   P_Ar  r  r   r   r   test_exact_uniform  s   
z TestPVariance.test_exact_uniformc                 C   "   g d}d}|  | || d S )Nr   r   r  r   g     6@r0  r:   r;  exactr   r   r   r       zTestPVariance.test_intsc                 C   sX   t }|dd|dd|dd|ddg}|dd}| |}| || | |t  d S )Nr   r   r   r   r   r   r  r6   assertIsInstancer:   r   r;  r  rw   r   r   r   r       $

zTestPVariance.test_fractionsc                 C   sN   t }|d|d|d|dg}|d}| |}| || | |t  d S )Nz12.1z12.2z12.5z12.9z0.096875r   r  r6   r  r:   r   r;  r  rw   r   r   r   r    s   
zTestPVariance.test_decimalsc                 C   2   g d}d}|  |}| || | |t d S )N)r   r   r   gqq?r  r6   r  r   r:   r;  r  rw   r   r   r   test_accuracy_bug_20499  
   
z%TestPVariance.test_accuracy_bug_20499N)	r-   r.   r/   r  r  r  r  r  r  r   r   r   r   r    s    		r  c                   @   r'  )TestVariancec                 C   r  rB   )r0   variancer  r]   r   r   r   r    r  zTestVariance.setUpc                 C   6   dddt ddtdfD ]}| tj| j|g qd S )Nr   g333338@g (G!=Cr   r   z4.2084r   r   r   r0   r"  r  r   r   r   r   r"  "  r#  zTestVariance.test_single_valuec                 C   r  )Nr  r   r0  r  r   r   r   r  '  r  zTestVariance.test_intsc                 C   sX   t }|dd|dd|dd|ddg}|dd}| |}| || | |t  d S )Nr   r   r   r   r   r  r  r   r   r   r  -  r  zTestVariance.test_fractionsc                 C   sZ   t }|d|d|d|dg}d|d |d }| |}| || | |t  d S )Nr   r   r   r   z9.5r   r  r  r   r   r   r  6  s   
zTestVariance.test_decimalsc                 C   0   d}|  | |d |  | j|ddd d S )Nr   r  r   r  xbarr   r0  r  r   r   r   test_center_not_at_mean?  s   z$TestVariance.test_center_not_at_meanc                 C   r  )N)r   r   r   gUUUUUU?r  r  r   r   r   r  D  r  z$TestVariance.test_accuracy_bug_20499N)
r-   r.   r/   r  r"  r  r  r  r  r  r   r   r   r   r    s    		r  c                   @   rZ  )
TestPStdevc                 C   r  rB   )r0   Zpstdevr  r]   r   r   r   r  M  r  zTestPStdev.setUpc                 C   8   dd t dD }tt|}| | || d S )Nc                 S   r2  )ir  r4  r7  r   r   r   r8  R  r9  z7TestPStdev.test_compare_to_variance.<locals>.<listcomp>r   )r:  r   sqrtr0   r  r6   r  r  r   r   r   test_compare_to_varianceP     z#TestPStdev.test_compare_to_variancec                 C   r  )N)r   r  r   r   r  r   )mur  r0  r  r   r   r   r  V  s   z"TestPStdev.test_center_not_at_meanN)r-   r.   r/   r  r  r  r   r   r   r   r  K  s    r  c                   @   r_   )
	TestStdevc                 C   r  rB   )r0   stdevr  r]   r   r   r   r  ^  r  zTestStdev.setUpc                 C   r  )NQ   gHzwi@g  f7?+Brk   r   z35.719r  r   r   r   r   r"  a  r#  zTestStdev.test_single_valuec                 C   r  )Nc                 S   r2  )rj   r   r4  r7  r   r   r   r8  h  r9  z6TestStdev.test_compare_to_variance.<locals>.<listcomp>r   )r:  r   r  r0   r  r6   r  r  r   r   r   r  f  r  z"TestStdev.test_compare_to_variancec                 C   s   d}|  | j|ddd d S )Nr  r  r  r   r0  r  r   r   r   r  l  s   z!TestStdev.test_center_not_at_meanN)r-   r.   r/   r  r"  r  r  r   r   r   r   r  \  s
    r  c                   @   r   )TestGeometricMeanc                 C   s   t j}| |g dd | |ddgd | |dgd td tdd	tdd
tddtdddtdddg ddd td
D dd tdD dd tdD f	D ]!}ttt	|t	dt
|  }||}| t|t| qXd S )N)rb   r  r         B@r  g      "@g      @g     1@l   ; r   rm   r   r  r  r   r)  )r   ra   r  rk   x   r   c                 S      g | ]}t d qS )      I@r5  expovariater   rS   r   r   r   r8        z1TestGeometricMean.test_basics.<locals>.<listcomp>c                 S   r2  )r4  r  )r5  lognormvariater  r   r   r   r8    r9    c                 S   s   g | ]	}t d ddqS )r    i  )r5  
triangularr  r   r   r   r8    s    r  )r0   geometric_meanassertAlmostEqualr5  seedr:  r   prodr   r   rM   rh   iscloser   )r:   r   rngZ
gm_decimalZgm_floatr   r   r   r  r  s&   


 zTestGeometricMean.test_basicsc                 C   s   t j}t}t}d}g ddf|d|d|dgdf|dd	|d
d|dd
gdfdd
|dd
gdfdtg ddffD ]\}}||}| t|t| | j||dd q<d S )Ngd@r  r  r  r  r  r  r   r   r   r   r   r  r%  r  )r  r|  r  rk   Zplaces)	r0   r   r   r   r  rH  r   r   r  )r:   r   r   r   r  r;  r  r  r   r   r   test_various_input_types  s   
z*TestGeometricMean.test_various_input_typesc                 C   s   t j}d}|d| d| d| g}| t|d|  | t| d}|d| d| d| g}| t|d|  | |d d S )Ng      p~g      K@g      8@r  g      pr[   )r0   r   rh   r   r  r   r&   assertNotEqual)r:   r   ZlargeZbig_gmZsmallZsmall_gmr   r   r   test_big_and_small  s   z$TestGeometricMean.test_big_and_smallc                 C   s  t j}t j}| | |g  W d    n1 sw   Y  | | |g d W d    n1 s5w   Y  | | |g d W d    n1 sPw   Y  | | |tg  W d    n1 skw   Y  | t |d  W d    n1 sw   Y  | t |g d W d    n1 sw   Y  | t |  W d    n1 sw   Y  | t |g dd W d    d S 1 sw   Y  d S )N)r%  r[   r  )r%  g      r  r  r  r  )r0   r   r"  r   r  rq  )r:   r   r"  r   r   r   r    s4   

"z"TestGeometricMean.test_error_casesc                 C   r  r  )	r0   r   r   rh   r   r   r&   r   r%   )r:   r   r  r  r   r   r   r    r  z%TestGeometricMean.test_special_valuesN)r-   r.   r/   r  r  r	  r  r  r   r   r   r   r  p  s    r  c                   @   r   )TestQuantilesc                    s  t j}g d}t| dg fddgfdddgfdg d	fd
g dfdg dfdg dfdg dfdg dfdg dff
D ]\}}| ||||d | t|||d|d  tttfD ]" |t	 ||d}| 
 fdd|D  | |tt	 | q^t|dkr| |||d| t|}d|d  |d  }d|d  |d  }|||g }	| |||d||	|dd||f dd }
tt	|
|}|t	|
||d}| 
td d t||D  q=tdd!D ]}tjtd"|d#}||\}}}| |t | qd S )$N)r  r?     r  i^  r   r        @o@r         i@      t@r   )      d@r       t@rk   )      a@     k@     @r@     u@r  )      ^@r  r  r       u@r   )      Y@r  g     j@r  g     r@r  g     Xv@r   )	g      V@r  g      g@r  r  r  g     `t@r  g     v@r   )      T@r  r  r        l@r  g     q@r  r  r  g     v@rc   )g      R@g      Z@r  g      e@r  r        n@g     p@r  r  g     t@r  g     @v@g      w@r   c                 3        | ]}t t| kV  qd S rB   allr   r  Zdatatyper   r   r         z4TestQuantiles.test_specific_cases.<locals>.<genexpr>r   r\   rj   	inclusiver   methodc                 S      d|  d S Nr%  g3333J@r   r
   r   r   r   r     r  z,TestQuantiles.test_specific_cases.<locals>.fc                 s        | ]\}}t ||V  qd S rB   r   r  r   rT   r   r   r   r   r     r   r  rm   k)r0   	quantilesr5  r  r6   rM   r   r   r   r   rh   r{  r  r  rQ   r:  choicesrd  )r:   r+  r;  r   r   rw   ZsdatalohiZpadded_datar   expactr*  q1q2q3r   r  r   test_specific_cases  sP   









 z!TestQuantiles.test_specific_casesc                    s.  t j}g d}t| dg fddgfdddgfdg d	fd
g dfdg dfdg dfdg dfdg dfdg dff
D ]k\}}| ||||dd | t|||dd|d  tttfD ]# |t	 ||dd}| 
 fdd|D  | |tt	 | q`dd }tt	||}|t	|||dd}| 
tdd t||D  q=| |ddgdddg d | |tdd dddg d d!d" td#D }||d$dd}	|t| |t| ||d$d%}| ||	 tdd&D ]}
tjtd|
d'}||dd(\}}}| |t | qd S ))N)rm   r?  i  i   r   r        r@r   r        y@r   )     e@r5       @@rk   )r  r       v@     @r  )     b@r  r5  r6       @r   )g     0a@   r  r5  g     pw@r8  g     P@r   )	g     @`@r  g     g@r  r5  r9  g     {@r:  g     @@r   )g     @_@r;  r7  r  r  r5  r  r6  r8  r<  g     @rc   )r  g     a@r  g     f@r  r  g     q@r  r9  r6  g      ~@r:  g      @g     @r!  r"  c                 3   r  rB   r  r  r  r   r   r   	  r   z>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>c                 S   r$  r%  r   r
   r   r   r   r   	  r  z6TestQuantiles.test_specific_cases_inclusive.<locals>.fc                 s   r&  rB   r'  r(  r   r   r   r   "	  r   r   rm   )	      $@r4  g      >@g      D@r  g      N@g     Q@r  g     V@r   c                 S   r  )r  )r5  	randranger  r   r   r   r8  +	  r  z?TestQuantiles.test_specific_cases_inclusive.<locals>.<listcomp>i      r  r  r)  r#  )r0   r+  r5  r  r6   rM   r   r   r   r   rh   r{  r  rQ   r:  rO  rg   r   r,  rd  )r:   r+  r;  r   r   rw   r   r/  r0  r   r*  r1  r2  r3  r   r  r   test_specific_cases_inclusive	  sR   








 z+TestQuantiles.test_specific_cases_inclusivec                 C   sP   t j}tddD ]}dg| }| ||g d | ||ddg d qd S )Nr   r   r>  )r>  r>  r>  r!  rA  )r0   r+  r:  r6   )r:   r+  r   r;  r   r   r   test_equal_inputs7	  s   
zTestQuantiles.test_equal_inputsc              	      s   t j}d}dd t|D  tt |kr& td tt |ks   dD ]}|| }| 	 fdd| |dD t
t||| q,dD ].}|| || d	 h} fd
d| |dD }dd t||d	d  D }| ||k qLd S )Nr  c                 S   r  )皙?r  r  r   r   r   r8  B	  r  z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>rD  )r   r   rk   r   r  r   rm   r?  r  r   r  rR  r  c                       g | ]}t   |qS r   bisectr   qr  r   r   r8  K	  r9  r  )
r  r   ;   m      i;  i  is  i  i)&  r   c                    rE  r   rF  rH  r  r   r   r8  R	  r9  c                 S   s   h | ]\}}|| qS r   r   )r   prI  r   r   r   	<setcomp>S	  r9  z8TestQuantiles.test_equal_sized_groups.<locals>.<setcomp>)r0   r+  r:  rM   setr
  r5  r  sortr6   r{  rQ   rh   )r:   r+  totalr   Z
group_sizeZgroup_sizesposZsizesr   r  r   test_equal_sized_groups?	  s&   z%TestQuantiles.test_equal_sized_groupsc                 C   s  t j}t j}| t |  W d    n1 sw   Y  | t |g dddd W d    n1 s7w   Y  | t |g dd W d    n1 sSw   Y  | | |g ddd W d    n1 spw   Y  | | |g ddd W d    n1 sw   Y  | t |g ddd W d    n1 sw   Y  | t |g ddd	 W d    n1 sw   Y  | | |d
gdd W d    n1 sw   Y  | t |g ddd W d    d S 1 sw   Y  d S )N)r   r  r   r  r   r  r   r\   r   XrA  r   )r   Nr   )r0   r+  r"  r   rq  r%   )r:   r+  r"  r   r   r   r  V	  s:   $zTestQuantiles.test_error_casesN)r-   r.   r/   r4  rB  rC  rS  r  r   r   r   r   r
    s    66r
  c                   @   r   )TestBivariateStatisticsc              	   C   s   g dddgfddgg dffD ]X\}}|  tj t|| W d    n1 s+w   Y  |  tj t|| W d    n1 sGw   Y  |  tj t|| W d    n1 scw   Y  qd S )Nr  r   r   r   r0   r"  
covariancecorrelationlinear_regressionr  r   r   r   test_unequal_size_erroro	  s   z/TestBivariateStatistics.test_unequal_size_errorc              	   C   s   g g fg ddgfddgg fdgdgfdgddgfddgdgffD ]X\}}|  tj t|| W d    n1 s;w   Y  |  tj t|| W d    n1 sWw   Y  |  tj t|| W d    n1 ssw   Y  q d S )Nr   r   rV  r  r   r   r   test_small_sample_error{	  s$   


z/TestBivariateStatistics.test_small_sample_errorN)r-   r.   r/   rZ  r[  r   r   r   r   rU  m	  s    rU  c                   @   r   )TestCorrelationAndCovariancec                 C   s   g dg ddfg dg ddfg dg ddfg dg ddfg dg dd	ffD ]\}}}|  t||| |  t||| q*d S )
Nr  r   r\   rj   r)  r\   )r   r   r   )r   r   r   r   )r   r   r   r   r  r0   rX  rW  )r:   r   r'   rw   r   r   r   test_results	  s   z)TestCorrelationAndCovariance.test_resultsc                 C   sl   g d}g d}|  t||d |  t||d g d}|  t||d |  t||d d S )Nr  )r   r   r  r   rk   )r   rD  g333333?r   r   r^  r  r   r   r   test_different_scales	  s   z2TestCorrelationAndCovariance.test_different_scalesN)r-   r.   r/   r_  r`  r   r   r   r   r\  	  s    r\  c                   @   r   )TestLinearRegressionc                 C   sN   g d}g d}|  tj t|| W d    d S 1 s w   Y  d S )N)r   r   r   r  )r   r0   r"  rY  r  r   r   r   test_constant_input_error	  s
   "z.TestLinearRegression.test_constant_input_errorc              
   C   s   g dg dddfg dg dddfg dg dddfg dg ddd	fg dg d
ddfg dg dddfg dg dddffD ]\}}}}t ||\}}| || | || qAd S )Nr  )r   r   r   r   r   )rm   rm   rm   rm   )r   r|  r   r   r   r]  r\   )r   r  r   r  )gffffff@g@r  rk   r   )r0   rY  r  )r:   r   r'   Ztrue_interceptZ
true_slopeZslopeZ	interceptr   r   r   r_  	  s   	z!TestLinearRegression.test_resultsN)r-   r.   r/   rb  r_  r   r   r   r   ra  	  s    ra  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'S )(TestNormalDistc                 C   sV   | j dd}| t t| W d    n1 sw   Y  | t|jd d S )Nr  r   )Z_muZ_sigma)r  
NormalDistr   rq  varsr6   r|  	__slots__r:   ndr   r   r   
test_slots	  s
   
zTestNormalDist.test_slotsc                 C   s   | j dd}| |jd | |jd | |jd | j  }| |jd | |jd | |jd | | j j | j dd W d    n1 sOw   Y  G dd d| j j}|d	d
}| t|| d S )Nr  ra   i!  r   r   ic                   @   rB  )zGTestNormalDist.test_instantiation_and_attributes.<locals>.NewNormalDistNr,   r   r   r   r   NewNormalDist	  rD  rj  r?  rk   )	r  rd  r6   r/  r  r  r   r"  r   )r:   rh  rj  nndr   r   r   !test_instantiation_and_attributes	  s   

z0TestNormalDist.test_instantiation_and_attributesc                 C   s   | j j}g d}| |||dd | |t||dd | |t||dd | | j j |g  W d    n1 sGw   Y  | | j j |dg W d    n1 sdw   Y  G dd d|}||}| t|| d S )N)`   rl   Z   r   n   r*  r   r   c                   @   rB  )zBTestNormalDist.test_alternative_constructor.<locals>.NewNormalDistNr,   r   r   r   r   rj  	  rD  rj  )	r  rd  r6   Zfrom_samplesr|  r  r   r"  r   )r:   rd  r;  rj  rk  r   r   r   test_alternative_constructor	  s   
z+TestNormalDist.test_alternative_constructorc                 C   s   | j j}d\}}|||}d}||}| t|| | ttt|th | j 	|}| 
||d  |  koA||d  kn   d}|j|dd}|j|dd}	|j|dd}
|j|dd}| ||
 | |	| | ||	 d S )N)r  r  r   r   rm   zhappiness and joy)r  ztrouble and despair)r  rd  Zsamplesr6   rM   rO  r   r   r   r/  rh   r  )r:   rd  r  sigmarT  r   r;  r  Zdata1Zdata2Zdata3Zdata4r   r   r   test_sample_generation	  s"   

.z%TestNormalDist.test_sample_generationc           
      C   s  | j j}|dd}| |d|d | |d|d tdD ]}| |d| |d|  q%d}tddD ]}||| || | }| j|||d	d
 q?| }tg dD ]\}}| j||d |d	d
 | j|| d |d	d
 qd|dd}	| | j j	 |	d W d    n1 sw   Y  | 
|tdd | 
|tdd | t|td d S )Nrm   rc   r*  r   r   g      P?rn  r^  r   r  )2+ݓ?rs  rs  ggDio?g?gV}b?gQ|?gFx?ggs?g٬\m?g rh?gK7A`?g|гY?gQ?gQI?gsh|??g=yX5?g|a2U0*?gQ?gN@?g/$?g~k	?g]C?gw/?g~:p?g>W[?gMO?gW[?g鷯?g{Gz?gqh?g|a2U?gK7A?gvq-?gjt?gc]F?g\C?gףp=
?g?ga2U0*?gy):?g(y?gN@a?gfc]F?g"lxz,?gOn?g37?gec]?gn?gT?r  r   -Infr[   r  r  )r  rd  Z
assertLesspdfr:  r  cdfrP   r   r"  r6   r   rh   r   r   )
r:   rd  rT  rS   dxr   Zest_pdfZZpxYr   r   r   test_pdf
  s*   
"
zTestNormalDist.test_pdfc                    s6  | j j}|dd  fddtddD }| ttt|th | |t| |  	dd | }dD ]\}}| j
|	||d	d
 | j
|	| d| d	d
 q7|dd}| | j j |	d W d    n1 sqw   Y  |  	tdd |  	tdd | t 	td d S )Nrm   rc   c                    s   g | ]}  |qS r   )rv  r  rT  r   r   r8  5
  r  z+TestNormalDist.test_cdf.<locals>.<listcomp>r   r?  r   ))r[   r   )r   gqZ ?)r   gE_A?)gQ?gGɫs?)g(\?g؞Y?)gQ?g9#?)gHzG?g&S?)r  gMbX9?)gQ?gT㥛 ?)g?g??)gffffff @g_xZ?)gQ@g#0?)g)\(@gu<f2?)gףp=
@gVe?)gHzG@g9?rk   r  r   r   rn  rt  r[   r  r  )r  rd  r:  r6   rO  r   r   r   r  rv  r  r   r"  rh   r   r   )r:   rd  Zcdfsrx  zZcum_probry  r   r{  r   test_cdf2
  s"   

zTestNormalDist.test_cdfc                 C   s  | j j}|dd}| |d|j | }dddd}| D ]1\}}t|dd	D ]&\}}|d
|   }	| j||	 |dd d|	 }	| j||	|dd q*q | |dddd d}
td|
D ]}	|	|
 }	| |	||	|	 qetddD ]#}d|  }	| |	||	|	 d|	 }	| |	||	|	 q}tdD ]}| j||	||dd q| 
| j j |d W d    n1 sw   Y  | 
| j j |d W d    n1 sw   Y  | 
| j j |d W d    n	1 sw   Y  | 
| j j |d W d    n	1 s#w   Y  | 
| j j |dd}|d W d    n	1 sEw   Y  | t|td d S )Nrm   rc   r   )
r[   gRQ?gS㥛@gS
@gT㥛 @g^I@g rh@g+N@gC@gV-o@)
g rh?g\(\?g~jt@g+@gMbX9@g(\B@gv@g@gSc@gK7A@)
gPn?gS㥛@gQ@gn@g(\@gPn@g@g r@gˡE@glq@)r  r  r   r   )startr>  r   r  r   r  r   g>?g  E@i   3   r  r?  rk   r[   r   g?r   r  )r  rd  r6   Zinv_cdfr/  itemsrP   r  r:  rv  r   r"  rh   r   r   r   )r:   rd  Ziqrx  ppr   rowr/  r   rM  r   rT   r   r   r   test_inv_cdfP
  sX   


zTestNormalDist.test_inv_cdfc                 C   sh   | j  }dg fddgfdddgfdg dffD ]\}}|j|d	}| td
d t||D  qd S )Nr   r   r[   r   gǘۿgǘ?r   )g/$r[   g/$?r  c                 s   s$    | ]\}}t j||d dV  qdS )r   )Zabs_tolNr'  r(  r   r   r   r   
  s    z0TestNormalDist.test_quantiles.<locals>.<genexpr>)r  rd  r+  rh   r  rQ   )r:   rx  r   r   r   r   r   r   test_quantiles
  s   


zTestNormalDist.test_quantilesc                 C   s  | j j}|dd|dddf|dd|dddffD ]\}}}| j|||dd | j|||dd qdd	d
dd}|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddffD ] \}}| j|||||d	d | j|||||d	d q| }| t |  W d    n1 sw   Y  | t ||| W d    n	1 sw   Y  | t |d  W d    n	1 s-w   Y  | | j j ||dd W d    n	1 sMw   Y  | | j j |dd| W d    d S 1 snw   Y  d S ) Nr[   r  r   gɎ@?gM-[닄?r   r  i    rk   )stepsr|  c                   s   	 t j}| j|j d }|t| j|j }|| d| |   fddt|D }tt| j|}tt|j|}	t||||	}
|tt	||	|
 S )Nr  c                    s   g | ]}|   qS r   r   r  rw  r~  r   r   r8  
  r9  zHTestNormalDist.test_overlap.<locals>.overlap_numeric.<locals>.<listcomp>)
r   r  r/  r   r  r:  r{  r   ru  rg   )rT  ry  r  r|  r  centerwidthZx_arrZxpZyprQ  r   r  r   overlap_numeric
  s   z4TestNormalDist.test_overlap.<locals>.overlap_numericr  A   r%  rm   rc   ro  r3  ir      r   r   gjt?g~jth?gjt?ga2U0*3?gMbX?r   r   )r  rd  r  Zoverlapr   rq  r"  )r:   rd  ZX1ZX2Zpublished_resultr  rT  r   r   r   test_overlap
  sP   
$zTestNormalDist.test_overlapc                 C   s(  | j j}|dd}| |dd | |dd | |dd | t |  W d    n1 s8w   Y  | t |dd W d    n1 sSw   Y  | t |d  W d    n1 smw   Y  | | j j |dd	d W d    d S 1 sw   Y  d S )
Nrm   rc      gffffff@:   gffffffr[   r   r   )r  rd  r6   Zzscorer   rq  r"  )r:   rd  rT  r   r   r   test_zscore
  s"   

"zTestNormalDist.test_zscorec                 C   sX   | j dd}| |jd | |jd | |jd | |jd | |jd d S )Nrm   rc      )r  rd  r6   r/  rd  r  r  r  )r:   rT  r   r   r   test_properties
  s   zTestNormalDist.test_propertiesc                 C   sL   | j j}|dd}|dd}| || |dd | || |dd d S )Nrm   r   r  rk      r  r  )r  rd  r6   r:   rd  rT  ry  r   r   r   'test_same_type_addition_and_subtraction
  s
   

z6TestNormalDist.test_same_type_addition_and_subtractionc                 C   s  | j j}|dd}d}| |
 |dd | | |dd | || |dd | || |dd | || |dd | || |dd | || |dd	 | || |dd	 | || |dd
 | t ||  W d    d S 1 sw   Y  d S )Nrm   rc   r   r3  ro  rn  ir   r  r   )r  rd  r6   r   rq  )r:   rd  rT  r'   r   r   r   test_translation_and_scaling
  s   

"z+TestNormalDist.test_translation_and_scalingc                 C   s|   | j j}|dd}|
 }| || | |j|j | |j|j | }| || | |j|j  | |j|j d S )Nrm   r   )r  rd  ZassertIsNotr6   r/  r  r  r   r   r   test_unary_operations  s   
z$TestNormalDist.test_unary_operationsc                 C   s"  | j j}| }|dd}| }|dd}|dd}|dd}| || | || | || | || | || G dd d}| }	| ||	t | ||	kd | |	|kd G dd d|}
|
d	d
d}|d	d
}| || G dd d}|d	d
}|d	d
}| || d S )Nr   r   r   c                   @   r   )z'TestNormalDist.test_equality.<locals>.Ac                 S   s   dS r  r   r  r   r   r   __eq__'  s   z.TestNormalDist.test_equality.<locals>.A.__eq__N)r-   r.   r/   r  r   r   r   r   rj  &  r&  rj  r   c                       r  )z5TestNormalDist.test_equality.<locals>.SizedNormalDistc                    s   t  || || _d S rB   )r  __init__r   )r:   r  rq  r   r  r   r   r  1  s   
z>TestNormalDist.test_equality.<locals>.SizedNormalDist.__init__)r-   r.   r/   r  r  r   r   r  r   SizedNormalDist0  r  r  rm   rc   9   c                   @   r   )z3TestNormalDist.test_equality.<locals>.LognormalDistc                 S   s   || _ || _d S rB   )r  rq  )r:   r  rq  r   r   r   r  <  s   
z<TestNormalDist.test_equality.<locals>.LognormalDist.__init__N)r-   r.   r/   r  r   r   r   r   LognormalDist;  r&  r  )r  rd  r  r6   r  NotImplemented)r:   rd  nd1nd2Znd3Znd4Znd5Znd6rj  r   r  sr  Zlndrh  r   r   r   test_equality  s2   






zTestNormalDist.test_equalityc                 C   s>   | j dd}t|}| || t|}| || d S )N     B@     @)r  rd  copyr6   deepcopy)r:   rh  r  r  r   r   r   	test_copyC  s
   

zTestNormalDist.test_copyc              	   C   sr   | j dd}ttjd D ](}| j|d ttj||d}| || W d    n1 s1w   Y  qd S )Nr  r  r   )proto)protocol)	r  rd  r:  pickleHIGHEST_PROTOCOLr  loadsdumpsr6   )r:   rh  r  Zpickledr   r   r   test_pickleJ  s   zTestNormalDist.test_picklec                 C   sH   | j j}|dd|dd|dd|dd|ddh}| t|d d S )Nrm   rc   r  g      .@r   r  r   )r  rd  r6   rM   )r:   ZNDr  r   r   r   test_hashabilityQ  s   ,zTestNormalDist.test_hashabilityc                 C   s"   | j dd}| t|d d S )Nr  r  z NormalDist(mu=37.5, sigma=5.625))r  rd  r6   reprrg  r   r   r   	test_reprV  s   zTestNormalDist.test_reprN)r-   r.   r/   ri  rl  rp  rr  rz  r}  r   Zskip_if_pgo_taskr  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rc  	  s*    	'
@?,rc  c                   @       e Zd ZeZdd Zdd ZdS )TestNormalDistPythonc                 C      | j tjd< d S r4   r  r  modulesr]   r   r   r   r  `     zTestNormalDistPython.setUpc                 C      t tjd< d S r4   r0   r  r  r]   r   r   r   tearDownc  r  zTestNormalDistPython.tearDownN)r-   r.   r/   r8   r  r  r  r   r   r   r   r  ^  s    r  r<   c                   @   r  )TestNormalDistCc                 C   r  r4   r  r]   r   r   r   r  j  r  zTestNormalDistC.setUpc                 C   r  r4   r  r]   r   r   r   r  m  r  zTestNormalDistC.tearDownN)r-   r.   r/   r=   r  r  r  r   r   r   r   r  g  s    r  c                 C   s   	 | t  |S rB   )ZaddTestsr  ZDocTestSuite)loaderZtestsignorer   r   r   
load_testss  s   r  __main__)r#   r$   )SrG  rC   collections.abcr  r  r  r   r  r5  r  r?   testr   Ztest.supportr   r   r  r   r0   r   r   r"   r*   r+   Zimport_fresh_moduler8   r=   r   r2   rA   rZ   r`   rv   r   r   r   r   r   r  r  r!  r(  rM  r[  rb  r  r  r  r  r  r  r  r  r  r	  r  r.  rN  rb  ru  rv  rz  r{  r  r  r  r  r  r  r  r  r  r
  rU  r\  ra  rc  r  r@   r  r  r-   mainr   r   r   r   <module>   s    
:+_
>@w-@4d>c':@`y9r=	1B,.Y %   &
	
