Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_statistics.cpython-39.opt-1.pyc

a

��gt��@sddZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlm
Z
ddlZdd�Zdd	�Zd
d�Zdzdd�ZGdd�d�Ze
jddgd�Ze
jddgd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGd d!�d!ej�Z Gd"d#�d#ej�Z!Gd$d%�d%ej�Z"Gd&d'�d'ej�Z#Gd(d)�d)ej�Z$Gd*d+�d+ej�Z%Gd,d-�d-ej�Z&Gd.d/�d/ej�Z'Gd0d1�d1ej�Z(Gd2d3�d3ej�Z)Gd4d5�d5ej�Z*Gd6d7�d7ej�Z+Gd8d9�d9ej�Z,Gd:d;�d;ej�Z-Gd<d=�d=ej�Z.Gd>d?�d?ej�Z/Gd@dA�dA�Z0GdBdC�dC�Z1GdDdE�dEe0e1�Z2GdFdG�dGe�Z3GdHdI�dIe�Z4GdJdK�dKe�Z5GdLdM�dMe0�Z6GdNdO�dOee6e1�Z7GdPdQ�dQee6e1�Z8GdRdS�dSee6�Z9GdTdU�dUee1�Z:GdVdW�dWe9e1�Z;GdXdY�dYe9e1�Z<GdZd[�d[e9�Z=Gd\d]�d]ee6e1�Z>Gd^d_�d_ej�Z?Gd`da�daej�Z@Gdbdc�dce0�ZAGddde�deeAee1�ZBGdfdg�dgeAee1�ZCGdhdi�dieAe�ZDGdjdk�dkeAe�ZEGdldm�dmej�ZFGdndo�doej�ZGGdpdq�dq�ZHGdrds�dsejeH�ZIe�Jedt�Gdudv�dvejeH��ZKdwdx�ZLeMdyk�r`e�N�dS){z_Test suite for statistics module, including helper NumericTestCase and
approx_equal function.

�N)�support)�Decimal��FractioncCst�d|�S)z:Return -1.0 for negatives, including -0.0, otherwise +1.0.�)�math�copysign��x�r�0/usr/local/lib/python3.9/test/test_statistics.py�signsr
cCsZt|�t|�urdSt|t�r2t�|�o0t�|�S|��d}|��d}||koX|dvS)a�Return True if a and b are both the same kind of NAN.

    >>> _nan_equal(Decimal('NAN'), Decimal('NAN'))
    True
    >>> _nan_equal(Decimal('sNAN'), Decimal('sNAN'))
    True
    >>> _nan_equal(Decimal('NAN'), Decimal('sNAN'))
    False
    >>> _nan_equal(Decimal(42), Decimal('NAN'))
    False

    >>> _nan_equal(float('NAN'), float('NAN'))
    True
    >>> _nan_equal(float('NAN'), 0.5)
    False

    >>> _nan_equal(float('NAN'), Decimal('NAN'))
    False

    NAN payloads are not compared.
    F�)�n�N)�type�
isinstance�floatr�isnanZas_tuple)�a�bZaexpZbexprrr�
_nan_equal"s
rcCs:tt|�t|��}t||�}|r*||ntd�}||fS)z�Return the absolute and relative errors between two numbers.

    >>> _calc_errors(100, 75)
    (25, 0.25)
    >>> _calc_errors(100, 100)
    (0, 0.0)

    Returns the (absolute error, relative error) between the two arguments.
    �inf)�max�absr)�actual�expected�base�abs_err�rel_errrrr�_calc_errorsAs
r ��-���q=�H�����z>cCs�|dks|dkrtd��t�|�s,t�|�r0dS||kr<dSt�|�sPt�|�rTdSt||�}t||tt|�t|���}||kS)a�approx_equal(x, y [, tol [, rel]]) => True|False

    Return True if numbers x and y are approximately equal, to within some
    margin of error, otherwise return False. Numbers which compare equal
    will also compare approximately equal.

    x is approximately equal to y if the difference between them is less than
    an absolute error tol or a relative error rel, whichever is bigger.

    If given, both tol and rel must be finite, non-negative numbers. If not
    given, default values are tol=1e-12 and rel=1e-7.

    >>> approx_equal(1.2589, 1.2587, tol=0.0003, rel=0)
    True
    >>> approx_equal(1.2589, 1.2587, tol=0.0001, rel=0)
    False

    Absolute error is defined as abs(x-y); if that is less than or equal to
    tol, x and y are considered approximately equal.

    Relative error is defined as abs((x-y)/x) or abs((x-y)/y), whichever is
    smaller, provided x or y are not zero. If that figure is less than or
    equal to rel, x and y are considered approximately equal.

    Complex numbers are not directly supported. If you wish to compare to
    complex numbers, extract their real and imaginary parts and compare them
    individually.

    NANs always compare unequal, even with themselves. Infinities compare
    approximately equal if they have the same sign (both positive or both
    negative). Infinities with different signs compare unequal; so do
    comparisons of infinities with finite numbers.
    rz%error tolerances must be non-negativeFT)�
ValueErrorrr�isinfrr)r
�y�tol�relZactual_errorZ
allowed_errorrrr�approx_equalQs"r(c@seZdZdZdS)�
_DoNothinga�
    When doing numeric work, especially with floats, exact equality is often
    not what you want. Due to round-off error, it is often a bad idea to try
    to compare floats with equality. Instead the usual procedure is to test
    them with some (hopefully small!) allowance for error.

    The ``approx_equal`` function allows you to specify either an absolute
    error tolerance, or a relative error, or both.

    Absolute error tolerances are simple, but you need to know the magnitude
    of the quantities being compared:

    >>> approx_equal(12.345, 12.346, tol=1e-3)
    True
    >>> approx_equal(12.345e6, 12.346e6, tol=1e-3)  # tol is too small.
    False

    Relative errors are more suitable when the values you are comparing can
    vary in magnitude:

    >>> approx_equal(12.345, 12.346, rel=1e-4)
    True
    >>> approx_equal(12.345e6, 12.346e6, rel=1e-4)
    True

    but a naive implementation of relative error testing can run into trouble
    around zero.

    If you supply both an absolute tolerance and a relative error, the
    comparison succeeds if either individual test succeeds:

    >>> approx_equal(12.345e6, 12.346e6, tol=1e-3, rel=1e-4)
    True

    N)�__name__�
__module__�__qualname__�__doc__rrrrr)�s#r)�
statistics�_statistics)Zblocked)Zfreshc@s.eZdZdgZdd�Ze�ed�dd��ZdS)�TestModulesZ_normal_dist_inv_cdfcCs$|jD]}|�tt|�jd�qdS�Nr.)�
func_names�assertEqual�getattr�
py_statisticsr+��selfZfnamerrr�test_py_functions�s
zTestModules.test_py_functions�requires _statisticscCs$|jD]}|�tt|�jd�qdS)Nr/)r2r3r4�c_statisticsr+r6rrr�test_c_functions�s
zTestModules.test_c_functionsN)	r*r+r,r2r8�unittest�
skipUnlessr:r;rrrrr0�s
r0c@s@eZdZdZdZZddd�Zdd�Zd
dd	�Ze	d
d��Z
dS)�NumericTestCasez�Unit test class for numeric work.

    This subclasses TestCase. In addition to the standard method
    ``TestCase.assertAlmostEqual``,  ``assertApproxEqual`` is provided.
    rNcCsZ|dur|j}|dur|j}t|tjj�r@t|tjj�r@|j}n|j}||||||�dS)a�Test passes if ``first`` and ``second`` are approximately equal.

        This test passes if ``first`` and ``second`` are equal to
        within ``tol``, an absolute error, or ``rel``, a relative error.

        If either ``tol`` or ``rel`` are None or not given, they default to
        test attributes of the same name (by default, 0).

        The objects may be either numbers, or sequences of numbers. Sequences
        are tested element-by-element.

        >>> class MyTest(NumericTestCase):
        ...     def test_number(self):
        ...         x = 1.0/6
        ...         y = sum([x]*6)
        ...         self.assertApproxEqual(y, 1.0, tol=1e-15)
        ...     def test_sequence(self):
        ...         a = [1.001, 1.001e-10, 1.001e10]
        ...         b = [1.0, 1e-10, 1e10]
        ...         self.assertApproxEqual(a, b, rel=1e-3)
        ...
        >>> import unittest
        >>> from io import StringIO  # Suppress test runner output.
        >>> suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
        >>> unittest.TextTestRunner(stream=StringIO()).run(suite)
        <unittest.runner.TextTestResult run=2 errors=0 failures=0>

        N)r&r'r�collections�abc�Sequence�_check_approx_seq�_check_approx_num)r7�first�secondr&r'�msg�checkrrr�assertApproxEqual�s��z!NumericTestCase.assertApproxEqualc
	Csnt|�t|�kr:dt|�t|�f}|�||�}|�|��tt||��D] \}\}}	|�||	||||�qHdS)Nz0sequences differ in length: %d items != %d items)�len�_formatMessage�failureException�	enumerate�ziprC)
r7rDrEr&r'rF�standardMsg�ir�errrrB�s��
z!NumericTestCase._check_approx_seqcCs>t||||�rdS|�|||||�}|�||�}|�|��dS�N)r(�_make_std_err_msgrJrK)r7rDrEr&r'rF�idxrNrrrrCs
z!NumericTestCase._check_approx_numc	Cs>d}|durd|}||}t||�\}}|||||||fS)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 )	rDrEr&r'rS�template�headerrrrrrrRs�z!NumericTestCase._make_std_err_msg)NNN)N)r*r+r,r-r&r'rHrBrC�staticmethodrRrrrrr>�s�
,
	r>c@seZdZdZdd�ZdS)�TestSignz5Test that the helper function sign() works correctly.cCs$|�td�d�|�td�d�dS)N�rg����)r3r
�r7rrr�
testZeroes(szTestSign.testZeroesN)r*r+r,r-r[rrrrrW&srWc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ApproxEqualSymmetryTestcCsTdddtd�tdd�g}ddd	td
�tdd�g}t||�D]\}}|�||�q:dS)Ni�	gfffff�B@gfffff�(�z2.54��6i�	g������B@gR����(�z2.59�)rrrM�do_relative_symmetry)r7Zargs1Zargs2rrrrr�test_relative_symmetry3s
z.ApproxEqualSymmetryTest.test_relative_symmetrycCstt||�t||�}}||}t||�t||�}}||d}|�t||d|d��|�t||d|d��dS)Nrr�r&r')�minrr�
assertTruer()r7rr�deltaZrel_err1Zrel_err2r'rrrr`Csz,ApproxEqualSymmetryTest.do_relative_symmetrycCsgd�}d}|D]�}ttttfD]�}||�d}||}t|t||��}|j||||d�|j|||dd|d�|j|||d|dd�|j||||dd�|j|||d|d�|j|||dd|d�|j||ddd�|j||ddd�q qdS)N)��������ki�mr�drbrr)�intrrrrr�do_symmetry_test)r7�argsrer�type_r
r%�rrrr�
test_symmetryOsz%ApproxEqualSymmetryTest.test_symmetryc
Cs@d}t||||�}t||||�}|�|||�||||f��dS)Nz+approx_equal comparisons don't match for %r)r(r3�format)r7rrr&r'rTZflag1Zflag2rrrrlgsz(ApproxEqualSymmetryTest.do_symmetry_testN)r*r+r,rar`rprlrrrrr\0sr\c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�ApproxEqualExactTestcCsJt||||d�}|�|d|�t||||d�}|�|d|�dS)Nrbzequality failure for x=%r)r(rd)r7r
r&r'�resultrrr�do_exactly_equal_testtsz*ApproxEqualExactTest.do_exactly_equal_testcCsdD]}|�|dd�qdS)N)�*iMi~:��iiU�
i�r�rt�r7rrrr�test_exactly_equal_intszsz,ApproxEqualExactTest.test_exactly_equal_intscCsdD]}|�|dd�qdS)N)g�z�G��?g/�$���?g�����e�@g7@gpf@g!�rh��Q@gB`��"KB@rrw�r7r
rrr�test_exactly_equal_floatssz.ApproxEqualExactTest.test_exactly_equal_floatscCsNt}|dd�|d�|dd�|dd�|dd	�|dd�fD]}|�|dd�q6dS)
Nrrrrh��	��#�$)rrt�r7�F�frrr�test_exactly_equal_fractions�s6z1ApproxEqualExactTest.test_exactly_equal_fractionscCs*t}t|d���D]}|�|dd�qdS)Nz8.2 31.274 912.04 16.745 1.2047r)r�map�splitrt)r7�D�drrr�test_exactly_equal_decimals�sz0ApproxEqualExactTest.test_exactly_equal_decimalscCsFdD]<}|�|dd�|�|ddd�t|d�}|�|dd�qdS)N)�i�i\i�i���{�G�z�?r�
i�)rtr)r7rr�rrr�test_exactly_equal_absolute�s

