a
    "ht                    @   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dyd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 d/d0 d0e
jZ'G d1d2 d2e
jZ(G d3d4 d4e
jZ)G d5d6 d6e
jZ*G d7d8 d8e
jZ+G d9d: d:e
jZ,G d;d< d<e
jZ-G d=d> d>e
jZ.G d?d@ d@Z/G dAdB dBZ0G dCdD dDe/e0Z1G dEdF dFeZ2G dGdH dHeZ3G dIdJ dJeZ4G dKdL dLe/Z5G dMdN dNee5e0Z6G dOdP dPee5e0Z7G dQdR dRee5Z8G dSdT dTee0Z9G dUdV dVe8e0Z:G dWdX dXe8e0Z;G dYdZ dZe8Z<G d[d\ d\ee5e0Z=G d]d^ d^e
jZ>G d_d` d`e
jZ?G dadb dbe/Z@G dcdd dde@ee0ZAG dedf dfe@ee0ZBG dgdh dhe@eZCG didj dje@eZDG dkdl dle
jZEG dmdn dne
jZFG dodp dpZGG dqdr dre
jeGZHe
IedsG dtdu due
jeGZJdvdw ZKeLdxkr\e
M  dS )z    N)support)DecimalFractionc                 C   s   t d| S )N   )mathcopysignx r   </opt/python-3.9.21/usr/lib/python3.9/test/test_statistics.pysign   s    r   c                 C   sZ   t | t |urdS t| tr2t| o0t|S |  d }| d }||koX|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|r0dS | |kr<dS t| sPt|rTd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   s$   | j D ]}| tt|jd qd S Nr/   )
func_namesassertEqualgetattrpy_statisticsr-   selfZfnamer   r   r   test_py_functions   s    
zTestModules.test_py_functionsrequires _statisticsc                 C   s$   | j D ]}| tt|jd qd S )Nr0   )r3   r4   r5   c_statisticsr-   r7   r   r   r   test_c_functions   s    
zTestModules.test_c_functionsN)	r,   r-   r.   r3   r9   unittest
skipUnlessr;   r<   r   r   r   r   r1      s   
r1   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   sZ   |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)r8   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 ] \}\}}	| ||	|||| qHd S )Nz0sequences differ in length: %d items != %d items)len_formatMessagefailureException	enumerateziprE   )
r8   rF   rG   r'   r(   rH   standardMsgir   er   r   r   rD      s    
z!NumericTestCase._check_approx_seqc                 C   s>   t ||||rd S | |||||}| ||}| |d S r@   )r)   _make_std_err_msgrL   rM   )r8   rF   rG   r'   r(   rH   idxrP   r   r   r   rE     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!   )	rF   rG   r'   r(   rT   templateheaderr   r    r   r   r   rS     s    z!NumericTestCase._make_std_err_msg)NNN)N)
r,   r-   r.   r'   r(   rJ   rD   rE   staticmethodrS   r   r   r   r   r?      s    
,
	r?   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       )r4   r   r8   r   r   r   
testZeroes(  s    zTestSign.testZeroesN)r,   r-   r.   r\   r   r   r   r   rX   &  s   rX   c                   @   s,   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   rO   do_relative_symmetry)r8   Zargs1Zargs2r   r   r   r   r   test_relative_symmetry3  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)   )r8   r   r   deltaZrel_err1Zrel_err2r(   r   r   r   ra   C  s    z,ApproxEqualSymmetryTest.do_relative_symmetryc                 C   s  g d}d}|D ]}t tttfD ]}||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)   k   im r   d   rc   r   r   )intr   r   r   r   r   do_symmetry_test)r8   argsrf   r   type_r
   r&   rr   r   r   test_symmetryO  s    z%ApproxEqualSymmetryTest.test_symmetryc              
   C   s@   d}t ||||}t ||||}| |||||||f d S )Nz+approx_equal comparisons don't match for %r)r)   r4   format)r8   r   r   r'   r(   rU   Zflag1Zflag2r   r   r   rm   g  s    z(ApproxEqualSymmetryTest.do_symmetry_testN)r,   r-   r.   rb   ra   rq   rm   r   r   r   r   r]   0  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S )ApproxEqualExactTestc                 C   sJ   t ||||d}| |d|  t | | ||d}| |d|   d S )Nrc   zequality failure for x=%r)r)   re   )r8   r
   r'   r(   resultr   r   r   do_exactly_equal_testt  s    z*ApproxEqualExactTest.do_exactly_equal_testc                 C   s   dD ]}|  |dd qd S )N)*   iM  i~:     i  iU
 i  r   ru   r8   r   r   r   r   test_exactly_equal_intsz  s    z,ApproxEqualExactTest.test_exactly_equal_intsc                 C   s   dD ]}|  |dd qd S )N)gzG?g/$?ge@g      7@g     pf@g!rhQ@gB`"KB@r   rx   r8   r
   r   r   r   test_exactly_equal_floats  s    z.ApproxEqualExactTest.test_exactly_equal_floatsc                 C   sN   t }|dd|d|dd|dd|dd	|ddfD ]}| |dd q6d S )
Nr   r   r   ri      	      #   $   )r   ru   r8   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splitru   )r8   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  )ru   r   )r8   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)ru   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Gri      r   r   z11.68r   r   ru   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   )r8   r
   r   r   r   r   test_exactly_equal_both  s    z,ApproxEqualExactTest.test_exactly_equal_bothN)r,   r-   r.   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   rs   n  s   rs   c                   @   s4   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   rc   zinequality failure for x=%r)r)   assertFalse)r8   r
   r   rt   r   r   r   do_exactly_unequal_test  s    z.ApproxEqualUnequalTest.do_exactly_unequal_testc                 C   s   dD ]}|  | qd S )N)i  i i  i  iXC  r   ry   r   r   r   test_exactly_unequal_ints  s    z0ApproxEqualUnequalTest.test_exactly_unequal_intsc                 C   s   dD ]}|  | qd S )N)gQ#@g[@gfffffG@gףp=
W"@g=
ףp=1@r   r{   r   r   r   test_exactly_unequal_floats  s    z2ApproxEqualUnequalTest.test_exactly_unequal_floatsc                 C   s<   t }|dd|dd|dd|ddfD ]}| | q(d S )	Nr   ri   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   r8   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 ]H}| ||}| t||d| dd| | t|||d dd| qd S )NTest failure for x={!r}, y={!r}r   r   rc   rr   re   r)   r   r8   r
   rf   rU   r&   rH   r   r   r   do_approx_equal_abs_test  s
    z/ApproxEqualInexactTest.do_approx_equal_abs_testc                 C   s&   dD ]}|  |d |  |d qd S )N)iiIirh   r   r   r~   %   i  i&  i6jr   r   r   ry   r   r   r   test_approx_equal_absolute_ints  s    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      )irh   rZ   r   r   ri   r^      "   G   c                 s   s   | ]}t |d V  qdS )r   Nr   ).0r   r   r   r   	<genexpr>      zNApproxEqualInexactTest.test_approx_equal_absolute_fractions.<locals>.<genexpr>)r   r   r   )r8   rf   
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   )r8   rf   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   rc   )re   r)   r[   r   r   r   test_cross_zero  s    z&ApproxEqualInexactTest.test_cross_zeroc              	   C   sj   d}|d|  |d|  fD ]H}| ||}| t||dd| d| | t||d|d d| qd S )Nr   r   r   r   rc   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=
?rc   gGz?i  i         ?i  i  )re   r)   r   r[   r   r   r   test_approx_equal_relative_ints  s
    z6ApproxEqualInexactTest.test_approx_equal_relative_intsc                 C   s&   dD ]}|  |d |  |d qd S )N)g{GJf皙r   r   g\(|B@gʡE>@gx@{Gz?r   )r   r{   r   r   r   !test_approx_equal_relative_floats  s    z8ApproxEqualInexactTest.test_approx_equal_relative_floatsc                 C   sh   t }t dd}|dd|dd|dd|dd	fD ]0}|t|fD ]}| || | | | qBq2d S )
Nr}   r   T   r^      1   2   \   U   )r   r   r   )r8   r   rf   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 |sP|rV| j n| j}|t||||d d S )Nr   rc   )re   r   r)   )r8   r   r   r'   r(   Ztol_flagZrel_flagrI   r   r   r   do_check_both)  s    z$ApproxEqualInexactTest.do_check_bothc                 C   s,   |  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_both11  s    z.ApproxEqualInexactTest.test_approx_equal_both1c                 C   s   |  dddddd d S )Nr   r   r   gVF?8?TFr   r[   r   r   r   test_approx_equal_both26  s    z.ApproxEqualInexactTest.test_approx_equal_both2c                 C   s   |  dddddd d S )Nr   r   MbP?r   FTr   r[   r   r   r   test_approx_equal_both3:  s    z.ApproxEqualInexactTest.test_approx_equal_both3c                 C   s,   |  dddddd |  dddd	dd d S )
Ng=
ףp=@      @r   r   FgQ[@g(\[@r   giUMu>r   r[   r   r   r   test_approx_equal_both4>  s    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                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ApproxEqualSpecialsTestc                 C   s   t tfD ]z}|d}| t|| | t||dd | t||dd | t| |  | t||  | t|d qd S )Nr   r   r   r     )r   r   re   r)   r   )r8   ro   r   r   r   r   test_infG  s    z ApproxEqualSpecialsTest.test_infc                 C   s>   t tfD ]0}|d}||ddfD ]}| t|| q"qd S )Nnanr   r   )r   r   r   r)   )r8   ro   r   otherr   r   r   test_nanQ  s    z ApproxEqualSpecialsTest.test_nanc                 C   s&   t dd}| t|dddd d S )NrY   rZ   r   rc   )r   r   re   r)   r8   Znzeror   r   r   test_float_zeroesW  s    z)ApproxEqualSpecialsTest.test_float_zeroesc                 C   s&   t d}| t|t dddd d S )Nz-0.0r   r   rc   )r   re   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   D  s   
r   c                   @   s   e Zd Zdd Zdd ZdS )TestApproxEqualErrorsc                 C   s   |  ttdddd d S )Nrk   rZ   r   assertRaisesr$   r)   r[   r   r   r   test_bad_tolc  s    z"TestApproxEqualErrors.test_bad_tolc                 C   s   |  ttdddd d S )Nrk   r   r   r   r[   r   r   r   test_bad_relg  s    z"TestApproxEqualErrors.test_bad_relN)r,   r-   r.   r   r   r   r   r   r   r   `  s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNumericTestCasec                 C   s.   t j| }| j| }|D ]}| || qd S r@   )r?   rS   generate_substringsZassertIn)r8   rn   Z
actual_msgr   Z	substringr   r   r   do_testw  s    