z0ApproxEqualExactTest.test_exactly_equal_absolutecCs2|�td�td�d�|�td�td�d�dS)Nz3.571�0.01rz81.3971)rtrrZrrr�$test_exactly_equal_absolute_decimals�sz9ApproxEqualExactTest.test_exactly_equal_absolute_decimalscCs@dddtdd�fD]}|�|dd�q|�td�dtd	��dS)
Ni� g33333SY@g�z�G�rh�rr�z11.68r��rrtrrzrrr�test_exactly_equal_relative�sz0ApproxEqualExactTest.test_exactly_equal_relativecCsHdddtdd�fD]}|�|dd�qt}|�|d�|d	�|d
��dS)Ni9�gˡE��0@g\��(h��r|�皙�����?r�z7.2z0.1r�r�)r7r
r�rrr�test_exactly_equal_both�sz,ApproxEqualExactTest.test_exactly_equal_bothN)r*r+r,rtryr{r�r�r�r�r�r�rrrrrrnsrrc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�ApproxEqualUnequalTestcCs8||fD](}t||dddd�}|�|d|�q
dS)Nrrrbzinequality failure for x=%r)r(�assertFalse)r7r
rrsrrr�do_exactly_unequal_test�sz.ApproxEqualUnequalTest.do_exactly_unequal_testcCsdD]}|�|�qdS)N)i�i��i�i�iXC�r�rxrrr�test_exactly_unequal_ints�sz0ApproxEqualUnequalTest.test_exactly_unequal_intscCsdD]}|�|�qdS)N)g��Q�#@g����[�@gfffff�G@gףp=
W"@g=
ףp=1@r�rzrrr�test_exactly_unequal_floats�sz2ApproxEqualUnequalTest.test_exactly_unequal_floatscCs<t}|dd�|dd�|dd�|dd�fD]}|�|�q(dS)	Nrrhr~r}���eiς)rr�r�rrr�test_exactly_unequal_fractions�s(z5ApproxEqualUnequalTest.test_exactly_unequal_fractionscCs"ttd���D]}|�|�qdS)Nz!3.1415 298.12 3.47 18.996 0.00245)r�rr�r��r7r�rrr�test_exactly_unequal_decimals�sz4ApproxEqualUnequalTest.test_exactly_unequal_decimalsN)r*r+r,r�r�r�r�r�rrrrr��s
r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�ApproxEqualInexactTestc	Csbd}||||fD]H}|�||�}|�t||d|dd�|�|�t|||ddd�|�qdS)N�Test failure for x={!r}, y={!r}rrrb�rqrdr(r��r7r
rerTr%rFrrr�do_approx_equal_abs_test�s
z/ApproxEqualInexactTest.do_approx_equal_abs_testcCs&dD]}|�|d�|�|d�qdS)N)i��iI���i����rgrrr}�%i�i�&i6�jr�r�r�rxrrr�test_approx_equal_absolute_ints�sz6ApproxEqualInexactTest.test_approx_equal_absolute_intscCs2dD](}|�|d�|�|d�|�|d�qdS)N)	g�t��q�gfffffFX�g333333�g333333���?��?g333333@g�Q���@g�����ҭ@��?r��-C��6?r�rzrrr�!test_approx_equal_absolute_floats�sz8ApproxEqualInexactTest.test_approx_equal_absolute_floatscCsFtdd�}gd�}dd�|D�D] }|�||�|�|t|��q dS)Nr�)i������rgrYrrrhr]��"�Gcss|]}t|d�VqdS)r�Nr)�.0rrrr�	<genexpr>��zNApproxEqualInexactTest.test_approx_equal_absolute_fractions.<locals>.<genexpr>)rr�r)r7re�
numeratorsr�rrr�$test_approx_equal_absolute_fractions�s

z;ApproxEqualInexactTest.test_approx_equal_absolute_fractionscCs:td�}ttd���D]}|�||�|�||�qdS)Nr�z1.0 3.5 36.08 61.79 7912.3648)rr�r�r�)r7rer�rrr�#test_approx_equal_absolute_decimals�sz:ApproxEqualInexactTest.test_approx_equal_absolute_decimalscCs|�tddddd��dS)Ng�h㈵��>g�h㈵��r�rrb)rdr(rZrrr�test_cross_zero�sz&ApproxEqualInexactTest.test_cross_zeroc	Csjd}|d||d|fD]H}|�||�}|�t||dd|d�|�|�t||d|dd�|�qdS)Nr�rrrrbr�r�rrr�do_approx_equal_rel_test�s
z/ApproxEqualInexactTest.do_approx_equal_rel_testcCsr|�tddddd��|�tddddd��|�tdddd	d��|�td
ddd	d��|�tdddd	d��dS)N�@�/rg
ףp=
�?rbg�G�z��?i�i��?i�i�)rdr(r�rZrrr�test_approx_equal_relative_intss
z6ApproxEqualInexactTest.test_approx_equal_relative_intscCs&dD]}|�|d�|�|d�qdS)N)g{�G�Jf�皙������r�r�g\��(|B@g��ʡE>�@g��x��@�{�G�z�?r�)r�rzrrr�!test_approx_equal_relative_floatssz8ApproxEqualInexactTest.test_approx_equal_relative_floatscCsht}tdd�}|dd�|dd�|dd�|dd	�fD]0}|t|�fD]}|�||�|�||�qBq2dS)
Nr|r��Tr]��1�2�\�U)rrr�)r7r�rer�r�rrr�$test_approx_equal_relative_fractionss
(z;ApproxEqualInexactTest.test_approx_equal_relative_fractionscCs:ttd���D]&}|�|td��|�|td��qdS)Nz$0.02 1.0 5.7 13.67 94.138 91027.9321�0.001�0.05)r�rr�r�r�rrr�#test_approx_equal_relative_decimalssz:ApproxEqualInexactTest.test_approx_equal_relative_decimalscCst|r
|jn|j}|t|||dd��|r.|jn|j}|t||d|d��|sP|rV|jn|j}|t||||d��dS)Nrrb)rdr�r()r7rrr&r'Ztol_flagZrel_flagrGrrr�
do_check_both)sz$ApproxEqualInexactTest.do_check_bothcCs,|�dddddd�|�dddd	dd�dS)
N�R����@�+���@���Mbp?���W�8?Tg?5^�I��g%��C�����Mb`?g-C��6*?�r�rZrrr�test_approx_equal_both11sz.ApproxEqualInexactTest.test_approx_equal_both1cCs|�dddddd�dS)Nr�r�r�gV�F�?8?TFr�rZrrr�test_approx_equal_both26sz.ApproxEqualInexactTest.test_approx_equal_both2cCs|�dddddd�dS)Nr�r����MbP?r�FTr�rZrrr�test_approx_equal_both3:sz.ApproxEqualInexactTest.test_approx_equal_both3cCs,|�dddddd�|�dddd	dd�dS)
Ng=
ףp=@�@r�r�Fg�Q��[�@g�(\��[�@r�giUMu�>r�rZrrr�test_approx_equal_both4>sz.ApproxEqualInexactTest.test_approx_equal_both4N)r*r+r,r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s 		r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ApproxEqualSpecialsTestcCs�ttfD]z}|d�}|�t||��|�t||dd��|�t||dd��|�t||��|�t||��|�t|d��qdS)Nrrrr���)rrrdr(r�)r7rnrrrr�test_infGsz ApproxEqualSpecialsTest.test_infcCs>ttfD]0}|d�}||d�dfD]}|�t||��q"qdS)N�nanrr�)rrr�r()r7rnr��otherrrr�test_nanQsz ApproxEqualSpecialsTest.test_nancCs&t�dd�}|�t|dddd��dS)NrXrYr�rb)rrrdr(�r7Znzerorrr�test_float_zeroesWsz)ApproxEqualSpecialsTest.test_float_zeroescCs&td�}|�t|td�ddd��dS)Nz-0.0rr�rb)rrdr(r�rrr�test_decimal_zeroes[sz+ApproxEqualSpecialsTest.test_decimal_zeroesN)r*r+r,r�r�r�r�rrrrr�Ds
r�c@seZdZdd�Zdd�ZdS)�TestApproxEqualErrorscCs|�ttdddd�dS)NrjrYr���assertRaisesr#r(rZrrr�test_bad_tolcsz"TestApproxEqualErrors.test_bad_tolcCs|�ttdddd�dS)Nrjrr�r�rZrrr�test_bad_relgsz"TestApproxEqualErrors.test_bad_relN)r*r+r,r�r�rrrrr�`sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestNumericTestCasecCs.tj|�}|j|�}|D]}|�||�qdSrQ)r>rR�generate_substringsZassertIn)r7rmZ
actual_msgrZ	substringrrr�do_testws

zTestNumericTestCase.do_testcCs|�tttj��dSrQ)rd�
issubclassr>r<�TestCaserZrrr� test_numerictestcase_is_testcase}sz4TestNumericTestCase.test_numerictestcase_is_testcasecCsd}|�|�dS)N)�@�@r���?N�r��r7rmrrr�test_error_msg_numeric�sz*TestNumericTestCase.test_error_msg_numericcCsd}|�|�dS)N)�@g� @g�?r�r~r�r�rrr�test_error_msg_sequence�sz+TestNumericTestCase.test_error_msg_sequencec	CsDt||�\}}d|d|d|d|g}|dur@|�d|�|S)z5Return substrings we expect to see in error messages.ztol=%rzrel=%rzabsolute error = %rzrelative error = %rNzdiffer at index %d)r �append)	r7rDrEr&r'rSrrZ
substringsrrrr��s�z'TestNumericTestCase.generate_substringsN)r*r+r,r�r�r�r�r�rrrrr�qs
r�c@s(eZdZeZddgZdd�Zdd�ZdS)�GlobalsTestr-�__all__cCs(|jD]}|�t|j|�d|�qdS)Nz%s not present)�expected_metadatard�hasattr�module)r7�metarrr�	test_meta�s
�zGlobalsTest.test_metacCsB|j}|jD]0}|�|�d�d|�|�t||�d|�qdS)N�_zprivate name "%s" in __all__zmissing name "%s" in __all__)r�r�r��
startswithrdr�)r7r��namerrr�test_check_all�s
��zGlobalsTest.test_check_allN)r*r+r,r.r�r�r�rrrrrr��sr�c@s(eZdZe�ejjdkd�dd��ZdS)�DocTestsrz)Docstrings are omitted with -OO and abovecCs0tjttjd�\}}|�|d�|�|d�dS)N)Zoptionflagsr)�doctest�testmodr.�ELLIPSIS�
assertGreaterr3)r7ZfailedZtriedrrr�test_doc_tests�szDocTests.test_doc_testsN)	r*r+r,r<ZskipIf�sys�flags�optimizerrrrrr�s�rc@seZdZdd�ZdS)�StatisticsErrorTestcCs4d}|�ttd��|�ttjt�|tjj�dS)NzNExpected StatisticsError to be a ValueError, but got a subclass of %r instead.�StatisticsError)rdr�r.r�r
r#�__base__)r7�errmsgrrr�test_has_exception�s�

�z&StatisticsErrorTest.test_has_exceptionN)r*r+r,rrrrrr�src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ExactRatioTestcCs$dD]}|�t�|�|df�qdS)N)i�����rrh�cl F�x:^Vr)r3r.�_exact_ratio)r7rOrrr�test_int�szExactRatioTest.test_intcCs2d}|D]$}t|d�}|�t�|�|df�qdS)N)���rr��&r�)rr3r.r)r7r�rr�rrr�
test_fraction�s
zExactRatioTest.test_fractioncCsb|�t�d�d�|�t�d�d�dd�td�D�}|D]"}t�|�\}}|�|||�q:dS)Nr��rr���?)r}r�cSsg|]}t�dd��qS)���rj��random�uniform�r�r�rrr�
<listcomp>�r�z-ExactRatioTest.test_float.<locals>.<listcomp>rj)r3r.r�range)r7�datar
�num�denrrr�
test_float�szExactRatioTest.test_floatcCsJt}tj}|�||d��d�|�||d��d�|�||d��d�dS)Nz0.125rz12.345)i�	��z-1.98)i����r�)rr.rr3)r7r�rrrr�test_decimal�s
zExactRatioTest.test_decimalcCs�td�}Gdd�dt�}Gdd�dt�}||fD]`}t|t|fD]N}||�}t�|�}|�||df�|�t|d�|�|�t�|d��qBq2dS)N�INFc@seZdZdS)z(ExactRatioTest.test_inf.<locals>.MyFloatN�r*r+r,rrrr�MyFloat�sr*c@seZdZdS)z*ExactRatioTest.test_inf.<locals>.MyDecimalNr)rrrr�	MyDecimal�sr+r)	rrr.rr3rrdrr$)r7r(r*r+rrnr
�ratiorrrr��s
zExactRatioTest.test_infcCsttd�}Gdd�dt�}|||�fD]J}t�|�}|�t�|d��|�|dd�|�t|d�t|��q$dS)N�NANc@seZdZdS)z.ExactRatioTest.test_float_nan.<locals>.MyFloatNr)rrrrr*�sr*rr)	rr.rrdrr�assertIsr3r)r7r-r*r�r,rrr�test_float_nan�s
zExactRatioTest.test_float_nancCs�td�}td�}Gdd�dt�}|||�|||�fD]J}t�|�}|�t|d|��|�|dd�|�t|d�t|��q4dS)Nr-�sNANc@seZdZdS)z2ExactRatioTest.test_decimal_nan.<locals>.MyDecimalNr)rrrrr+sr+rr)rr.rrdrr.r3r)r7r-r0r+r�r,rrr�test_decimal_nan�s
zExactRatioTest.test_decimal_nanN)
r*r+r,rrr%r'r�r/r1rrrrr�s
rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�DecimalToRatioTestcCs<td�}|�t�|�|df�|�t�|�|df�dS)Nr()rr3r.r)r7rrrr�
test_infinitysz DecimalToRatioTest.test_infinitycCsDtd�td�fD].}t�|�\}}|�t||��|�|d�qdS)Nr-r0)rr.rrdrr.)r7r�r#r$rrrr�szDecimalToRatioTest.test_nancCsltd�td�g}|D]R}t�|�\}}|�|d�|�|d�t�|�\}}|�|d�|�|d�qdS)Nz	9.8765e12z
9.8765e-12r)rr.r�assertGreaterEqualrZassertLessEqual)r7Znumbersr�r#r$rrr�	test_signszDecimalToRatioTest.test_signcCst�td��}|�|d�dS)Nz0.1234)ii��r.rrr3�r7�trrr�test_negative_exponent,sz)DecimalToRatioTest.test_negative_exponentcCst�td��}|�|d�dS)Nz1.234e7)i K�rr7r8rrr�test_positive_exponent1sz)DecimalToRatioTest.test_positive_exponentcCs8t�td��}|�|d�t�td��}|�|d�dS)NZ1e2)rjrz1.47e5)i8>rr7r8rrr�test_regression_205366sz(DecimalToRatioTest.test_regression_20536N)	r*r+r,r3r�r5r:r;r<rrrrr2s
r2c@s$eZdZdd�Zdd�Zdd�ZdS)�IsFiniteTestcCs0dtdd�dtd�fD]}|�t�|��qdS)Nrhrr|r��5.5)rrrdr.�	_isfiniterzrrr�test_finiteBszIsFiniteTest.test_finitecCs*td�td�fD]}|�t�|��qdS�Nr�rrr�r.r?rzrrrr3GszIsFiniteTest.test_infinitycCs0td�td�td�fD]}|�t�|��qdS�Nr�r-r0rBrzrrrr�LszIsFiniteTest.test_nanN)r*r+r,r@r3r�rrrrr=?sr=c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�
CoerceTestcCsNttttfD]<}|�t�|t�|�Gdd�d|�}|�t�|t�|�qdS)Nc@seZdZdS)z%CoerceTest.test_bool.<locals>.MyClassNr)rrrr�MyClassmr�rE)rkrrrr.r.�_coerce�bool)r7�TrErrr�	test_boolgszCoerceTest.test_boolcCs,|�t�||�|�|�t�||�|�dS)z Assert that type A coerces to B.N)r.r.rF�r7�A�Brrr�assertCoerceTopszCoerceTest.assertCoerceTocCsT|�||�Gdd�d|�}|�||�Gdd�d|�}|�||�|�||�dS)z6Checks that type A coerces to B, including subclasses.c@seZdZdS)z/CoerceTest.check_coerce_to.<locals>.SubclassOfANr)rrrr�SubclassOfAzr�rNc@seZdZdS)z/CoerceTest.check_coerce_to.<locals>.SubclassOfBNr)rrrr�SubclassOfB}r�rON)rM)r7rKrLrNrOrrr�check_coerce_touszCoerceTest.check_coerce_tocCs,|�ttj||f�|�ttj||f�dS)z=Assert that coercing A to B, or vice versa, raises TypeError.N)r��	TypeErrorr.rFrJrrr�assertCoerceRaises�szCoerceTest.assertCoerceRaisescCs�|�t�||�|�Gdd�d|�}Gdd�d|�}Gdd�d|�}|||fD]}|�||�qN|�||�|�||�|�||�dS)z>Check that type T coerces correctly with subclasses of itself.c@seZdZdS)z*CoerceTest.check_type_coercions.<locals>.UNr)rrrr�U�r�rSc@seZdZdS)z*CoerceTest.check_type_coercions.<locals>.VNr)rrrr�V�r�rTc@seZdZdS)z*CoerceTest.check_type_coercions.<locals>.WNr)rrrr�W�r�rUN)r.r.rFrMrR)r7rHrSrTrU�typrrr�check_type_coercions�szCoerceTest.check_type_coercionscCs*|�t�tttfD]}|�t|�qdSrQ)rWrkrrrrP)r7rVrrrr�s
zCoerceTest.test_intcCs|�t�|�tt�dSrQ)rWrrPrrZrrrr�s
zCoerceTest.test_fractioncCs|�t�dSrQ)rWrrZrrrr'�szCoerceTest.test_decimalcCs|�t�dSrQ)rWrrZrrrr%�szCoerceTest.test_floatcCs:tttd�ttfD]"}ttttfD]}|�	||�q"qdSrQ)
�str�listr�tuple�dictrkrrrrR)r7Zbad_typeZ	good_typerrr�test_non_numeric_types�sz!CoerceTest.test_non_numeric_typescCs:ttfD],}Gdd�d|�}|�|t�|�|t�qdS)Nc@seZdZdS)z6CoerceTest.test_incompatible_types.<locals>.MySubclassNr)rrrr�
MySubclass�r�r])rrrRr)r7rHr]rrr�test_incompatible_types�sz"CoerceTest.test_incompatible_typesN)r*r+r,rIrMrPrRrWrrr'r%r\r^rrrrrDRs	rDc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�ConvertTestcCs$|�||�|�t|�t|��dS)z5Check that x equals y, and has the same type as well.N)r3r.r)r7r
r%rrr�check_exact_equal�szConvertTest.check_exact_equalcCsPt�td�t�}|�|d�Gdd�dt�}t�td�|�}|�||d��dS)Nr�c@seZdZdS)z#ConvertTest.test_int.<locals>.MyIntNr)rrrr�MyInt�r�rar])r.�_convertrrkr`)r7r
rarrrr�s
zConvertTest.test_intcCs\t�tdd�t�}|�|tdd��Gdd�dt�}t�tdd�|�}|�||dd��dS)N�_rcseZdZ�fdd�Z�ZS)z-ConvertTest.test_fraction.<locals>.MyFractioncs|�t��|��SrQ��	__class__�super�__truediv__�r7r��rerrrg�sz9ConvertTest.test_fraction.<locals>.MyFraction.__truediv__�r*r+r,rg�
__classcell__rrrir�
MyFraction�srlr��
)r.rbrr`)r7r
rlrrrr�s
zConvertTest.test_fractioncCsTt�tdd�t�}|�|d�Gdd�dt�}t�tdd�|�}|�||d��dS)	NrYrg�cseZdZ�fdd�Z�ZS)z'ConvertTest.test_float.<locals>.MyFloatcs|�t��|��SrQrdrhrirrrg�sz3ConvertTest.test_float.<locals>.MyFloat.__truediv__rjrrrirr*�sr*r}r�r)r.rbrrr`)r7r
r*rrrr%�s
zConvertTest.test_floatcCsXt�tdd�t�}|�|td��Gdd�dt�}t�tdd�|�}|�||d��dS)	Nr�(z0.025cseZdZ�fdd�Z�ZS)z+ConvertTest.test_decimal.<locals>.MyDecimalcs|�t��|��SrQrdrhrirrrg�sz7ConvertTest.test_decimal.<locals>.MyDecimal.__truediv__rjrrrirr+�sr+r�r�z-0.9375)r.rbrrr`)r7r
r+rrrr'�s
zConvertTest.test_decimalcCsFtd�td�fD]0}||fD] }t�|t|��}|�||�qqdSrA)rrr.rbrr`)r7r(rr
rrrr��szConvertTest.test_infcCs@td�td�td�fD]$}t�|t|��}|�t||��qdSrC)rrr.rbrrdr)r7r�r
rrrr��szConvertTest.test_nancCs:|�t��t�dt�Wd�n1s,0YdSrQ)r�rQr.rbrrZrrr�test_invalid_input_type�sz#ConvertTest.test_invalid_input_typeN)r*r+r,r`rrr%r'r�r�rorrrrr_�s


r_c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�FailNegTestz Test _fail_neg private function.cCs2ddtd�td�g}tt�|��}|�||�dS�Nr�@r|r�)rrrYr.�	_fail_negr3)r7�values�newrrr�test_pass_through�szFailNegTest.test_pass_throughcCs@ddtd�td�fD]&}|g}t�|�}|�tjt|�qdSrq)rrr.rsr�r
�next)r7r
�seq�itrrr�test_negatives_raise�s
z FailNegTest.test_negatives_raisec
Csrdt�dd�}ztt�dg|��Wn0tjyV}z|jd}WYd}~nd}~00|�d�|�||�dS)Nzbadness #%d�'i��rYrz(expected exception, but it didn't happen)	r�randintrwr.rsr
rmZfailr3)r7rFrPrrrr�test_error_msgs 
zFailNegTest.test_error_msgN)r*r+r,r-rvrzr}rrrrrp�srpc@seZdZdd�Zdd�ZdS)�FindLteqTestc
Cs�gdfddgdfddgdffD]l\}}|j||d��F|�t��t�||�Wd�n1sb0YWd�q1s�0YqdS)Nrrr|�rr
)�subTestr�r#r.�
_find_lteq)r7rr
rrr�test_invalid_input_valuess

�z&FindLteqTest.test_invalid_input_valuesc	Cszgd�ddfgd�ddfgd�ddffD]L\}}}|j||d��$|�|t�||��Wd�q(1sj0Yq(dS)	N�rrrrr|rr�rrrrrr|�rrr|r|r|r|rr)r�r3r.r�)r7rr
�
expected_irrr�test_locate_successfullys�z%FindLteqTest.test_locate_successfullyN�r*r+r,r�r�rrrrr~s
r~c@seZdZdd�Zdd�ZdS)�FindRteqTestc	CsbdgddfddgddffD]B\}}}|�t��t�|||�Wd�q1sR0YqdS)Nrrr|r)r�r#r.�
_find_rteq)r7r�lr
rrrr�*s

�z&FindRteqTest.test_invalid_input_valuesc
Cs�gd�dddfgd�dddfgd�dddffD]R\}}}}|j|||d	��&|�|t�|||��Wd�q.1sv0Yq.dS)
Nr�rrrr�r|r�r�)rr�r
)r�r3r.r�)r7rr�r
r�rrrr�2s�z%FindRteqTest.test_locate_successfullyNr�rrrrr�'sr�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�UnivariateCommonMixincCs|�t|j�dSrQ�r�rQ�funcrZrrr�test_no_argsAsz"UnivariateCommonMixin.test_no_argscCs*gdtg�fD]}|�tj|j|�qdS)Nr)�iterr�r.r
r�)r7�emptyrrr�test_empty_dataEsz%UnivariateCommonMixin.test_empty_datacCs(ttd��}|t|�kr$t�|�q|S)z"Return int data for various tests.r��rYr!�sortedr�shuffle�r7r"rrr�prepare_dataJsz"UnivariateCommonMixin.prepare_datacCs0|��}|dd�}|�|�}|�||d�dS)Nzdata has been modified)r�r�ZassertListEqual)r7r"Zsavedr�rrr�test_no_inplace_modificationsQs
z3UnivariateCommonMixin.test_no_inplace_modificationscCs:gd�d}|�|�}t�|�|�|�}|�||�dS)N)rrr|r|r|r�rh�rj)r�rr�r3�r7r"rrrrr�test_order_doesnt_matter[s



z.UnivariateCommonMixin.test_order_doesnt_mattercCsnGdd�dt�}Gdd�dt�}dd�}|��}|�|�}ttt|||fD]}|�||��}|�||�qJdS)Nc@seZdZdS)zBUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyListNr)rrrr�MyListjsr�c@seZdZdS)zCUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyTupleNr)rrrr�MyTuplelsr�cSsdd�|D�S)Ncss|]
}|VqdSrQr)r��objrrrr�or�zXUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator.<locals>.<genexpr>r�r"rrr�	generatornszEUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator)rYrZr�r�r�r3)r7r�r�r�r"r�kindrsrrr�test_type_of_data_collectionhs
z2UnivariateCommonMixin.test_type_of_data_collectioncCs0tddd�}|�t|��}|�|�|�|�dS�N�r�r|)r!r�rYr3�r7r"rrrr�test_range_datavsz%UnivariateCommonMixin.test_range_datacCs.|�d�|�d�|�d�|�t��dS)Nr�gE@)�check_for_type_error�objectrZrrr�test_bad_arg_types|s



z(UnivariateCommonMixin.test_bad_arg_typescGs|jt|jg|�R�dSrQr�r�rrrr��sz*UnivariateCommonMixin.check_for_type_errorcshGdd�dt�}|��}|�|�}t|ttfD]4��fdd�|D�}t|�|�|��}|�||�q.dS)Ncs,eZdZ�fdd�Z�fdd�ZeZ�ZS)z@UnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloatcst|�t��|��SrQ�rrfrgrhrirrrg�szLUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__truediv__cst|�t��|��SrQ�rrf�__add__rhrirrr��szHUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__add__)r*r+r,rgr��__radd__rkrrrirr*�sr*csg|]}�|��qSrr�r�r
�r�rrr �r�zCUnivariateCommonMixin.test_type_of_data_element.<locals>.<listcomp>)rr�r�rrrr3)r7r*�rawrr"rsrr�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�rrrrr�>s

r�c@s eZdZdZdd�Zdd�ZdS)�UnivariateTypeMixinamMixin class for type-conserving functions.

    This mixin class holds test(s) for functions which conserve the type of
    individual data points. E.g. the mean of a list of Fractions should itself
    be a Fraction.

    Not all tests to do with types need go in this class. Only those that
    rely on the function returning the same type as its input data.
    cCsGdd�dt�}ttt|fS)z4Return the types which are expected to be conserved.cs\eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Z�fd	d
�Z�fdd�ZeZ	�Z
S)
zHUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloatcst|�t��|��SrQr�rhrirrrg�szTUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__truediv__cst|�t��|��SrQ)rrf�__rtruediv__rhrirrr��szUUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rtruediv__cst|�t��|��SrQ)rrf�__sub__rhrirrr��szPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__sub__cst|�t��|��SrQ)rrf�__rsub__rhrirrr��szQUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rsub__cst|�t��|��SrQ)rrf�__pow__rhrirrr��szPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__pow__cst|�t��|��SrQr�rhrirrr��szPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__add__)r*r+r,rgr�r�r�r�r�r�rkrrrirr*�sr*)rrr)r7r*rrr�#prepare_types_for_conservation_test�sz7UnivariateTypeMixin.prepare_types_for_conservation_testcsF|��}|��D]0��fdd�|D�}|�|�}|�t|���qdS)Ncsg|]}�|��qSrrr�r�rrr �r�z<UnivariateTypeMixin.test_types_conserved.<locals>.<listcomp>)r�r�r�r.r)r7r"r�rsrr�r�test_types_conserved�s

z(UnivariateTypeMixin.test_types_conservedN)r*r+r,r-r�r�rrrrr��s	r�c@seZdZdd�ZdS)�
TestSumCommoncCsdd�}||_dS)NcWstj|�\}}}t�||�SrQ)r.�_sumrF)rmrH�valuerrrr�simplified_sum�sz+TestSumCommon.setUp.<locals>.simplified_sum)r�)r7r�rrr�setUp�szTestSumCommon.setUpN)r*r+r,r�rrrrr��sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestSumcCstj|_dSrQ)r.r�r�rZrrrr��sz
TestSum.setUpcCspgdtg�fD]\}|�|�|�ttd�df�|�|�|d�ttd�df�|�|�|d�ttd�df�qdS)Nrrr��ffffff@)r�r3r�rkrrr�rrrr��szTestSum.test_empty_datacCsF|�|�gd��ttd�df�|�|�gd�d�ttd�df�dS)N)rrhr|������r�rur�<r�)r�rr|r�r~r�i�rh)r3r�rkrrZrrr�	test_ints�s��zTestSum.test_intscCsH|�|�dgd�ttd�df�|�|�gd�d�ttd�df�dS)Nr�r��@)r�r�r�g�?r�g	@r�)r3r�rrrZrrr�test_floats�s��zTestSum.test_floatscCs.|�|�tdd�gd�ttdd�df�dS)Nrr���r)r3r�rrZrrr�test_fractions�s�zTestSum.test_fractionsc	CsXt}|d�|d�|d�|d�|d�|d�|d�|d�g}|�|�|�ttd	�d
f�dS)Nr�z5.246z1.702z-0.025z3.974z2.328z4.617z2.843z20.686r�)rr3r��r7r�r"rrr�
test_decimals�s��zTestSum.test_decimalscCs:dd�td�D�}|jt|�|�d�t�|�dd�dS)NcSsg|]}t�dd��qS)rr�rrrrrr �r�z7TestSum.test_compare_with_math_fsum.<locals>.<listcomp>r�rg��ؗ�Ҭ<�r')r!rHrr�r�fsumr�rrr�test_compare_with_math_fsum�sz#TestSum.test_compare_with_math_fsumcCs|dd�td�D�}|�|�d}|�|d|�|d�d�|�|d|�|d�d�|�|td�|�|d�d�dS)	NcSsg|]}t�dd��qS)rr�rrrrrr r�z/TestSum.test_start_argument.<locals>.<listcomp>rjrrur�rfg@��x�D)r!r�r3r)r7r"r9rrr�test_start_arguments
zTestSum.test_start_argumentcCs.|�t|jgd�d�|�t|jgd��dS)N�rrr|�999)rrr|r�r�rZrrr�test_strings_fail
szTestSum.test_strings_failcCs.|�t|jgd�d�|�t|jgd��dS)Nr��999)rrr|r�r�rZrrr�test_bytes_failszTestSum.test_bytes_failcCs8|�t|jddtd�g�|�t|jddgtd��dS)Nrrr)r�rQr�rrZrrr�test_mixed_sumszTestSum.test_mixed_sumN)r*r+r,r�r�r�r�r�r�r�r�r�r�r�rrrrr��sr�c@seZdZdd�ZdS)�SumTortureTestcCs�|�t�gd�d�ttd�df�|�t�gd�d�ttd�df�t�gd�d�\}}}|�|t�|�|d�|jt|�ddd	�dS)
N)r�}Ô%�I�Tr�}Ô%�I��r{g��@i@�)r�rrr�)�0��.�++rr�rYg���^�,gV瞯�<r�)r3r.r�rrr.rH)r7rHr#�countrrr�test_tortures��zSumTortureTest.test_tortureN)r*r+r,r�rrrrr�sr�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�SumSpecialValuescCsNttfD]@}|d�}t�d|dg�d}|�t|�|�|�t�|��qdS)Nr�rr)	rrr.r�r.rrdrr)r7rnr�rsrrrr�,s
zSumSpecialValues.test_nancCs<|�t�|��|�t|�t|��|�|dk|dk�dS)z8Check x is an infinity of the same type and sign as inf.rN)rdrr$r.rr3)r7r
rrrr�check_infinity3szSumSpecialValues.check_infinitycCsLt�dd|dg�d}|�||�t�dd|d|dg�d}|�||�dS)Nrrr|r�)r.r�r��r7rrsrrr�do_test_inf:szSumSpecialValues.do_test_infcCs$td�}dD]}|�||�qdS�Nr�rrY)rr��r7rr
rrr�test_float_infBszSumSpecialValues.test_float_infcCs$td�}dD]}|�||�qdSr�)rr�r�rrr�test_decimal_infGsz!SumSpecialValues.test_decimal_infcCs8td�}t�dd|d|dg�d}|�t�|��dS�Nrrrr|r�)rr.r�rdrrr�rrr�test_float_mismatched_infsLsz+SumSpecialValues.test_float_mismatched_infscCsdtd�}dd|d|dg}t�tj��*|�t�t�|�d��Wd�n1sV0YdSr�)	r�decimal�localcontextZExtendedContextrdrrr.r��r7rr"rrr�3test_decimal_extendedcontext_mismatched_infs_to_nanRszDSumSpecialValues.test_decimal_extendedcontext_mismatched_infs_to_nancCs\td�}dd|d|dg}t�tj��"|�tjtj|�Wd�n1sN0YdSr�)rr�r�ZBasicContextr��InvalidOperationr.r�r�rrr�0test_decimal_basiccontext_mismatched_infs_to_nanYszASumSpecialValues.test_decimal_basiccontext_mismatched_infs_to_nancCs(td�}d|dg}|�tjtj|�dS)Nr0rr)rr�r�r�r.r�)r7r0r"rrr�test_decimal_snan_raises`s
z)SumSpecialValues.test_decimal_snan_raisesN)r*r+r,r�r�r�r�r�r�r�r�r�rrrrr�)sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�AverageMixincCs6dddtdd�td�fD]}|�|�|g�|�qdS)Nr�g@E@g�X_yCr_�z0.28�rrr3r�rzrrr�test_single_valuelszAverageMixin.test_single_valuecCsdddtdd�td�fS)N�@r]���7y�!C�=�Cz4.9712�rrrZrrr�'prepare_values_for_repeated_single_testqsz4AverageMixin.prepare_values_for_repeated_single_testc
Csf|��D]X}dD]N}|j||d��,|g|}|�|�|�|�Wd�q1sT0YqqdS)N�rrhr�r�)r
r�)r�r�r3r��r7r
r�r"rrr�test_repeated_single_valuets