zTestNumericTestCase.do_testc                 C   s   |  tttj d S r@   )re   
issubclassr?   r=   TestCaser[   r   r   r    test_numerictestcase_is_testcase}  s    z4TestNumericTestCase.test_numerictestcase_is_testcasec                 C   s   d}|  | d S )N)      @      @r         ?Nr   r8   rn   r   r   r   test_error_msg_numeric  s    z*TestNumericTestCase.test_error_msg_numericc                 C   s   d}|  | d S )N)      @g      @g      ?r   r   r   r   r   r   r   test_error_msg_sequence  s    z+TestNumericTestCase.test_error_msg_sequencec           	      C   sD   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)	r8   rF   rG   r'   r(   rT   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   q  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_metadatare   hasattrmodule)r8   metar   r   r   	test_meta  s    
zGlobalsTest.test_metac                 C   sB   | j }|jD ]0}| |dd|  | t||d|  qd S )N_zprivate name "%s" in __all__zmissing name "%s" in __all__)r   r   r   
startswithre   r   )r8   r   namer   r   r   test_check_all  s    
zGlobalsTest.test_check_allN)r,   r-   r.   r/   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testmodr/   ELLIPSISassertGreaterr4   )r8   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                   @   s   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)re   r   r/   r   r  r$   __base__)r8   errmsgr   r   r   test_has_exception  s    

z&StatisticsErrorTest.test_has_exceptionN)r,   r-   r.   r  r   r   r   r   r    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S )ExactRatioTestc                 C   s$   dD ]}|  t||df qd S )N)ir   ri   c   l      Fx:^V r   )r4   r/   _exact_ratio)r8   rQ   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   r4   r/   r  )r8   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   s   g | ]}t d dqS )rk   randomuniformr   r  r   r   r   
<listcomp>  r   z-ExactRatioTest.test_float.<locals>.<listcomp>rk   )r4   r/   r  range)r8   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.125r  z12.345)i	     z-1.98)ir   )r   r/   r  r4   )r8   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 ]`}t |t|fD ]N}||}t|}| ||d f | t|d | | t|d  qBq2d S )NINFc                   @   s   e Zd ZdS )z(ExactRatioTest.test_inf.<locals>.MyFloatNr+   r   r   r   r   MyFloat  s   r+  c                   @   s   e Zd ZdS )z*ExactRatioTest.test_inf.<locals>.MyDecimalNr+   r   r   r   r   	MyDecimal  s   r,  r   )	r   r   r/   r  r4   r   re   r   r%   )r8   r*  r+  r,  r   ro   r
   ratior   r   r   r     s    
zExactRatioTest.test_infc                 C   st   t d}G dd dt }|||fD ]J}t|}| t|d  | |d d  | t|d t| q$d S )NNANc                   @   s   e Zd ZdS )z.ExactRatioTest.test_float_nan.<locals>.MyFloatNr+   r   r   r   r   r+    s   r+  r   r   )	r   r/   r  re   r   r   assertIsr4   r   )r8   r.  r+  r   r-  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 ]J}t|}| t|d | | |d d  | t|d t| q4d S )Nr.  sNANc                   @   s   e Zd ZdS )z2ExactRatioTest.test_decimal_nan.<locals>.MyDecimalNr+   r   r   r   r   r,    s   r,  r   r   )r   r/   r  re   r   r/  r4   r   )r8   r.  r1  r,  r   r-  r   r   r   test_decimal_nan  s    
zExactRatioTest.test_decimal_nanN)
r,   r-   r.   r  r  r'  r)  r   r0  r2  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S )DecimalToRatioTestc                 C   s<   t d}| t||d f | t| | d f d S )Nr*  )r   r4   r/   r  )r8   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 )Nr.  r1  )r   r/   r  re   r   r/  )r8   r   r%  r&  r   r   r   r     s    zDecimalToRatioTest.test_nanc                 C   sl   t dt dg}|D ]R}t|\}}| |d | |d t| \}}| |d | |d qd S )Nz	9.8765e12z
9.8765e-12r   )r   r/   r  assertGreaterEqualr	  ZassertLessEqual)r8   Znumbersr   r%  r&  r   r   r   	test_sign  s    zDecimalToRatioTest.test_signc                 C   s   t td}| |d d S )Nz0.1234)ii    r/   r  r   r4   r8   tr   r   r   test_negative_exponent,  s    z)DecimalToRatioTest.test_negative_exponentc                 C   s   t td}| |d d S )Nz1.234e7)i K r   r8  r9  r   r   r   test_positive_exponent1  s    z)DecimalToRatioTest.test_positive_exponentc                 C   s8   t td}| |d t td}| |d d S )NZ1e2)rk   r   z1.47e5)i8> r   r8  r9  r   r   r   test_regression_205366  s    z(DecimalToRatioTest.test_regression_20536N)	r,   r-   r.   r4  r   r6  r;  r<  r=  r   r   r   r   r3    s   
r3  c                   @   s$   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 )Nri   r   r}   r   5.5)r   r   re   r/   	_isfiniter{   r   r   r   test_finiteB  s    zIsFiniteTest.test_finitec                 C   s*   t dtdfD ]}| t| qd S r   r   r   r   r/   r@  r{   r   r   r   r4  G  s    zIsFiniteTest.test_infinityc                 C   s0   t dtdtdfD ]}| t| qd S Nr   r.  r1  rB  r{   r   r   r   r   L  s    zIsFiniteTest.test_nanN)r,   r-   r.   rA  r4  r   r   r   r   r   r>  ?  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                   @   s   e Zd ZdS )z%CoerceTest.test_bool.<locals>.MyClassNr+   r   r   r   r   MyClassm  r   rE  )rl   r   r   r   r/  r/   _coercebool)r8   TrE  r   r   r   	test_boolg  s    zCoerceTest.test_boolc                 C   s,   |  t||| |  t||| d S r@   )r/  r/   rF  r8   ABr   r   r   assertCoerceTop  s    zCoerceTest.assertCoerceToc                 C   sT   |  || G dd d|}|  || G dd d|}|  || |  || d S )Nc                   @   s   e Zd ZdS )z/CoerceTest.check_coerce_to.<locals>.SubclassOfANr+   r   r   r   r   SubclassOfAz  r   rN  c                   @   s   e Zd ZdS )z/CoerceTest.check_coerce_to.<locals>.SubclassOfBNr+   r   r   r   r   SubclassOfB}  r   rO  )rM  )r8   rK  rL  rN  rO  r   r   r   check_coerce_tou  s    zCoerceTest.check_coerce_toc                 C   s,   |  ttj||f |  ttj||f d S r@   )r   	TypeErrorr/   rF  rJ  r   r   r   assertCoerceRaises  s    zCoerceTest.assertCoerceRaisesc                 C   s   |  t||| G dd d|}G dd d|}G dd d|}|||fD ]}| || qN| || | || | || d S )Nc                   @   s   e Zd ZdS )z*CoerceTest.check_type_coercions.<locals>.UNr+   r   r   r   r   U  r   rS  c                   @   s   e Zd ZdS )z*CoerceTest.check_type_coercions.<locals>.VNr+   r   r   r   r   V  r   rT  c                   @   s   e Zd ZdS )z*CoerceTest.check_type_coercions.<locals>.WNr+   r   r   r   r   W  r   rU  )r/  r/   rF  rM  rR  )r8   rH  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 r@   )rW  rl   r   r   r   rP  )r8   rV  r   r   r   r    s    
zCoerceTest.test_intc                 C   s   |  t | tt d S r@   )rW  r   rP  r   r[   r   r   r   r    s    
zCoerceTest.test_fractionc                 C   s   |  t d S r@   )rW  r   r[   r   r   r   r)    s    zCoerceTest.test_decimalc                 C   s   |  t d S r@   )rW  r   r[   r   r   r   r'    s    zCoerceTest.test_floatc                 C   s:   t ttd ttfD ]"}ttttfD ]}| 	|| q"qd S r@   )
strlistr   tupledictrl   r   r   r   rR  )r8   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                   @   s   e Zd ZdS )z6CoerceTest.test_incompatible_types.<locals>.MySubclassNr+   r   r   r   r   
MySubclass  r   r]  )r   r   rR  r   )r8   rH  r]  r   r   r   test_incompatible_types  s    z"CoerceTest.test_incompatible_typesN)r,   r-   r.   rI  rM  rP  rR  rW  r  r  r)  r'  r\  r^  r   r   r   r   rD  R  s   	rD  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 r@   )r4   r/  r   )r8   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                   @   s   e Zd ZdS )z#ConvertTest.test_int.<locals>.MyIntNr+   r   r   r   r   MyInt  r   ra  r^   )r/   _convertr   rl   r`  )r8   r
   ra  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                       s   e Zd Z fddZ  ZS )z-ConvertTest.test_fraction.<locals>.MyFractionc                    s   |  t |S r@   	__class__super__truediv__r8   r   re  r   r   rg    s    z9ConvertTest.test_fraction.<locals>.MyFraction.__truediv__r,   r-   r.   rg  __classcell__r   r   ri  r   