z'AverageMixin.test_repeated_single_valueN)r*r+r,r�r�r�rrrrr�isr�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�TestMeancCstj|_dSrQ)r.�meanr�rZrrrr�~szTestMean.setUpcCs|�|�gd��d�dS)N)r�rr|r�r�r3r�rZrrr�test_torture_pep�szTestMean.test_torture_pepcCs(gd�}t�|�|�|�|�d�dS)N)rrrr|r|r|r�rhrhr�r~r~r~r~r�r}g@@�rr�r3r�r�rrrr��s
zTestMean.test_intscCs(gd�}t�|�|�|�|�d�dS)N)g@1@g�3@�4@g�5@g�5@g@7@g 9@g�;@g6@r�r�rrrr��s
zTestMean.test_floatscCsJt}|d�|d�|d�|d�|d�g}t�|�|�|�|�|d��dS)Nz1.634z2.517z3.912z4.072z5.813z3.5896�rrr�r3r�r�rrrr��s"
zTestMean.test_decimalsc	Csft}|dd�|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|d	d
��dS)Nrrr|r�rhr�r~r�i�i��rrr�r3r��r7r�r"rrrr��s<
zTestMean.test_fractionscCs`gd�}ttfD]J}dD]@}|d�|}||g}|�|�}|�t�|��|�||�qqdS)N�rr|rhr~r}r�r)rrr�rdrr$r3)r7r�r�r
rr"rsrrrr��s

zTestMean.test_infc	Cs:dddtd�dddtd�g}|�|�}|�t�|��dS)	Nrr�r�rrr|rhz-inf)rr�rdrr�r7r"rsrrr�test_mismatched_infs�s
zTestMean.test_mismatched_infscCsFgd�}ttfD]0}|d�}||g}|�|�}|�t�|��qdS)Nrr�)rrr�rdrr)r7r�r�rr"rsrrrr��s

zTestMean.test_nancsBd�gd�}|�|��}|��fdd�|D��}|�||�dS)Nge��A�	�333333@�@g������@g������@g333333@�������@g @g333333 @g������"@csg|]}|��qSrrr���crrr �r�z*TestMean.test_big_data.<locals>.<listcomp>�r�r3�r7r"rrsrr	r�
test_big_data�s
zTestMean.test_big_datacCs:dd�td�D�}|�|�}|�|d�}|�||�dS)NcSsg|]}t�dd��qS)rrhrrrrrr �r�z.TestMean.test_doubled_data.<locals>.<listcomp>r�r�r!r�rHr�rrr�test_doubled_data�s
zTestMean.test_doubled_datacCs td�}|�t�|g�|�dS)NZ1e4)rr3r.r�r�rrr�test_regression_20561�szTestMean.test_regression_20561cCs\|�t�ddg�d�d}d}dD]4}|�t�|g|�|�|�t�|g|�|�q"dS)Ng�������g�g)rr|rhr&)r3r.r�)r7�bigZtinyrrrr�test_regression_25177�s��zTestMean.test_regression_25177N)r*r+r,r�r�r�r�r�r�r�rr�r
rrrrrrrr�}s		r�cs�eZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�TestHarmonicMeancCstj|_dSrQ)r.Z
harmonic_meanr�rZrrrr��szTestHarmonicMean.setUpcst���}|�d�|S)Nr)rfr��remove�r7rtrirrr��s

zTestHarmonicMean.prepare_datacCsdddtdd�td�fS)Nr�r]r�r�r�z4.125r�rZrrrr��sz8TestHarmonicMean.prepare_values_for_repeated_single_testcCsgd�}|�|�|�d�dS)N)rrrrr�rrrr�	test_zero�szTestHarmonicMean.test_zeroc	CsZtj}dggd�fD]@}|j|d�� |�||j|�Wd�q1sJ0YqdS)NrY)rrgr|)rt)r.r
r�r�r�)r7�excrtrrr�test_negative_error�sz$TestHarmonicMean.test_negative_errorc
Cs�dggd�gd�gd�fD]d}|j|d��D|�t��|�|�Wd�n1sV0YWd�q1st0YqdS)Nz3.14)�1�2�3)rrr|�4rh)r�rrz5.6r�)r�r�rQr�r�rrr�test_invalid_type_error�s�z(TestHarmonicMean.test_invalid_type_errorcCs(gd�}t�|�|�|�|�d�dS)N)rr�r�r�r�r�g333333@r�r�rrrr�s
zTestHarmonicMean.test_intscCs>gd�}t�|�|�|�|�d�|�|�gd��d�dS)N)r�r�r�r�r�r�)r�r�r�r�r�r�r�rrr�test_floats_exact	s
z"TestHarmonicMean.test_floats_exactcCs(tdd�D]}|�|�|g�|�q
dS)Nrr��r!r3r�rzrrr�test_singleton_listssz%TestHarmonicMean.test_singleton_listsc	Cs�t}|�|�|d�|d�|d�|d�g�|d��|d�|d�|d�|d�g}t�|�|�|�|�|d��|d�|d�|d	�|d
�g}t�|�|�|�|�|d�d�dS)
Nr_r�r�r�z0.10z0.20z1.68z0.32z5.94z2.75i�iC)rr3r�rr�r�rrr�test_decimals_exacts.

z$TestHarmonicMean.test_decimals_exactc	Csft}|dd�|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|d	d
��dS)Nrrr|r�rhr�r~r�i|i�rrrrrr� s<
zTestHarmonicMean.test_fractionscCs$dtd�dg}|�|�|�d�dS)Nrrrr�)rr3r�rrrrr�'szTestHarmonicMean.test_infcCs(dtd�dg}|�t�|�|���dS)Nrrr�r�)rrdrrr�rrrrr�,szTestHarmonicMean.test_nancsBd�gd�}|�|��}|��fdd�|D��}|�||�dS)N�orcsg|]}|��qSrrr�r	rrr 6r�z>TestHarmonicMean.test_multiply_data_points.<locals>.<listcomp>rrrr	r�test_multiply_data_points1s
z*TestHarmonicMean.test_multiply_data_pointscCs:dd�td�D�}|�|�}|�|d�}|�||�dS)NcSsg|]}t�dd��qS)rrhrrrrrr ;r�z6TestHarmonicMean.test_doubled_data.<locals>.<listcomp>r�rrr�rrrr9s
z"TestHarmonicMean.test_doubled_data)r*r+r,r�r�r�rrrr�rr r!r�r�r�r#rrkrrrirr�srcsTeZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�
TestMediancCstj|_dSrQ�r.�medianr�rZrrrr�CszTestMedian.setUpcs(t���}t|�ddkr$|�d�|S)�+Overload method from UnivariateCommonMixin.rr)rfr�rIr�r�rirrr�Fs

zTestMedian.prepare_datacCsgd�}|�|�|�d�dS)N�rrr|r�rhr�r�r�r�rrr�test_even_intsMszTestMedian.test_even_intscCsgd�}|�|�|�d�dS)N)rrr|r�rhr�r}r�r�r�rrr�
test_odd_intsSszTestMedian.test_odd_intscCsVt}|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|dd��dS)Nrr~rr|r�rhrrrrr�test_odd_fractionsYs,
zTestMedian.test_odd_fractionscCs^t}|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|dd��dS�Nrr~rr|r�rhr�rrrrr�test_even_fractionsas4
zTestMedian.test_even_fractionscCsJt}|d�|d�|d�|d�|d�g}t�|�|�|�|�|d��dS)N�2.5�3.1�4.2�5.7�5.8r�r�rrr�test_odd_decimalsis"
zTestMedian.test_odd_decimalscCsPt}|d�|d�|d�|d�|d�|d�g}t�|�|�|�|�|d��dS)Nz1.2r.r/r0r1r2z3.65r�r�rrr�test_even_decimalsqs(
zTestMedian.test_even_decimals)r*r+r,r�r�r)r*r+r-r3r4rkrrrirr$Asr$c@seZdZdd�Zdd�ZdS)�TestMedianDataTypecCstj|_dSrQr%rZrrrr�|szTestMedianDataType.setUpcCs(ttd��}|t|�kr$t�|�q|S)Nr_r�r�rrrr�szTestMedianDataType.prepare_dataN)r*r+r,r�r�rrrrr5zsr5c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
TestMedianLowcCstj|_dSrQ)r.Z
median_lowr�rZrrrr��szTestMedianLow.setUpcCsgd�}|�|�|�d�dS)Nr(r|r�r�rrrr)�szTestMedianLow.test_even_intscCs^t}|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|dd��dSr,rrrrrr-�s4
z!TestMedianLow.test_even_fractionscCsPt}|d�|d�|d�|d�|d�|d�g}t�|�|�|�|�|d��dS�Nz1.1z2.2z3.3z4.4r>z6.6r�r�rrrr4�s(
z TestMedianLow.test_even_decimalsN�r*r+r,r�r)r-r4rrrrr6�sr6c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestMedianHighcCstj|_dSrQ)r.Zmedian_highr�rZrrrr��szTestMedianHigh.setUpcCsgd�}|�|�|�d�dS)Nr(r�r�r�rrrr)�szTestMedianHigh.test_even_intscCs^t}|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�|dd��dSr,rrrrrr-�s4
z"TestMedianHigh.test_even_fractionscCsPt}|d�|d�|d�|d�|d�|d�g}t�|�|�|�|�|d��dSr7r�r�rrrr4�s(
z!TestMedianHigh.test_even_decimalsNr8rrrrr9�sr9c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestMedianGroupedcCstj|_dSrQ)r.Zmedian_groupedr�rZrrrr��szTestMedianGrouped.setUpcCstgd�}|�|�|�d�gd�}|�|�|�d�gd�}|�|�|d�d�gd�}|j|�|d	�d
dd�dS)
N)r�rm�r;r;r_r_r;)r�rmr;r;r;r;r_g�+@)rhr�r�r_r�r�r�r��r<r�rhg`3@)r��r=r=r=r�r�r��r>r>�r?��rg������4@�:�0�yE>�r&�r3r�rHr�rrr�test_odd_number_repeated�sz*TestMedianGrouped.test_odd_number_repeatedcCsvgd�}|j|�|d�ddd�gd�}|j|�|�ddd�gd�}|�|�|�d	�gd
�}|�|�|�d�dS)N)
rhr�r�r_r�r�r�r<r<r�rhg�����*3@rBrC)rr|r�r�r�rhg["8���@)rr|r|r�r�r�rhrhrhrhr�r�r)
r|r�r�r�rhrhrhrhr�r��@)rHr�r3r�rrr�test_even_number_repeated�sz+TestMedianGrouped.test_even_number_repeatedcCsLdddtdd�td�fD].}dD]$}|g|}|�|�|�t|��q qdS)Ng333333@�Dg��ޗCr�r�z32.9714r�)rrr3r�rr�rrrr��s
z,TestMedianGrouped.test_repeated_single_valuecCsPt}|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�d�dS)Nrhr�r}rmr]�@rrrrrr+�s,
z$TestMedianGrouped.test_odd_fractionscCsXt}|dd�|dd�|dd�|dd�|dd�|dd�g}t�|�|�|�|�d�dS)Nrhr�r}rmr]�
@rrrrrr-�s4
z%TestMedianGrouped.test_even_fractionscCsFt}|d�|d�|d�|d�|d�g}t�|�|�|�|�d�dS)Nr>�6.5�7.5�8.5g@r�r�rrrr3s"
z#TestMedianGrouped.test_odd_decimalscCs�t}|d�|d�|d�|d�|d�|d�g}t�|�|�|�|�d�|d�|d�|d�|d�|d�|d�g}t�|�|�|�|�d�dS)Nr>rKrLrM�@g@r�r�rrrr4s(
(
z$TestMedianGrouped.test_even_decimalscCs\gd�}|�|�|d�d�gd�}|j|�|d�ddd�gd�}|�|�|d	�d
�dS)N)
�@r�r�r�r�rIrIrJr�r�r�g@)rOr�r�r�r�r�rIrIrJr�r�g["8���@rBrC)��rP���rRrRrR�rS�,�@iTr�g�p@rDr�rrr�
test_intervalszTestMedianGrouped.test_intervalcCspgd�}|�t|j|�gd�}|�t|j|�gd�}d}|�t|j||�gd�}d}|�t|j||�dS)N)�rWrW)r�r�r�r�rWr�r�)r7r"�intervalrrr�test_data_type_errorsz&TestMedianGrouped.test_data_type_errorN)
r*r+r,r�rErGr�r+r-r3r4rVrYrrrrr:�s	
	r:c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestModecCstj|_dSrQ)r.�moder�rZrrrr�1szTestMode.setUpcCsgd�S)r')rrrrr|r�r~r}rr�rrrZrrrr�4szTestMode.prepare_datacCs"tddd�}|�|�|�d�dSr�rr�rrrr�9szTestMode.test_range_datacCs4d}|�|�|�d�d��}|�|�|�d�dS)NZabcbdbrzfe fi fo fum fi fi�fi)r3r�r�r�rrr�test_nominal_data>szTestMode.test_nominal_datacCsDttd��}td�D]*}||g}t�|�|�|�|�|�qdS�Nr��rYr!rr�r3r�)r7r"rOr�rrr�test_discrete_dataEs