MyFraction  s   rl  r      )r/   rb  r   r`  )r8   r
   rl  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 )	NrZ   r   g      c                       s   e Zd Z fddZ  ZS )z'ConvertTest.test_float.<locals>.MyFloatc                    s   |  t |S r@   rd  rh  ri  r   r   rg    s    z3ConvertTest.test_float.<locals>.MyFloat.__truediv__rj  r   r   ri  r   r+    s   r+  r~   r   r  )r/   rb  r   r   r`  )r8   r
   r+  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                       s   e Zd Z fddZ  ZS )z+ConvertTest.test_decimal.<locals>.MyDecimalc                    s   |  t |S r@   rd  rh  ri  r   r   rg    s    z7ConvertTest.test_decimal.<locals>.MyDecimal.__truediv__rj  r   r   ri  r   r,    s   r,  r   r   z-0.9375)r/   rb  r   r   r`  )r8   r
   r,  r   r   r   r)    s
    zConvertTest.test_decimalc                 C   sF   t dtdfD ]0}|| fD ] }t|t|}| || qqd S r   )r   r   r/   rb  r   r`  )r8   r*  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 rC  )r   r   r/   rb  r   re   r   )r8   r   r
   r   r   r   r     s    zConvertTest.test_nanc                 C   s:   |  t td t W d    n1 s,0    Y  d S r@   )r   rQ  r/   rb  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   ro  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   rY  r/   	_fail_negr4   )r8   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 rq  )r   r   r/   rs  r   r  next)r8   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 n0 tjyV } z|jd }W Y d }~nd }~0 0 | d | || d S )Nzbadness #%d'  i rZ   r   z(expected exception, but it didn't happen)	r  randintrw  r/   rs  r  rn   Zfailr4   )r8   rH   rR   r  r   r   r   test_error_msg  s     
zFailNegTest.test_error_msgN)r,   r-   r.   rv  rz  r}  r   r   r   r   rp    s   rp  c                   @   s   e Zd Zdd Zdd ZdS )FindLteqTestc              
   C   s   g dfddgdfddgdffD ]l\}}| j ||dF | t t|| W d    n1 sb0    Y  W d    q1 s0    Y  qd S )Nr   r   r}   r   r
   )subTestr   r$   r/   
_find_lteq)r8   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 ]L\}}}| j ||d$ | |t|| W d    q(1 sj0    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  r4   r/   r  )r8   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                   @   s   e Zd Zdd Zdd ZdS )FindRteqTestc              	   C   sb   dgddfddgddffD ]B\}}}|  t t||| W d    q1 sR0    Y  qd S )Nr   r   r}   r   )r   r$   r/   
_find_rteq)r8   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 ]R\}}}}| j |||d	& | |t||| W d    q.1 sv0    Y  q.d S )
Nr  r   r   r   r  r}   r  r   )r   r  r
   )r  r4   r/   r  )r8   r   r  r
   r  r   r   r   r  2  s    z%FindRteqTest.test_locate_successfullyNr  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S )UnivariateCommonMixinc                 C   s   |  t| j d S r@   r   rQ  funcr[   r   r   r   test_no_argsA  s    z"UnivariateCommonMixin.test_no_argsc                 C   s*   g dt g fD ]}| tj| j| qd S )Nr   )iterr   r/   r  r  )r8   emptyr   r   r   test_empty_dataE  s    z%UnivariateCommonMixin.test_empty_datac                 C   s(   t td}|t|kr$t| q|S Nr   rY  r#  sortedr  shuffler8   r$  r   r   r   prepare_dataJ  s    z"UnivariateCommonMixin.prepare_datac                 C   s0   |   }|d d  }| |}| ||d d S )Nzdata has been modified)r  r  ZassertListEqual)r8   r$  Zsavedr  r   r   r   test_no_inplace_modificationsQ  s    