zTestMode.test_discrete_datacCsgd�}|�|�|�d�dS)N)rrrrrrr|r�rhr�r�r�r�r~r�r}r}rr�r�rrr�test_bimodal_dataMszTestMode.test_bimodal_datacCs"ttd��}|�|�|�d�dS)Nr�r)rYr!r3r�r�rrr�test_unique_dataTszTestMode.test_unique_datacCs|�t|jd�dSrQr�rZrrr�test_none_dataZszTestMode.test_none_datacCs$t�gd��}|�|�|�d�dS)N)rrrrr)r?�Counterr3r�r�rrr�test_counter_dataaszTestMode.test_counter_dataN)r*r+r,r�r�r�r]r`rarbrcrerrrrrZ/srZc@seZdZdd�ZdS)�
TestMultiModecCs@tj}|�|d�dg�|�|d�gd��|�|d�g�dS)NZaabbbbbbbbccrZaabbbbccddddeeffffgg)rr�r�rW)r.�	multimoder3)r7rgrrr�test_basicskszTestMultiMode.test_basicsN)r*r+r,rhrrrrrfisrfc@s$eZdZdd�Zdd�Zdd�ZdS)�	TestFMeanc	Cs�tj}t}t}gd�ddf|d�|d�|d�gddf|dd	�|d
d�|dd
�gdd
fgd�ddfdd
|dd
�gddfdtgd��ddffD]2\}}}||�}|�t|�t|�|�|||�q�dS)N�r�r��@�@�floats�3.5�4.0�5.25�decimalsr~rr�rr��	fractions)TFTTF�333333�?Zbooleansr��mixed types)rjrlrZ�iterator)	r.�fmeanrrr�r.rrr3)r7rvr�r�r"�
expected_meanr��actual_meanrrrrhts �	zTestFMean.test_basicscCsLtj}tj}|�|��|g�Wd�n1s40Y|�|��|tg��Wd�n1sj0Y|�t��|d�Wd�n1s�0Y|�t��|gd��Wd�n1s�0Y|�t��|�Wd�n1�s0Y|�t��|gd�d�Wd�n1�s>0YdS)N�r�Nr��r�r�r��F)r.rvr
r�r�rQ)r7rvr
rrr�test_error_cases�s&*&*&zTestFMean.test_error_casescCs�tj}td�}td�}|�t�|d|g��d�|�t�|||g��d�|�t�|d|g��d�|�t��|||g�Wd�n1s�0YdS�NZNan�Infr�r�znan and infinityZinfinity)	r.rvrrdrrr$r�r#)r7rv�NaNr~rrr�test_special_values�szTestFMean.test_special_valuesN)r*r+r,rhr|r�rrrrrirsric@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�VarianceStdevMixinr!cCs6dddtdd�td�fD]}|�|�|g�d�qdS)Nr�g������3@g���%�Br�r�z8.392rr�rzrrrr��sz$VarianceStdevMixin.test_single_valuecCsHdddtdd�td�fD]*}dD] }|g|}|�|�|�d�q qdS)	Nrr�g@�6��<Cr|r~z62.4802)rr|rhr_rr�r�rrrr��s
z-VarianceStdevMixin.test_repeated_single_valuecCs4dgd}|�|�}|j|ddd�|�|d�dS)Ng.�F7ݚ�?r{rXg��ؗ�Ҍ<rCr)r�rHr4rrrr�test_domain_error_regression�s

z/VarianceStdevMixin.test_domain_error_regressioncs>gd�}|�|�}d��fdd�|D�}|�|�|�|�dS)N)
g{�G�z�?gR���Q�?g
ףp=
�?gR���Q@g�p=
ף@g��Q�	@rFg�Q���@g�G�z�@g��Q�@gj�@csg|]}|��qSrrr���shiftrrr �r�z6VarianceStdevMixin.test_shift_data.<locals>.<listcomp>)r�rH�r7r�rr"rr�r�test_shift_data�s

z"VarianceStdevMixin.test_shift_datacs>gd�}|�|�}d��fdd�|D�}|�|�|�|�dS)N)
rr|r|r�rhr~r}r�r�r�iʚ;csg|]}|��qSrrr�r�rrr �r�z<VarianceStdevMixin.test_shift_data_exact.<locals>.<listcomp>rr�rr�r�test_shift_data_exact�s

z(VarianceStdevMixin.test_shift_data_exactcCs6dd�td�D�}|�|�}|�|�t|��|�dS)NcSsg|]}t�dd��qS)rr�rrrrrr �r�z:VarianceStdevMixin.test_iter_list_same.<locals>.<listcomp>r�)r!r�r3r�r�rrr�test_iter_list_same�s
z&VarianceStdevMixin.test_iter_list_sameN)
r*r+r,r'r�r�r�r�r�r�rrrrr��s
	r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestPVariancecCstj|_dSrQ)r.�	pvariancer�rZrrrr��szTestPVariance.setUpcCs0ttd��}t�|�d}|�|�|�|�dS)Nr{gP�_Ar_r�rrr�test_exact_uniform�s
z TestPVariance.test_exact_uniformcCs"gd�}d}|�|�|�|�dS)N�r�r~rmr�g�6@r��r7r"�exactrrrr��szTestPVariance.test_intscCsXt}|dd�|dd�|dd�|dd�g}|dd�}|�|�}|�||�|�|t�dS)Nrr�r|r~r��rr�r3�assertIsInstance�r7r�r"r�rsrrrr��s$

zTestPVariance.test_fractionscCsNt}|d�|d�|d�|d�g}|d�}|�|�}|�||�|�|t�dS)Nz12.1z12.2z12.5z12.9z0.096875�rr�r3r��r7r�r"r�rsrrrr�s
zTestPVariance.test_decimalsN)r*r+r,r�r�r�r�r�rrrrr��s
	r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestVariancecCstj|_dSrQ)r.�variancer�rZrrrr�szTestVariance.setUpcCs6dddtdd�td�fD]}|�tj|j|g�qdS)Nrg33333�8@g�(G�!=Cr�r�z4.2084�rrr�r.r
r�rzrrrr�szTestVariance.test_single_valuecCs"gd�}d}|�|�|�|�dS)Nr�r�r�r�rrrr�szTestVariance.test_intscCsXt}|dd�|dd�|dd�|dd�g}|dd�}|�|�}|�||�|�|t�dS)Nrr�r|r~rr�r�rrrr�s$

zTestVariance.test_fractionscCsZt}|d�|d�|d�|d�g}d|d�|d�}|�|�}|�||�|�|t�dS)Nrr~r}r�z9.5r|r�r�rrrr�#s
zTestVariance.test_decimalscCs0d}|�|�|�d�|�|j|dd�d�dS)N�r�rrr�rr��xbarr�r�r�rrr�test_center_not_at_mean,sz$TestVariance.test_center_not_at_meanN)	r*r+r,r�r�r�r�r�r�rrrrr�
s		r�c@s$eZdZdd�Zdd�Zdd�ZdS)�
TestPStdevcCstj|_dSrQ)r.Zpstdevr�rZrrrr�3szTestPStdev.setUpcCs8dd�td�D�}t�t�|��}|�|�|�|�dS)NcSsg|]}t�dd��qS)i��r?rrrrrr 8r�z7TestPStdev.test_compare_to_variance.<locals>.<listcomp>r�)r!r�sqrtr.r�r3r�r�rrr�test_compare_to_variance6sz#TestPStdev.test_compare_to_variancecCs0d}|�|�|�d�|�|j|dd�d�dS)N)r|r�r~r�r�r�)�murNr�r�rrrr�<sz"TestPStdev.test_center_not_at_meanN)r*r+r,r�r�r�rrrrr�1sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�	TestStdevcCstj|_dSrQ)r.�stdevr�rZrrrr�DszTestStdev.setUpcCs6dddtdd�td�fD]}|�tj|j|g�qdS)N�QgH�z�wi@gf7?+�Brhr�z35.719r�rzrrrr�GszTestStdev.test_single_valuecCs8dd�td�D�}t�t�|��}|�|�|�|�dS)NcSsg|]}t�dd��qS)rgr}rrrrrr Nr�z6TestStdev.test_compare_to_variance.<locals>.<listcomp>r�)r!rr�r.r�r3r�r�rrrr�Lsz"TestStdev.test_compare_to_variancecCsd}|�|j|dd�d�dS)Nr�rrr�r�r�r�rrrr�Rsz!TestStdev.test_center_not_at_meanN)r*r+r,r�r�r�r�rrrrr�Bsr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestGeometricMeancCs�tj}|�|gd��d�|�|ddg�d�|�|dg�d�t�d�tdd	�tdd
�tdd�tddd
�tddd�gd�dd�td
�D�dd�td�D�dd�td�D�f	D]B}t�tt	|��t	d�t
|�}||�}|�t�|t
|���q�dS)N)r^r?r��B@r�g"@g@g�1@l���;rrjr�r{r�r|r)r�r]rmrh�xr~cSsg|]}t�d��qS)�I@�r�expovariate�r�rOrrrr fr�z1TestGeometricMean.test_basics.<locals>.<listcomp>cSsg|]}t�dd��qS)r�rI)r�lognormvariater�rrrr gr���cSsg|]}t�ddd��qS)r��i�)r�
triangularr�rrrr hr�r�)r.�geometric_mean�assertAlmostEqualr�seedr!r�prodr�rrIrd�iscloser)r7r��rngZ
gm_decimalZgm_floatrrrrhXs$