z3UnivariateCommonMixin.test_no_inplace_modificationsc                 C   s:   g dd }|  |}t| |  |}| || d S )N)r   r   r}   r}   r}   r   ri      rk   )r  r  r  r4   r8   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 ]}| ||}| || qJd S )Nc                   @   s   e Zd ZdS )zBUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyListNr+   r   r   r   r   MyListj  s   r  c                   @   s   e Zd ZdS )zCUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyTupleNr+   r   r   r   r   MyTuplel  s   r  c                 S   s   dd | D S )Nc                 s   s   | ]
}|V  qd S r@   r   )r   objr   r   r   r   o  r   zXUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator.<locals>.<genexpr>r   r$  r   r   r   	generatorn  s    zEUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator)rY  rZ  r  r  r  r4   )r8   r  r  r  r$  r   kindrt   r   r   r   test_type_of_data_collectionh  s    
z2UnivariateCommonMixin.test_type_of_data_collectionc                 C   s0   t ddd}| t|}| | || d S N   r   r}   )r#  r  rY  r4   r8   r$  r   r   r   r   test_range_datav  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 r@   r  r   r   r   r   r    s    z*UnivariateCommonMixin.check_for_type_errorc                    sh   G dd dt }|  }| |}t |ttfD ]4  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                    s   t | t |S r@   r   rf  rg  rh  ri  r   r   rg    s    zLUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__truediv__c                    s   t | t |S r@   r   rf  __add__rh  ri  r   r   r    s    zHUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__add__)r,   r-   r.   rg  r  __radd__rk  r   r   ri  r   r+    s   r+  c                    s   g | ]} |qS r   r   r   r
   r  r   r   r"    r   zCUnivariateCommonMixin.test_type_of_data_element.<locals>.<listcomp>)r   r  r  r   r   r   r4   )r8   r+  rawr   r$  rt   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                    s   t | t |S r@   r  rh  ri  r   r   rg    s    zTUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__truediv__c                    s   t | t |S r@   )r   rf  __rtruediv__rh  ri  r   r   r    s    zUUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rtruediv__c                    s   t | t |S r@   )r   rf  __sub__rh  ri  r   r   r    s    zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__sub__c                    s   t | t |S r@   )r   rf  __rsub__rh  ri  r   r   r    s    zQUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rsub__c                    s   t | t |S r@   )r   rf  __pow__rh  ri  r   r   r    s    zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__pow__c                    s   t | t |S r@   r  rh  ri  r   r   r    s    zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__add__)r,   r-   r.   rg  r  r  r  r  r  r  rk  r   r   ri  r   r+    s   r+  )r   r   r   )r8   r+  r   r   r   #prepare_types_for_conservation_test  s    z7UnivariateTypeMixin.prepare_types_for_conservation_testc                    sF   |   }|  D ]0  fdd|D }| |}| t|  qd S )Nc                    s   g | ]} |qS r   r   r  r  r   r   r"    r   z<UnivariateTypeMixin.test_types_conserved.<locals>.<listcomp>)r  r  r  r/  r   )r8   r$  r   rt   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                   @   s   e Zd Zdd ZdS )TestSumCommonc                 C   s   dd }|| _ d S )Nc                  W   s   t j|  \}}}t ||S r@   )r/   _sumrF  )rn   rH  valuer   r   r   r   simplified_sum  s    z+TestSumCommon.setUp.<locals>.simplified_sum)r  )r8   r  r   r   r   setUp  s    zTestSumCommon.setUpN)r,   r-   r.   r  r   r   r   r   r    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 )TestSumc                 C   s   t j| _d S r@   )r/   r  r  r[   r   r   r   r    s    zTestSum.setUpc                 C   sp   g dt g fD ]\}| | |ttddf | | |dttddf | | |dttddf qd S )Nr   r   r   ffffff@)r  r4   r  rl   r   r   r  r   r   r   r    s    zTestSum.test_empty_datac                 C   sF   |  | g dttddf |  | g ddttddf d S )N)r   ri   r}   r  rv   r   <   r   )r   r   r}   r  r   r   i  ri   )r4   r  rl   r   r[   r   r   r   	test_ints  s    zTestSum.test_intsc                 C   sH   |  | dgd ttddf |  | g ddttddf d S )Nr   r        @)r   r   r   g      ?r   g      	@r   )r4   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   )r4   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   r4   r  r8   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   s   g | ]}t d dqS )r  r   r  r!  r   r   r   r"    r   z7TestSum.test_compare_with_math_fsum.<locals>.<listcomp>r   r   gؗҬ<r(   )r#  rJ   r   r  r   fsumr  r   r   r   test_compare_with_math_fsum  s    z#TestSum.test_compare_with_math_fsumc                 C   s|   dd t dD }| |d }| |d | |dd  | |d | |dd  | |td | |dd  d S )	Nc                 S   s   g | ]}t d dqS )r   r   r  r!  r   r   r   r"    r   z/TestSum.test_start_argument.<locals>.<listcomp>rk   r   rv   r   rg   g@xD)r#  r  r4   r   )r8   r$  r:  r   r   r   test_start_argument  s
    zTestSum.test_start_argumentc                 C   s.   |  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
  s    zTestSum.test_strings_failc                 C   s.   |  t| jg dd |  t| jg d d S )Nr     999)r   r   r}   r  r  r[   r   r   r   test_bytes_fail  s    zTestSum.test_bytes_failc                 C   s8   |  t| jddtdg |  t| jddgtd d S )Nr   rr  )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   r    s   r  c                   @   s   e Zd Zdd ZdS )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  rZ   g^,gV瞯<r  )r4   r/   r  r   r   r/  rJ   )r8   rH  r%  countr   r   r   test_torture  s    zSumTortureTest.test_tortureN)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S )SumSpecialValuesc                 C   sN   t tfD ]@}|d}td|dgd }| t|| | t| qd S )Nr   r   r   )	r   r   r/   r  r/  r   re   r   r   )r8   ro   r   rt   r   r   r   r   ,  s
    zSumSpecialValues.test_nanc                 C   s<   |  t| | t|t| | |dk|dk d S Nr   )re   r   r%   r/  r   r4   )r8   r
   r   r   r   r   check_infinity3  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   )r/   r  r  r8   r   rt   r   r   r   do_test_inf:  s    zSumSpecialValues.do_test_infc                 C   s$   t d}dD ]}| ||  qd S Nr   r   rZ   )r   r  r8   r   r   r   r   r   test_float_infB  s    zSumSpecialValues.test_float_infc                 C   s$   t d}dD ]}| ||  qd S r  )r   r  r  r   r   r   test_decimal_infG  s    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   r/   r  re   r   r   r  r   r   r   test_float_mismatched_infsL  s    z+SumSpecialValues.test_float_mismatched_infsc                 C   sd   t d}dd|d| dg}ttj* | tt|d  W d    n1 sV0    Y  d S r  )	r   decimallocalcontextZExtendedContextre   r   r   r/   r  r8   r   r$  r   r   r   3test_decimal_extendedcontext_mismatched_infs_to_nanR  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    n1 sN0    Y  d S r  )r   r  r  ZBasicContextr   InvalidOperationr/   r  r  r   r   r   0test_decimal_basiccontext_mismatched_infs_to_nanY  s    zASumSpecialValues.test_decimal_basiccontext_mismatched_infs_to_nanc                 C   s(   t d}d|dg}| tjtj| d S )Nr1  r   r   )r   r   r  r  r/   r  )r8   r1  r$  r   r   r   test_decimal_snan_raises`  s    
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                   @   s$   e Zd Zdd Zdd Zdd ZdS )AverageMixinc                 C   s6   dddt ddtdfD ]}| | |g| qd S )Nr   g     @E@g  X_yCr`      z0.28r   r   r4   r  r{   r   r   r   test_single_valuel  s    zAverageMixin.test_single_valuec                 C   s   dddt ddtdfS )N      @r^    7y!C=   C   z4.9712r   r   r[   r   r   r   'prepare_values_for_repeated_single_testq  s    z4AverageMixin.prepare_values_for_repeated_single_testc              
   C   sf   |   D ]X}dD ]N}| j||d, |g| }| | || W d    q1 sT0    Y  qqd S )Nr   ri   r   r  )r
   r  )r  r  r4   r  r8   r
   r  r$  r   r   r   test_repeated_single_valuet  s
    
z'AverageMixin.test_repeated_single_valueN)r,   r-   r.   r  r  r  r   r   r   r   r  i  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   s   t j| _d S r@   )r/   meanr  r[   r   r   r   r  ~  s    zTestMean.setUpc                 C   s   |  | g dd d S )N)r  r   r}   r  r   r4   r  r[   r   r   r   test_torture_pep  s    zTestMean.test_torture_pepc                 C   s(   g d}t | | | |d d S )N)r   r   r   r}   r}   r}   r   ri   ri   r  r   r   r   r   r   r~   g     @@r  r  r4   r  r  r   r   r   r    s    
zTestMean.test_intsc                 C   s(   g d}t | | | |d d S )N)g     @1@g     3@      4@g     5@g     5@g     @7@g      9@g     ;@g     6@r  r  r   r   r   r    s    
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   r  r  r4   r  r  r   r   r   r    s    "
zTestMean.test_decimalsc              	   C   sf   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   ri   r  r   r   i  i  r   r  r  r4   r  r8   r   r$  r   r   r   r    s    <
zTestMean.test_fractionsc                 C   s`   g d}t tfD ]J}dD ]@}|d| }||g }| |}| t| | || qqd S )Nr   r}   ri   r   r~   r  r   )r   r   r  re   r   r%   r4   )r8   r  r  r   r   r$  rt   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}   ri   z-inf)r   r  re   r   r   r8   r$  rt   r   r   r   test_mismatched_infs  s    
zTestMean.test_mismatched_infsc                 C   sF   g d}t tfD ]0}|d}||g }| |}| t| qd S )Nr  r   )r   r   r  re   r   r   )r8   r  r  r   r$  rt   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                    s   g | ]}|  qS r   r   r  cr   r   r"    r   z*TestMean.test_big_data.<locals>.<listcomp>r  r4   r8   r$  r   rt   r   r  r   test_big_data  s
    zTestMean.test_big_datac                 C   s:   dd t dD }| |}| |d }| || d S )Nc                 S   s   g | ]}t d dqS )r  ri   r  r!  r   r   r   r"    r   z.TestMean.test_doubled_data.<locals>.<listcomp>r   r   r#  r  rJ   r  r   r   r   test_doubled_data  s    
zTestMean.test_doubled_datac                 C   s    t d}| t|g| d S )NZ1e4)r   r4   r/   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 ]4}|  t|g| | |  t|g| | q"d S )Ngg      g       )r   r}   ri   r(  )r4   r/   r  )r8   bigZtinyr   r   r   r   test_regression_25177  s    zTestMean.test_regression_25177N)r,   r-   r.   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 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  ZS )TestHarmonicMeanc                 C   s   t j| _d S r@   )r/   Zharmonic_meanr  r[   r   r   r   r    s    zTestHarmonicMean.setUpc                    s   t   }|d |S r  )rf  r  remover8   rt  ri  r   r   r    s    

zTestHarmonicMean.prepare_datac                 C   s   dddt ddtdfS )Nr  r^   r  r  r  z4.125r  r[   r   r   r   r    s    z8TestHarmonicMean.prepare_values_for_repeated_single_testc                 C   s   g d}|  | |d d S )N)r   r   r   r   r  r  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    q1 sJ0    Y  qd S )NrZ   )r   rh   r}   )rt  )r/   r  r  r   r  )r8   excrt  r   r   r   test_negative_error  s    z$TestHarmonicMean.test_negative_errorc              
   C   s   dgg dg dg dfD ]d}| j |dD | t | | W d    n1 sV0    Y  W d    q1 st0    Y  qd S )Nz3.14)123)r   r  r}   4ri   )r  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   s(   g d}t | | | |d d S )N)r   r   r   r   r   r   g333333@r  r  r   r   r   r    s    
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   r  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#  r4   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 )Nr`   r   r  r   z0.10z0.20z1.68z0.32z5.94z2.75i iC )r   r4   r  r  r  r  r   r   r   test_decimals_exact  s    .

z$TestHarmonicMean.test_decimals_exactc              	   C   sf   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   ri   r  r   r   i|  i  r  r  r   r   r   r     s    <
zTestHarmonicMean.test_fractionsc                 C   s$   dt ddg}| | |d d S )Nrr  r   r   )r   r4   r  r  r   r   r   r   '  s    zTestHarmonicMean.test_infc                 C   s(   dt ddg}| t| | d S )Nrr  r   r   )r   re   r   r   r  r  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  r  r   r   r"  6  r   z>TestHarmonicMean.test_multiply_data_points.<locals>.<listcomp>r  r  r   r  r   test_multiply_data_points1  s
    z*TestHarmonicMean.test_multiply_data_pointsc                 C   s:   dd t dD }| |}| |d }| || d S )Nc                 S   s   g | ]}t d dqS )r   ri   r  r!  r   r   r   r"  ;  r   z6TestHarmonicMean.test_doubled_data.<locals>.<listcomp>r   r   r  r  r   r   r   r  9  s    
z"TestHarmonicMean.test_doubled_data)r,   r-   r.   r  r  r  r  r  r  r  r   r"  r#  r  r   r   r%  r  rk  r   r   ri  r   r    s   r  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   s   t j| _d S r@   r/   medianr  r[   r   r   r   r  C  s    zTestMedian.setUpc                    s(   t   }t|d dkr$|d |S )Nr   r   )rf  r  rK   r   r  ri  r   r   r  F  s    

zTestMedian.prepare_datac                 C   s   g d}|  | |d d S )Nr   r   r}   r   ri   r  r  r  r  r   r   r   test_even_intsM  s    zTestMedian.test_even_intsc                 C   s   g d}|  | |d d S )N)r   r   r}   r   ri   r  r~   r   r  r  r   r   r   test_odd_intsS  s    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   ri   r  r  r   r   r   test_odd_fractionsY  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   ri   r  r  r  r   r   r   test_even_fractionsa  s    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.8r  r  r   r   r   test_odd_decimalsi  s    "
zTestMedian.test_odd_decimalsc                 C   sP   t }|d|d|d|d|d|dg}t| | | ||d d S )Nz1.2r/  r0  r1  r2  r3  z3.65r  r  r   r   r   test_even_decimalsq  s    (
zTestMedian.test_even_decimals)r,   r-   r.   r  r  r*  r+  r,  r.  r4  r5  rk  r   r   ri  r   r&  A  s   r&  c                   @   s   e Zd Zdd Zdd ZdS )TestMedianDataTypec                 C   s   t j| _d S r@   r'  r[   r   r   r   r  |  s    zTestMedianDataType.setUpc                 C   s(   t td}|t|kr$t| q|S )Nr`   r  r  r   r   r   r    s    zTestMedianDataType.prepare_dataN)r,   r-   r.   r  r  r   r   r   r   r6  z  s   r6  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMedianLowc                 C   s   t j| _d S r@   )r/   Z
median_lowr  r[   r   r   r   r    s    zTestMedianLow.setUpc                 C   s   g d}|  | |d d S )Nr)  r}   r  r  r   r   r   r*    s    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 r-  r  r  r   r   r   r.    s    4
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.6r  r  r   r   r   r5    s    (
z TestMedianLow.test_even_decimalsNr,   r-   r.   r  r*  r.  r5  r   r   r   r   r7    s   r7  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMedianHighc                 C   s   t j| _d S r@   )r/   Zmedian_highr  r[   r   r   r   r    s    zTestMedianHigh.setUpc                 C   s   g d}|  | |d d S )Nr)  r   r  r  r   r   r   r*    s    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 r-  r  r  r   r   r   r.    s    4
z"TestMedianHigh.test_even_fractionsc                 C   sP   t }|d|d|d|d|d|dg}t| | | ||d d S r8  r  r  r   r   r   r5    s    (
z!TestMedianHigh.test_even_decimalsNr9  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S )TestMedianGroupedc                 C   s   t j| _d S r@   )r/   Zmedian_groupedr  r[   r   r   r   r    s    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   rm     r<  r<  r`   r`   r<  )r   rm  r<  r<  r<  r<  r`   g     +@)ri   r   r   r`   r  r  r  r     r=  r   ri   g     `3@)r      r>  r>  r>  r  r  r     r?  r?     r@        r   g4@:0yE>r'   r4   r  rJ   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)
ri   r   r   r`   r  r  r  r=  r=  r   ri   g*3@rC  rD  )r   r}   r   r   r   ri   g["8@)r   r}   r}   r   r   r   ri   ri   ri   ri   r  r  r	  )
r}   r   r   r   ri   ri   ri   ri   r  r        @)rJ   r  r4   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 )Ng333333@D   g ޗCr   r   z32.9714r  )r   r   r4   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 )Nri   r   r~   rm  r^         @r  r  r   r   r   r,    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 )Nri   r   r~   rm  r^         
@r  r  r   r   r   r.    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      @r  r  r   r   r   r4     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?  rL  rM  rN        @g      @r  r  r   r   r   r5    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   rJ  rJ  rK  r  r   r   g      @)rP  r   r   r   r   r   rJ  rJ  rK  r  r   g["8@rC  rD  )   rQ       rS  rS  rS    rT  ,  @  iT  r  g     p@rE  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) rX  rX  )r   r   r   r  rX  r   r  )r8   r$  intervalr   r   r   test_data_type_error  s    z&TestMedianGrouped.test_data_type_errorN)r,   r-   r.   r  rF  rH  r  r,  r.  r4  r5  rW  rZ  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S )TestModec                 C   s   t j| _d S r@   )r/   moder  r[   r   r   r   r  1  s    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  4  s    zTestMode.prepare_datac                 C   s"   t ddd}| | |d d S r  r!  r  r   r   r   r  9  s    zTestMode.test_range_datac                 C   s4   d}|  | |d d }|  | |d d S )NZabcbdbr   zfe fi fo fum fi fifi)r4   r  r   r  r   r   r   test_nominal_data>  s    zTestMode.test_nominal_datac                 C   sD   t td}tdD ]*}||g }t| | | || qd S r  rY  r#  r  r  r4   r  )r8   r$  rQ   r   r   r   r   test_discrete_dataE  s
    