� zTestGeometricMean.test_basicscCs�tj}t}t}d}gd�df|d�|d�|d�gdf|dd	�|d
d�|dd
�gd
fdd
|dd
�gdfdtgd��dffD]2\}}||�}|�t|�t|�|j||dd�qxdS)Ng�d�@rjrmrnrorprqr~rr�rr�rrr�rt)rjrZrurh�Zplaces)	r.r�rrr�r.rrr�)r7r�r�r�rwr"r�rxrrr�test_various_input_typesns
�z*TestGeometricMean.test_various_input_typescCs�tj}d}|d|d|d|g�}|�t�|d|��|�t�|��d}|d|d|d|g�}|�t�|d|��|�|d�dS)Ngp~gK@g8@r�gprX)r.r�rdrr�r�r$�assertNotEqual)r7r�ZlargeZbig_gmZsmallZsmall_gmrrr�test_big_and_small�sz$TestGeometricMean.test_big_and_smallcCs�tj}tj}|�|��|g�Wd�n1s40Y|�|��|gd��Wd�n1sj0Y|�|��|gd��Wd�n1s�0Y|�|��|tg��Wd�n1s�0Y|�t��|d�Wd�n1�s
0Y|�t��|gd��Wd�n1�sB0Y|�t��|�Wd�n1�st0Y|�t��|gd�d�Wd�n1�s�0YdS)N)r�rXrk)r�g�rkryrzr{)r.r�r
r�r�rQ)r7r�r
rrrr|�s$&***(,&z"TestGeometricMean.test_error_casescCs�tj}td�}td�}|�t�|d|g��d�|�t�|||g��d�|�t�|d|g��d�|�t��|||g�Wd�n1s�0YdSr})	r.r�rrdrrr$r�r#)r7r�rr~rrrr��sz%TestGeometricMean.test_special_valuesN)r*r+r,rhr�r�r|r�rrrrr�Vs
r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestQuantilescstj}gd�}t�|�dgfddgfdddgfdgd	�fd
gd�fdgd
�fdgd�fdgd�fdgd�fdgd�ff
D�]P\}}|�||||d��|�t|||d��|d�tttfD]D�|t	�|�|d�}|�
�fdd�|D��|�|tt	�|���q�t|�dk�r&|�|||d�|�t|�}d|d|d}d|d|d}|||g}	|�|||d�||	|dd�||f�dd�}
tt	|
|��}|t	|
|�|d�}|�
t
d d�t||�D���qztdd!�D]8}
tjtd"�|
d#�}||�\}}}|�|t�|���q�dS)$N)r�r&�rUi^rr�@o@r|�i@�t@r�)�d@r���t@rh)�a@��k@�@r@��u@r�)�^@r�r�r���u@r�)�Y@r�g�j@r�g�r@r�gXv@r�)	gV@r�gg@r�r�r�g`t@r�g�v@r�)�T@r�r�r�� l@r�g�q@r�r�r�g�v@r_)gR@gZ@r�ge@r�r��n@g�p@r�r�g�t@r�g@v@gw@�rc3s|]}tt|��k�VqdSrQ��allrr��Zdatatyperrr��r�z4TestQuantiles.test_specific_cases.<locals>.<genexpr>rrYrg�	inclusive�r�methodcSsd|dS�Nr�g3333�J�@rr	rrrr��sz,TestQuantiles.test_specific_cases.<locals>.fcss|]\}}t�||�VqdSrQ�rr��r�rPrrrrr��r�r�rj��k)r.�	quantilesrr�r3rIrrrr�rdrYr�r�rMr!�choicesr&)r7r�r"rrrsZsdata�lo�hiZpadded_datar��exp�actr��q1�q2�q3rr�r�test_specific_cases�sN








�
� z!TestQuantiles.test_specific_casescs0tj}gd�}t�|�dgfddgfdddgfdgd	�fd
gd�fdgd
�fdgd�fdgd�fdgd�fdgd�ff
D]�\}}|�||||dd��|�t|||dd��|d�tttfD]F�|t	�|�|dd�}|�
�fdd�|D��|�|tt	�|���q�dd�}tt	||��}|t	||�|dd�}|�
tdd�t
||�D���qz|�|ddgddd�gd��|�|tdd �ddd�gd��d!d"�td#�D�}||d$dd�}	|�t|��|�t|��||d$d%�}|�||	�tdd&�D]<}
tjtd�|
d'�}||dd(�\}}}
|�|t�|���q�dS))N)rjr&i�i rr��r@r|r��y@r�)��e@r��@@rh)r�r���v@���@r�)��b@r�r�r����@r�)g0a@�r�r�gpw@r�gP�@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�c3s|]}tt|��k�VqdSrQr�r�r�rrr�	r�z>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>cSsd|dSr�rr	rrrr�	sz6TestQuantiles.test_specific_cases_inclusive.<locals>.fcss|]\}}t�||�VqdSrQr�r�rrrr�	r�rrj)	�$@r�g>@gD@r�gN@g�Q@r�g�V@r�cSsg|]}t�d��qS)r{)r�	randranger�rrrr 	r�z?TestQuantiles.test_specific_cases_inclusive.<locals>.<listcomp>i�� r�r�r��r�)r.r�rr�r3rIrrrr�rdrYr�rMr!rrcrr�r&)r7r�r"rrrsr�r�r�rr�r�r�r�rr�r�test_specific_cases_inclusive�sP








� ��z+TestQuantiles.test_specific_cases_inclusivecCsPtj}tdd�D]:}dg|}|�||�gd��|�||dd�gd��qdS)Nrr�r�)r�r�r�r�r�)r.r�r!r3)r7r�rr"rrr�test_equal_inputs	s
�zTestQuantiles.test_equal_inputsc	s�tj}d}dd�t|�D��tt���|kr>��t�d��q���dD]:}||}|�	�fdd�|�|d�D�t
t|||���qJdD]\}||||d	h}�fd
d�|�|d�D�}dd�t||d	d��D�}|�||k�q�dS)
Nr{cSsg|]}t�d��qS)皙�����?r�r�rrrr (	r�z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>r�)
rrrhr�r�r�rjr&r�r�r�r6r{csg|]}t��|��qSr��bisect�r��qr�rrr 1	r�r�)
rmr��;�m��i;i�isi�i)&rcsg|]}t��|��qSrr�r�r�rrr 8	r�cSsh|]\}}||�qSrr)r��pr�rrr�	<setcomp>9	r�z8TestQuantiles.test_equal_sized_groups.<locals>.<setcomp>)
r.r�r!rI�setr�rr��sortr3rYrMrd)r7r��totalrZ
group_sizeZgroup_sizes�posZsizesrr�r�test_equal_sized_groups%	s"�z%TestQuantiles.test_equal_sized_groupscCstj}tj}|�t��|�Wd�n1s20Y|�t��"|gd�ddd�Wd�n1sn0Y|�t��|gd�d�Wd�n1s�0Y|�|�� |gd�dd�Wd�n1s�0Y|�|�� |gd�dd�Wd�n1�s0Y|�t�� |gd�dd�Wd�n1�sX0Y|�t�� |gd�dd	�Wd�n1�s�0Y|�|��|d
gdd�Wd�n1�s�0Y|�t�� |gd�dd�Wd�n1�s
0YdS)N)r�r�r�rmr�r�rrYr��Xr�r�)r�Nr�)r.r�r
r�rQr#)r7r�r
rrrr|<	s($0,.000.zTestQuantiles.test_error_casesN)r*r+r,r�r�r�r�r|rrrrr��s
66r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
d
d��Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�TestNormalDistcCsV|j�dd�}|�t��t|�Wd�n1s60Y|�t|j�d�dS)NrTr�)Z_muZ_sigma)r��
NormalDistr�rQ�varsr3rZ�	__slots__�r7�ndrrr�
test_slots\	s&zTestNormalDist.test_slotscCs�|j�dd�}|�|jd�|�|jd�|�|jd�|j��}|�|jd�|�|jd�|�|jd�|�|jj��|j�dd�Wd�n1s�0YGdd�d|jj�}|d	d
�}|�t|�|�dS)Nr�r]i!rri����c@seZdZdS)zGTestNormalDist.test_instantiation_and_attributes.<locals>.NewNormalDistNr)rrrr�
NewNormalDists	srr&rh)	r�r�r3r�r�r�r�r
r)r7rr�nndrrr�!test_instantiation_and_attributesb	s
,
z0TestNormalDist.test_instantiation_and_attributescCs|jj}gd�}|�|�|�|dd��|�|�t|��|dd��|�|�t|��|dd��|�|jj��|�g�Wd�n1s�0Y|�|jj��|�dg�Wd�n1s�0YGdd�d|�}|�|�}|�t|�|�dS)N)�`ri�Zr��nrr}r�c@seZdZdS)zBTestNormalDist.test_alternative_constructor.<locals>.NewNormalDistNr)rrrrr�	sr)	r�r�r3Zfrom_samplesrZr�r�r
r)r7r�r"rrrrr�test_alternative_constructorx	s(*
z+TestNormalDist.test_alternative_constructorcCs�|jj}d\}}|||�}d}|�|�}|�t|�|�|�ttt|��th�|j�	|�}|�
||d|ko�||dkn�d}|j|dd�}|j|dd�}	|j|dd�}
|j|dd�}|�||
�|�|	|�|�||	�dS)N)r{rIr�r�rjzhappiness and joy)r�ztrouble and despair)r�r�Zsamplesr3rIr�r�rrr�rdr�)r7r�r��sigmar�rr"r�Zdata1Zdata2Zdata3Zdata4rrr�test_sample_generation�	s"

.z%TestNormalDist.test_sample_generationc
Cs�|jj}|dd�}|�|�d�|�d��|�|�d�|�d��td�D]$}|�|�d|�|�d|��qJd}tdd�D]6}|�||�|�|�|}|j|�|�|d	d
�q~|�}tgd��D]>\}}|j|�|d�|d	d
�|j|�|d�|d	d
�q�|dd
�}	|�|jj	��|	�d�Wd�n1�sB0Y|�
|�td��d�|�
|�td��d�|�t
�|�td����dS)Nrjr_rr�r�gP?rr"r�r�)2�+��ݓ��?r
r
ggDio��?g������?gV}��b�?g�Q�|�?gF���x�?g��g��s�?g�٬�\m�?g�� �rh�?g�K7�A`�?g��|гY�?g����Q�?g���QI�?gsh��|?�?g�=yX�5�?g|a2U0*�?g��Q��?g���N@�?g�/�$�?g~��k	��?g]�C����?gw��/��?g�~�:p��?g�>W[���?gM�
O��?gW[����?g鷯��?g{�G�z�?g
q���h�?g�|a2U�?g��K7�A�?gvq
�-�?gj�t��?g�c]�F�?g�\�C���?gףp=
��?g�����?ga2U0*��?g�y�):��?g(��y�?g��N@a�?gf�c]�F�?g"lxz�,�?g�O��n�?g�3��7��?g�e�c]��?g��n���?g��T����?r�r�-InfrXr~r)r�r�Z
assertLess�pdfr!r��cdfrLr�r
r3rrdrr)
r7r�r�rO�dxr
Zest_pdf�ZZpx�Yrrr�test_pdf�	s(
"
*zTestNormalDist.test_pdfcs6|jj}|dd���fdd�tdd�D�}|�ttt|��th�|�|t|��|���	d�d�|�}dD]:\}}|j
|�	|�|d	d
�|j
|�	|�d|d	d
�qn|dd�}|�|jj��|�	d
�Wd�n1s�0Y|���	td��d�|���	td��d�|�
t���	td����dS)Nrjr_csg|]}��|��qSr)rr��r�rrr �	r�z+TestNormalDist.test_cdf.<locals>.<listcomp>rr&r�))rXr�)r�gqZ� �?)r�g��E_A�?)g�Q���?gGɫs��?)g��(\��?g؞Y���?)g��Q��?g���9#�?)gH�z�G�?g&S���?)rsg�MbX9�?)g���Q��?gT㥛� �?)g�������?g�?�?)gffffff@g_�x�Z�?)g��Q�@g��#0��?)g)\��(@gu<f�2��?)gףp=
�@gVe����?)gH�z�G@g9���?rhr�r�rrrrXr~r)r�r�r!r3r�r�rrr�rr�r�r
rdrr)r7r�Zcdfsr�zZcum_probrrrr�test_cdf�	s 