zTestMode.test_discrete_datac                 C   s   g d}|  | |d d S )N)r   r   r   r   r   r   r}   r   ri   r  r  r  r  r   r   r~   r~   r   r  r  r   r   r   test_bimodal_dataM  s    zTestMode.test_bimodal_datac                 C   s"   t td}| | |d d S )Nr   r   )rY  r#  r4   r  r  r   r   r   test_unique_dataT  s    zTestMode.test_unique_datac                 C   s   |  t| jd  d S r@   r  r[   r   r   r   test_none_dataZ  s    zTestMode.test_none_datac                 C   s$   t g d}| | |d d S )N)r   r   r   r   r   )rA   Counterr4   r  r  r   r   r   test_counter_dataa  s    zTestMode.test_counter_dataN)r,   r-   r.   r  r  r  r^  r`  ra  rb  rc  re  r   r   r   r   r[  /  s   r[  c                   @   s   e Zd Zdd ZdS )TestMultiModec                 C   s@   t j}| |ddg | |dg d | |dg  d S )NZaabbbbbbbbccr   Zaabbbbccddddeeffffgg)r   r   r   rX  )r/   	multimoder4   )r8   rg  r   r   r   test_basicsk  s    zTestMultiMode.test_basicsN)r,   r-   r.   rh  r   r   r   r   rf  i  s   rf  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	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 ]2\}}}||}| t|t| | ||| qd S )Nr  r         @      @floats3.54.05.25decimalsr   r   r   r   r   	fractions)TFTTF333333?Zbooleansr  mixed types)rj  rl  rZ  iterator)	r/   fmeanr   r   r  r/  r   r   r4   )r8   rv  r   r   r$  expected_meanr  actual_meanr   r   r   rh  t  s     	zTestFMean.test_basicsc                 C   sL  t j}t j}| | |g  W d    n1 s40    Y  | | |tg  W d    n1 sj0    Y  | t |d  W d    n1 s0    Y  | t |g d W d    n1 s0    Y  | t |  W d    n1 s0    Y  | t |g dd W d    n1 s>0    Y  d S )Nr   Nr  r   r  r  F   )r/   rv  r  r   r  rQ  )r8   rv  r  r   r   r   test_error_cases  s    &*&*&zTestFMean.test_error_casesc                 C   s   t j}td}td}| t|d|gd | t|||gd | t|d|gd | t ||| g W d    n1 s0    Y  d S NZNanInfr   r   znan and infinityZinfinity)	r/   rv  r   re   r   r   r%   r   r$   )r8   rv  NaNr~  r   r   r   test_special_values  s    zTestFMean.test_special_valuesN)r,   r-   r.   rh  r|  r  r   r   r   r   ri  r  s   ri  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    s    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}   ri   r`   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{  rY   gؗҌ<rD  r   )r  rJ   r5  r  r   r   r   test_domain_error_regression  s    

z/VarianceStdevMixin.test_domain_error_regressionc                    s>   g d}|  |}d  fdd|D }| |  || d S )N)
g{Gz?gRQ?g
ףp=
?gRQ @gp=
ף@gQ	@rG  gQ@gGz@gQ@g     j@c                    s   g | ]}|  qS r   r   r  shiftr   r   r"    r   z6VarianceStdevMixin.test_shift_data.<locals>.<listcomp>)r  rJ   r8   r  r   r$  r   r  r   test_shift_data  s
    
z"VarianceStdevMixin.test_shift_datac                    s>   g d}|  |}d  fdd|D }| |  || d S )N)
r   r}   r}   r   ri   r   r~   r   r   r   i ʚ;c                    s   g | ]}|  qS r   r   r  r  r   r   r"    r   z<VarianceStdevMixin.test_shift_data_exact.<locals>.<listcomp>r  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   s   g | ]}t d dqS )r  r   r  r!  r   r   r   r"    r   z:VarianceStdevMixin.test_iter_list_same.<locals>.<listcomp>r   )r#  r  r4   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                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestPVariancec                 C   s   t j| _d S r@   )r/   	pvariancer  r[   r   r   r   r    s    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   s"   g d}d}|  | || d S )Nr   r   rm  r   g     6@r  r8   r$  exactr   r   r   r    s    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  r4   assertIsInstancer8   r   r$  r  rt   r   r   r   r    s    $

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  r4   r  r8   r   r$  r  rt   r   r   r   r     s    
zTestPVariance.test_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S )TestVariancec                 C   s   t j| _d S r@   )r/   variancer  r[   r   r   r   r    s    zTestVariance.setUpc                 C   s6   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   r/   r  r  r{   r   r   r   r    s    zTestVariance.test_single_valuec                 C   s"   g d}d}|  | || d S )Nr  r   r  r  r   r   r   r    s    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    s    $

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  #  s    
zTestVariance.test_decimalsc                 C   s0   d}|  | |d |  | j|ddd d S )Nr   rr  r   rr  xbarr   r  r  r   r   r   test_center_not_at_mean,  s    z$TestVariance.test_center_not_at_meanN)	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 )
TestPStdevc                 C   s   t j| _d S r@   )r/   Zpstdevr  r[   r   r   r   r  3  s    zTestPStdev.setUpc                 C   s8   dd t dD }tt|}| | || d S )Nc                 S   s   g | ]}t d dqS )ir@  r  r!  r   r   r   r"  8  r   z7TestPStdev.test_compare_to_variance.<locals>.<listcomp>r   )r#  r   sqrtr/   r  r4   r  r  r   r   r   test_compare_to_variance6  s    z#TestPStdev.test_compare_to_variancec                 C   s0   d}|  | |d |  | j|ddd d S )N)r}   r  r   r   r   r   )murO  r  r  r   r   r   r  <  s    z"TestPStdev.test_center_not_at_meanN)r,   r-   r.   r  r  r  r   r   r   r   r  1  s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestStdevc                 C   s   t j| _d S r@   )r/   stdevr  r[   r   r   r   r  D  s    zTestStdev.setUpc                 C   s6   dddt ddtdfD ]}| tj| j|g qd S )NQ   gHzwi@g  f7?+Bri   r   z35.719r  r{   r   r   r   r  G  s    zTestStdev.test_single_valuec                 C   s8   dd t dD }tt|}| | || d S )Nc                 S   s   g | ]}t d dqS )rh   r~   r  r!  r   r   r   r"  N  r   z6TestStdev.test_compare_to_variance.<locals>.<listcomp>r   )r#  r   r  r/   r  r4   r  r  r   r   r   r  L  s    z"TestStdev.test_compare_to_variancec                 C   s   d}|  | j|ddd d S )Nr  rr  r  r   r  r  r   r   r   r  R  s    z!TestStdev.test_center_not_at_meanN)r,   r-   r.   r  r  r  r  r   r   r   r   r  B  s   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )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 ]B}ttt	|t	dt
|  }||}| t|t| qd S )N)r_   r@  r         B@r   g      "@g      @g     1@l   ; r   rk   r   r{  r  r}   r  )r   r^   rm  ri   x   r   c                 S   s   g | ]}t d qS )      I@r  expovariater   rQ   r   r   r   r"  f  r   z1TestGeometricMean.test_basics.<locals>.<listcomp>c                 S   s   g | ]}t d dqS )r   rJ  )r  lognormvariater  r   r   r   r"  g  r     c                 S   s   g | ]}t d ddqS )r    i  )r  
triangularr  r   r   r   r"  h  r   r  )r/   geometric_meanassertAlmostEqualr  seedr#  r   prodr   r   rK   re   iscloser   )r8   r  rngZ
gm_decimalZgm_floatr   r   r   rh  X  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 ]2\}}||}| t|t| | j||dd qxd S )Ngd@rj  rm  rn  ro  rp  rq  r   r   r   r   r   rr  r  rt  )rj  rZ  ru  ri   Zplaces)	r/   r  r   r   r  r/  r   r   r  )r8   r  r   r   rw  r$  r  rx  r   r   r   test_various_input_typesn  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rY   )r/   r  re   r   r  r   r%   assertNotEqual)r8   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 s40    Y  | | |g d W d    n1 sj0    Y  | | |g d W d    n1 s0    Y  | | |tg  W d    n1 s0    Y  | t |d  W d    n1 s
0    Y  | t |g d W d    n1 sB0    Y  | t |  W d    n1 st0    Y  | t |g dd W d    n1 s0    Y  d S )N)r  rY   rk  )r  g      rk  ry  rz  r{  )r/   r  r  r   r  rQ  )r8   r  r  r   r   r   r|    s$    &***(,&z"TestGeometricMean.test_error_casesc                 C   s   t j}td}td}| t|d|gd | t|||gd | t|d|gd | t ||| g W d    n1 s0    Y  d S r}  )	r/   r  r   re   r   r   r%   r   r$   )r8   r  r  r~  r   r   r   r    s    z%TestGeometricMean.test_special_valuesN)r,   r-   r.   rh  r  r  r|  r  r   r   r   r   r  V  s
   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )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 ]P\}}| ||||d | t|||d|d  tttfD ]D |t	 ||d}| 
 fdd|D  | |tt	 | qt|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  qztdd!D ]8}tjtd"|d#}||\}}}| |t | qd S )$N)r  r(     rV  i^  r   r        @o@r}         i@      t@r   )      d@r       t@ri   )      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@r`   )g      R@g      Z@r  g      e@r  r        n@g     p@r  r  g     t@r  g     @v@g      w@r   c                 3   s   | ]}t t| kV  qd S r@   allr   r  Zdatatyper   r   r     r   z4TestQuantiles.test_specific_cases.<locals>.<genexpr>r   rZ   rh   	inclusiver   methodc                 S   s   d|  d S Nr  g3333J@r   r	   r   r   r   r     s    z,TestQuantiles.test_specific_cases.<locals>.fc                 s   s   | ]\}}t ||V  qd S r@   r   r  r   rR   r   r   r   r   r     r   r  rk   k)r/   	quantilesr  r  r4   rK   r   r   r   r   re   rY  r  r  rO   r#  choicesr(  )r8   r  r$  r   r   rt   ZsdatalohiZpadded_datar   expactr  q1q2q3r   r  r   test_specific_cases  sN    









 z!TestQuantiles.test_specific_casesc                    s0  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d | t|||dd|d  tttfD ]F |t	 ||dd}| 
 fdd|D  | |tt	 | qdd }tt	||}|t	|||dd}| 
tdd t||D  qz| |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)rk   r(  i  i   r   r        r@r}   r        y@r   )     e@r       @@ri   )r  r       v@     @r  )     b@r  r  r       @r   )g     0a@   r  r  g     pw@r  g     P@r   )	g     @`@r  g     g@r  r  r  g     {@r  g     @@r   )g     @_@r  r  r  r  r  r  r  r  r  g     @r`   )r  g     a@r  g     f@r  r  g     q@r  r  r  g      ~@r  g      @g     @r  r  c                 3   s   | ]}t t| kV  qd S r@   r  r  r  r   r   r   	  r   z>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>c                 S   s   d|  d S r  r   r	   r   r   r   r   	  s    z6TestQuantiles.test_specific_cases_inclusive.<locals>.fc                 s   s   | ]\}}t ||V  qd S r@   r  r  r   r   r   r   	  r   r   rk   )	      $@r   g      >@g      D@r  g      N@g     Q@r  g     V@r   c                 S   s   g | ]}t d qS )r{  )r  	randranger  r   r   r   r"  	  r   z?TestQuantiles.test_specific_cases_inclusive.<locals>.<listcomp>i      r  r  r  r  )r/   r  r  r  r4   rK   r   r   r   r   re   rY  r  rO   r#  r  rd   r   r  r(  )r8   r  r$  r   r   rt   r   r  r  r   r  r  r  r  r   r  r   test_specific_cases_inclusive  sP    








 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  r  )r/   r  r#  r4   )r8   r  r   r$  r   r   r   test_equal_inputs	  s    
zTestQuantiles.test_equal_inputsc              	      s   t j}d}dd t|D  tt |kr> td q   dD ]:}|| }| 	 fdd| |dD t
t||| qJdD ]\}|| || d	 h} fd
d| |dD }dd t||d	d  D }| ||k qd S )Nr{  c                 S   s   g | ]}t d qS )皙?r  r  r   r   r   r"  (	  r   z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>r  )r   r   ri   r   r  r   rk   r(  r  r   r  r7  r{  c                    s   g | ]}t   |qS r   bisectr   qr  r   r   r"  1	  r   r  )
rm  r  ;   m      i;  i  is  i  i)&  r   c                    s   g | ]}t   |qS r   r  r  r  r   r   r"  8	  r   c                 S   s   h | ]\}}|| qS r   r   )r   pr  r   r   r   	<setcomp>9	  r   z8TestQuantiles.test_equal_sized_groups.<locals>.<setcomp>)r/   r  r#  rK   setr   r  r  sortr4   rY  rO   re   )r8   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 s20    Y  | t" |g dddd W d    n1 sn0    Y  | t |g dd W d    n1 s0    Y  | |  |g ddd W d    n1 s0    Y  | |  |g ddd W d    n1 s0    Y  | t  |g ddd W d    n1 sX0    Y  | t  |g ddd	 W d    n1 s0    Y  | | |d
gdd W d    n1 s0    Y  | t  |g ddd W d    n1 s
0    Y  d S )N)r   r  r   rm  r   r  r   rZ   r   Xr  r   )r   Nr   )r/   r  r  r   rQ  r$   )r8   r  r  r   r   r   r|  <	  s(    $0,.000.zTestQuantiles.test_error_casesN)r,   r-   r.   r  r  r  r  r|  r   r   r   r   r    s
   66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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%S )&TestNormalDistc                 C   sV   | j dd}| t t| W d    n1 s60    Y  | t|jd d S )NrU  r   )Z_muZ_sigma)r   
NormalDistr   rQ  varsr4   rZ  	__slots__r8   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 s0    Y  G dd d| j j}|d	d
}| t|| d S )Nr  r^   i!  r   r   ic                   @   s   e Zd ZdS )zGTestNormalDist.test_instantiation_and_attributes.<locals>.NewNormalDistNr+   r   r   r   r   NewNormalDists	  s   r  r(  ri   )	r   r  r4   r  r  r  r   r  r   )r8   r  r  nndr   r   r   !test_instantiation_and_attributesb	  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 s0    Y  | | j j |dg W d    n1 s0    Y  G dd d|}||}| t|| d S )N)`   rj   Z   r   n   r  r~   r   c                   @   s   e Zd ZdS )zBTestNormalDist.test_alternative_constructor.<locals>.NewNormalDistNr+   r   r   r   r   r  	  s   r  )	r   r  r4   Zfrom_samplesrZ  r  r   r  r   )r8   r  r$  r  r  r   r   r   test_alternative_constructorx	  s    (*
z+TestNormalDist.test_alternative_constructorc                 C   s   | j j}d\}}|||}d}||}| t|| | ttt|th | j 	|}| 
||d  |  ko||d  kn   d}|j|dd}|j|dd}	|j|dd}
|j|dd}| ||
 | |	| | ||	 d S )N)r{  rJ  r   r   rk   zhappiness and joy)r  ztrouble and despair)r   r  Zsamplesr4   rK   r  r   r   r   r  re   r  )r8   r  r  sigmar  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|  qJd}tddD ]6}||| || | }| j|||d	d
 q~| }tg dD ]>\}}| j||d |d	d
 | j|| d |d	d
 q|dd}	| | j j	 |	d W d    n1 sB0    Y  | 
|tdd | 
|tdd | t|td d S )Nrk   r`   r  r   r   g      P?r  r$  r   r  )2+ݓ?r  r  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   -InfrY   r~  r  )r   r  Z
assertLesspdfr#  r  cdfrN   r   r  r4   r   re   r   r   )
r8   r  r  rQ   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
 qn|dd}| | j j |	d W d    n1 s0    Y  |  	tdd |  	tdd | t 	td d S )Nrk   r`   c                    s   g | ]}  |qS r   )r  r  r  r   r   r"  	  r   z+TestNormalDist.test_cdf.<locals>.<listcomp>r   r(  r   ))rY   r   )r   gqZ ?)r   gE_A?)gQ?gGɫs?)g(\?g؞Y?)gQ?g9#?)gHzG?g&S?)rs  gMbX9?)gQ?gT㥛 ?)g?g??)gffffff @g_xZ?)gQ@g#0?)g)\(@gu<f2?)gףp=
@gVe?)gHzG@g9?ri   r  r   r   r  r  rY   r~  r  )r   r  r#  r4   r  r   r   r   r  r  r  r   r  re   r   r   )r8   r  Zcdfsr  zZcum_probr  r   r  r   test_cdf	  s     

(zTestNormalDist.test_cdfc                 C   s  | j j}|dd}| |d|j | }dddd}| D ]b\}}t|dd	D ]L\}}|d
|   }	| j||	 |dd d|	 }	| j||	|dd qTq@| |dddd d}
td|
D ]$}	|	|
 }	| |	||	|	 qtddD ]F}d|  }	| |	||	|	 d|	 }	| |	||	|	 qtdD ]"}| j||	||dd qJ| 
| j j |d W d    n1 s0    Y  | 
| j j |d W d    n1 s0    Y  | 
| j j |d W d    n1 s0    Y  | 
| j j |d W d    n1 sL0    Y  | 
| j j$ |dd}|d W d    n1 s0    Y  | t|td d S )Nrk   r`   r   )
rY   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   rn  r   g>?g  E@i   3   rr  r(  ri   rY   r   g?r   r  )r   r  r4   Zinv_cdfr  itemsrN   r  r#  r  r   r  re   r   r   r   )r8   r  Ziqr  ppr   rowr  r
   r  r   rR   r   r   r   test_inv_cdf	  sL    

 ****
*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 ]2\}}|j|d	}| td
d t||D  q0d S )Nr   r   rY   r}   gǘۿgǘ?r   )g/$rY   g/$?r  c                 s   s"   | ]\}}t j||d dV  qdS )r   )Zabs_tolNr  r  r   r   r   r   3
  s   z0TestNormalDist.test_quantiles.<locals>.<genexpr>)r   r  r  re   r  rO   )r8   r  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 ]6\}}}| j|||dd | j|||dd q4d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 ]B\}}| j|||||d	d | j|||||d	d q|| }| t |  W d    n1 s0    Y  | t ||| W d    n1 s(0    Y  | t |d  W d    n1 s^0    Y  | | j j  ||dd W d    n1 s0    Y  | | j j  |dd| W d    n1 s0    Y  d S ) NrY   rr  r   gɎ@?gM-[닄?r   r  i    ri   )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 )Nrr  c                    s   g | ]}|   qS r   r   r  r  r  r   r   r"  I
  r   zHTestNormalDist.test_overlap.<locals>.overlap_numeric.<locals>.<listcomp>)
r   r  r  r   r  r#  rY  r   r  rd   )r  r  r  r  r  centerwidthZx_arrZxpZypr  r   r   r   overlap_numericB
  s    z4TestNormalDist.test_overlap.<locals>.overlap_numericr{  A   r  rk   r`   r	  r  ir      r   r   gjt?g~jth?gjt?ga2U0*3?gMbX?r   r   )r   r  r  Zoverlapr   rQ  r  )r8   r  ZX1ZX2Zpublished_resultr#  r  r   r   r   test_overlap6
  sF     (,*0zTestNormalDist.test_overlapc                 C   s(  | j j}|dd}| |dd | |dd | |dd | t |  W d    n1 sp0    Y  | t |dd W d    n1 s0    Y  | t |d  W d    n1 s0    Y  | | j j  |dd	d W d    n1 s0    Y  d S )
Nrk   r`      gffffff@:   gffffffrY   r   r   )r   r  r4   Zzscorer   rQ  r  )r8   r  r  r   r   r   test_zscoreu
  s    
&*(zTestNormalDist.test_zscorec                 C   sX   | j dd}| |jd | |jd | |jd | |jd | |jd d S )Nrk   r`      )r   r  r4   r  r(  r\  r  r  )r8   r  r   r   r   test_properties
  s    zTestNormalDist.test_propertiesc                 C   sL   | j j}|dd}|dd}| || |dd | || |dd d S )Nrk   r   rn  ri      rm  r  )r   r  r4   r8   r  r  r  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    n1 s0    Y  d S )Nrk   r`   r   r  r	  r  ir   r%  r   )r   r  r4   r   rQ  )r8   r  r  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 )Nrk   r   )r   r  ZassertIsNotr4   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                   @   s   e Zd Zdd ZdS )z'TestNormalDist.test_equality.<locals>.Ac                 S   s   dS r  r   rh  r   r   r   __eq__
  s    z.TestNormalDist.test_equality.<locals>.A.__eq__N)r,   r-   r.   r1  r   r   r   r   rK  
  s   rK  r   c                       s   e Zd Z fddZ  ZS )z5TestNormalDist.test_equality.<locals>.SizedNormalDistc                    s   t  || || _d S r@   )rf  __init__r   )r8   r  r  r   ri  r   r   r2  
  s    z>TestNormalDist.test_equality.<locals>.SizedNormalDist.__init__)r,   r-   r.   r2  rk  r   r   ri  r   SizedNormalDist
  s   r3  rk   r`   9   c                   @   s   e Zd Zdd ZdS )z3TestNormalDist.test_equality.<locals>.LognormalDistc                 S   s   || _ || _d S r@   )r  r  )r8   r  r  r   r   r   r2  
  s    z<TestNormalDist.test_equality.<locals>.LognormalDist.__init__N)r,   r-   r.   r2  r   r   r   r   LognormalDist
  s   r5  )r   r  r  r4   r1  NotImplemented)r8   r  nd1nd2nd3Znd4Znd5Znd6rK  r   r3  sr5  Zlndr  r   r   r   test_equality
  s2    






zTestNormalDist.test_equalityc                 C   sZ   | j dd}t|}| || t|}| || tt|}| || d S )N     B@     @)r   r  copyr4   deepcopypickleloadsdumps)r8   r  r7  r8  r9  r   r   r   test_pickle_and_copy
  s    

z#TestNormalDist.test_pickle_and_copyc                 C   sH   | j j}|dd|dd|dd|dd|ddh}| t|d d S )Nrk   r`   r  g      .@r   rc  r}   )r   r  r4   rK   )r8   ZNDr:  r   r   r   test_hashability
  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   r  r4   reprr  r   r   r   	test_repr
  s    zTestNormalDist.test_reprN)r,   r-   r.   r  r  r
  r  r  r  r   Zskip_if_pgo_taskr  r  r&  r)  r+  r.  r/  r0  r;  rC  rD  rF  r   r   r   r   r  S	  s&   	'
@?,	r  c                   @   s    e Zd ZeZdd Zdd ZdS )TestNormalDistPythonc                 C   s   | j tjd< d S r2   r   r  modulesr[   r   r   r   r  
  s    zTestNormalDistPython.setUpc                 C   s   t tjd< d S r2   r/   r  rI  r[   r   r   r   tearDown
  s    zTestNormalDistPython.tearDownN)r,   r-   r.   r6   r   r  rK  r   r   r   r   rG  
  s   rG  r:   c                   @   s    e Zd ZeZdd Zdd ZdS )TestNormalDistCc                 C   s   | j tjd< d S r2   rH  r[   r   r   r   r  
  s    zTestNormalDistC.setUpc                 C   s   t tjd< d S r2   rJ  r[   r   r   r   rK     s    zTestNormalDistC.tearDownN)r,   r-   r.   r;   r   r  rK  r   r   r   r   rL  
  s   rL  c                 C   s   | t  |S r@   )ZaddTestsr  ZDocTestSuite)loaderZtestsignorer   r   r   
load_tests  s    rO  __main__)r"   r#   )Nr  rA   collections.abcr>  r  r  r   r@  r  r  r=   testr   r   rr  r   r/   r   r   r!   r)   r*   Zimport_fresh_moduler6   r;   r   r1   r?   rX   r]   rs   r   r   r   r   r   r   r  r  r  r3  r>  rD  r_  rp  r~  r  r  r  r  r  r  r  r  r  r  r&  r6  r7  r:  r;  r[  rf  ri  r  r  r  r  r  r  r  r  rG  r>   rL  rO  r,   mainr   r   r   r   <module>   s   
:+_
>@w-@4d>c'H@`d9r:	1B%'Y %   !	