(zTestNormalDist.test_cdfcCs�|jj}|dd�}|�|�d�|j�|�}dddd�}|��D]b\}}t|dd	�D]L\}}|d
|}	|j|�|	�|dd�d
|	}	|j|�|	�|dd�qTq@|�|dd��d�d�d}
td|
�D]$}	|	|
}	|�|�	|�|	��|	�q�tdd�D]F}d|}	|�|�	|�|	��|	�d
|	}	|�|�	|�|	��|	�q�td�D]"}|j|�|�	|��|dd��qJ|�
|jj��|�d�Wd�n1�s�0Y|�
|jj��|�d�Wd�n1�s�0Y|�
|jj��|�d
�Wd�n1�s0Y|�
|jj��|�d�Wd�n1�sL0Y|�
|jj��$|dd�}|�d�Wd�n1�s�0Y|�t
�|�td����dS)Nrjr_r�)
rXgR���Q�?g�S㥛@g���S
@gT㥛� @g^�I�@g� �rh�@g+��N@g��C��@gV-��o@)
g� �rh��?g\��(\�?g�~j�t@g+��@g�MbX9@g�(\�B@g��v��@g����@g��Sc@g�K7�A�@)
gP��n��?g�S㥛@g���Q�@g��n��
@g��(\@gP��n@g�����@g��� �r@gˡE��@g�l�q@)r�r�r�r)�startr�r|r�r�rnr�g��>���?g���E@i�3rrr&rhrXr�g�������?rr)r�r�r3Zinv_cdfr��itemsrLr�r!rr�r
rdrrr)r7r�Ziqr�ppr�rowr�r
r�rrPrrr�test_inv_cdf�	sL
�
 ****
*zTestNormalDist.test_inv_cdfcCsh|j��}dgfddgfdddgfdgd�ffD]2\}}|j|d	�}|�td
d�t||�D���q0dS)NrrrXr|g�ǘ���ۿg�ǘ����?r�)g/�$���rXg/�$���?r�css"|]\}}tj||dd�VqdS)r�)Zabs_tolNr�r�rrrr�3
s�z0TestNormalDist.test_quantiles.<locals>.<genexpr>)r�r�r�rdr�rM)r7rrrrrrr�test_quantiles)
s


��zTestNormalDist.test_quantilescCs�|jj}|dd�|dd�df|dd�|dd�dffD]6\}}}|j|�|�|dd�|j|�|�|dd�q4dd	d
�dd�}|dd�|dd�f|dd�|dd�f|dd�|dd�f|d
d�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�f|dd�|dd�ffD]B\}}|j|�|�|||�d	d�|j|�|�|||�d	d��q||�}|�t��|��Wd�n1�s�0Y|�t��|�||�Wd�n1�s(0Y|�t��|�d�Wd�n1�s^0Y|�|jj�� |�|dd��Wd�n1�s�0Y|�|jj�� |dd��|�Wd�n1�s�0YdS) NrXrrr�gɎ�@���?gM-[닄�?r�r�i rh)�stepsrcs�tj}|j|jd}|t|j|j�}||�d||���fdd�t|�D�}tt|j|��}tt|j|��}	t||�||	��}
|tt	||	��|
S)z0Numerical integration cross-check for overlap() rrcsg|]}�|��qSrrr��rrrrr I
r�zHTestNormalDist.test_overlap.<locals>.overlap_numeric.<locals>.<listcomp>)
rr�r�rr�r!rYr�rrc)r�rrrr��center�widthZx_arrZxpZypr�rr r�overlap_numericB
sz4TestNormalDist.test_overlap.<locals>.overlap_numericr{�Ar�rjr_r	ri����r��rr�gj�t��?g�~j�t�h?gj�t��?ga2U0*�3?g��MbX�?rr)r�r�r�Zoverlapr�rQr
)r7r�ZX1ZX2Zpublished_resultr#r�rrr�test_overlap6
sF�� (,*0zTestNormalDist.test_overlapcCs(|jj}|dd�}|�|�d�d�|�|�d�d�|�|�d�d�|�t��|��Wd�n1sp0Y|�t��|�dd�Wd�n1s�0Y|�t��|�d�Wd�n1s�0Y|�|jj�� |dd	��d�Wd�n1�s0YdS)
Nrjr_�gffffff@�:gffffff�rXrr)r�r�r3Zzscorer�rQr
)r7r�r�rrr�test_zscoreu
s
&*(zTestNormalDist.test_zscorecCsX|j�dd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nrjr_��)r�r�r3r�r&r[r�r�)r7r�rrr�test_properties�
szTestNormalDist.test_propertiescCsL|jj}|dd�}|dd�}|�|||dd��|�|||dd��dS)Nrjr�rnrh�rmr�)r�r�r3�r7r�r�rrrr�'test_same_type_addition_and_subtraction�
s


z6TestNormalDist.test_same_type_addition_and_subtractioncCs|jj}|dd�}d}|�|
|dd��|�||dd��|�|||dd��|�|||dd��|�|||dd��|�|||dd��|�|||dd	��|�|||dd	��|�|||dd
��|�t��||Wd�n1�s0YdS)Nrjr_r�rr	ri����r�r%r�)r�r�r3r�rQ)r7r�r�r%rrr�test_translation_and_scaling�
s
z+TestNormalDist.test_translation_and_scalingcCs||jj}|dd�}|
}|�||�|�|j|j�|�|j|j�|}|�||�|�|j|j�|�|j|j�dS)Nrjr�)r�r�ZassertIsNotr3r�r�r-rrr�test_unary_operations�
s
z$TestNormalDist.test_unary_operationscCs"|jj}|�}|dd�}|�}|dd�}|dd�}|dd�}|�||�|�||�|�||�|�||�|�||�Gdd�d�}|�}	|�|�|	�t�|�||	kd�|�|	|kd�Gdd�d|�}
|
d	d
d�}|d	d
�}|�||�Gdd
�d
�}|d	d
�}
|d	d
�}|�||
�dS)Nrr�r�c@seZdZdd�ZdS)z'TestNormalDist.test_equality.<locals>.AcSsdSr^rrhrrr�__eq__�
sz.TestNormalDist.test_equality.<locals>.A.__eq__N)r*r+r,r1rrrrrK�
srKr�cseZdZ�fdd�Z�ZS)z5TestNormalDist.test_equality.<locals>.SizedNormalDistcst��||�||_dSrQ)rf�__init__r)r7r�rrrirrr2�
sz>TestNormalDist.test_equality.<locals>.SizedNormalDist.__init__)r*r+r,r2rkrrrir�SizedNormalDist�
sr3rjr_�9c@seZdZdd�ZdS)z3TestNormalDist.test_equality.<locals>.LognormalDistcSs||_||_dSrQ)r�r)r7r�rrrrr2�
sz<TestNormalDist.test_equality.<locals>.LognormalDist.__init__N)r*r+r,r2rrrr�
LognormalDist�
sr5)r�r�r�r3r1�NotImplemented)r7r��nd1�nd2�nd3Znd4Znd5Znd6rKrr3�sr5Zlndrrrr�
test_equality�
s2






zTestNormalDist.test_equalitycCsZ|j�dd�}t�|�}|�||�t�|�}|�||�t�t�|��}|�||�dS)N��B@��@)r�r��copyr3�deepcopy�pickle�loads�dumps)r7rr7r8r9rrr�test_pickle_and_copy�
s

z#TestNormalDist.test_pickle_and_copycCsH|jj}|dd�|dd�|dd�|dd�|dd�h}|�t|�d�dS)Nrjr_r�g.@r�rcr|)r�r�r3rI)r7ZNDr:rrr�test_hashability�
s,zTestNormalDist.test_hashabilitycCs"|j�dd�}|�t|�d�dS)Nr<r=z NormalDist(mu=37.5, sigma=5.625))r�r�r3�reprrrrr�	test_repr�
szTestNormalDist.test_reprN)r*r+r,rrr
rrrrZskip_if_pgo_taskrrr&r)r+r.r/r0r;rCrDrFrrrrr�S	s&	'
@
?,	r�c@s eZdZeZdd�Zdd�ZdS)�TestNormalDistPythoncCs|jtjd<dSr1�r�r	�modulesrZrrrr��
szTestNormalDistPython.setUpcCsttjd<dSr1�r.r	rIrZrrr�tearDown�
szTestNormalDistPython.tearDownN)r*r+r,r5r�r�rKrrrrrG�
srGr9c@s eZdZeZdd�Zdd�ZdS)�TestNormalDistCcCs|jtjd<dSr1rHrZrrrr��
szTestNormalDistC.setUpcCsttjd<dSr1rJrZrrrrKszTestNormalDistC.tearDownN)r*r+r,r:r�r�rKrrrrrL�
srLcCs|�t���|S)z&Used for doctest/unittest integration.)ZaddTestsrZDocTestSuite)�loaderZtests�ignorerrr�
load_testssrO�__main__)r!r")Or-r�r?�collections.abcr>r�rrr@rr	r<�testrrrrrr.r
rr r(r)Zimport_fresh_moduler5r:r�r0r>rWr\rrr�r�r�r�r�r�rrrr2r=rDr_rpr~r�r�r�r�r�r�r�r�r�rr$r5r6r9r:rZrfrir�r�r�r�r�r�r�r�rGr=rLrOr*�mainrrrr�<module>s�
:+
_
>@w-@4d>c'H
@`d9
r:	1B%'Y%!	



Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists