Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_fractions.cpython-312.pyc

�

'Μg�����dZddlZddlmZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZmZddlZddlmZmZe	j(Zej,j/e�xsej2Zej,j7ed�ZGd�d	e�ZGd
�de�ZGd�d
e	j(�Z d�Z!d�Z"Gd�d�Z#Gd�de#�Z$ejJjMe$�Gd�de#�Z'ejPjMe'�Gd�d�Z)ejTjMe)�Gd�d�Z+ejJjMe+�Gd�d�Z,ejPjMe,�Gd�d�Z-ejPjMe-�Gd�de-e.�Z/Gd �d!ej`�Z1e2d"k(rejf�yy)#zTests for Lib/fractions.py.�N)�Decimal)�requires_IEEE_754)�copy�deepcopy)�dumps�loadszformatfloat_testcases.txtc�J�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZeZ
y)�
DummyFloatz8Dummy float class for testing comparisons with Fractionsc�H�t|t�std��||_y)Nz-DummyFloat can only be initialized from float)�
isinstance�float�	TypeError�value��selfrs  �0/usr/local/lib/python3.12/test/test_fractions.py�__init__zDummyFloat.__init__s���%��'��K�L�L���
�c���t|tj�r&|tj	|j
�|�St|t�r||j
|j
�StS�N)r�numbers�Rational�F�
from_floatrr
�NotImplemented)r�other�ops   r�_richcmpzDummyFloat._richcmp sQ���e�W�-�-�.��a�l�l�4�:�:�.��6�6�
��z�
*��d�j�j�%�+�+�.�.�!�!rc�B�|j|tj�Sr)r�operator�eq�rrs  r�__eq__zDummyFloat.__eq__(���D�M�M�%����$E�Erc�B�|j|tj�Sr)rr �ler"s  r�__le__zDummyFloat.__le__)r$rc�B�|j|tj�Sr)rr �ltr"s  r�__lt__zDummyFloat.__lt__*r$rc�B�|j|tj�Sr)rr �ger"s  r�__ge__zDummyFloat.__ge__+r$rc�B�|j|tj�Sr)rr �gtr"s  r�__gt__zDummyFloat.__gt__,r$rc��Jd��)Nz/__float__ should not be invoked for comparisons��rs r�	__float__zDummyFloat.__float__/s
��G�G�G�urc��Jd��)Nz-__sub__ should not be invoked for comparisonsr2r"s  r�__sub__zDummyFloat.__sub__3s
��E�E�E�urN)�__name__�
__module__�__qualname__�__doc__rrr#r'r*r-r0r4r6�__rsub__r2rrr
r
s2��B��
"�F�E�E�E�E�H�F��Hrr
c�:�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�
DummyRationalzATest comparison of Fraction with a naive rational implementation.c�X�tj||�}||z|_||z|_yr)�math�gcd�num�den)rrArB�gs    rrzDummyRational.__init__;s(���H�H�S�#����!�8����!�8��rc��t|tj�r4|j|jk(xr|j
|jk(StSr)r�	fractions�FractionrA�
_numeratorrB�_denominatorrr"s  rr#zDummyRational.__eq__@sH���e�Y�/�/�0��H�H�� 0� 0�0�3��H�H�� 2� 2�2�
4�"�!rc�h�|j|jz|j|jzkSr�rArHrBrGr"s  rr*zDummyRational.__lt__G�+���x�x�%�,�,�,�t�x�x�%�:J�:J�/J�J�Krc�h�|j|jz|j|jzkDSrrJr"s  rr0zDummyRational.__gt__JrKrc�h�|j|jz|j|jzkSrrJr"s  rr'zDummyRational.__le__M�+���x�x�%�,�,�,����5�;K�;K�0K�K�Lrc�h�|j|jz|j|jzk\SrrJr"s  rr-zDummyRational.__ge__PrNrc��Jd��)Nz__float__ should not be invokedr2r3s rr4zDummyRational.__float__Us
��7�7�7�urN)r7r8r9r:rr#r*r0r'r-r4r2rrr=r=8s,��K��
"�L�L�M�M�
8rr=c��eZdZdZy)�
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r7r8r9r:r2rrrRrRXs��@rrRc�2�|j|jfSr��	numerator�denominator)�rs r�_componentsrX\s��
�K�K����'�'rc�n�t|�t|�k(xr||k(xstj||�Sr)�typer?�isclose)�a�bs  r�typed_approx_eqr^_s.����7�d�1�g��@�1��6�#?�T�\�\�!�Q�-?�@rc�X�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zy)�Symbolicz�Simple non-numeric class for testing mixed arithmetic.
    It is not Integral, Rational, Real or Complex, and cannot be converted
    to int, float or complex. but it supports some arithmetic operations.
    c��||_yr�rrs  rrzSymbolic.__init__gs	����
rc�Z�t|t�rtS|j|�d|���S�Nz * �rrr�	__class__r"s  r�__mul__zSymbolic.__mul__i�,���e�Q��!�!��~�~���c�%��1�2�2rc�.�|j|�d|���Srd�rfr"s  r�__rmul__zSymbolic.__rmul__m����~�~���s�4�&�1�2�2rc�Z�t|t�rtS|j|�d|���S�Nz / rer"s  r�__truediv__zSymbolic.__truediv__orhrc�.�|j|�d|���Srnrjr"s  r�__rtruediv__zSymbolic.__rtruediv__srlrc�Z�t|t�rtS|j|�d|���S�Nz % rer"s  r�__mod__zSymbolic.__mod__urhrc�.�|j|�d|���Srsrjr"s  r�__rmod__zSymbolic.__rmod__yrlrc�Z�t|t�rtS|j|�d|���S�Nz ** rer"s  r�__pow__zSymbolic.__pow__{s,���e�Q��!�!��~�~���d�5�'�2�3�3rc�.�|j|�d|���Srxrjr"s  r�__rpow__zSymbolic.__rpow__s���~�~���t�D�6�2�3�3rc�r�|j|jk7rtS|j|jk(Sr)rfrrr"s  rr#zSymbolic.__eq__�s+���?�?�d�n�n�,�!�!��z�z�U�[�[�(�(rc��|j�Srrbr3s r�__str__zSymbolic.__str__�s���*�*��rc�N�|jj�d|j�d�S)N�(�))rfr7rr3s r�__repr__zSymbolic.__repr__�s$���.�.�)�)�*�!�D�J�J�>��;�;rN)r7r8r9r:rrgrkrorqrtrvryr{r#r~r�r2rrr`r`bsC����3�3�3�3�3�3�4�4�)��<rr`c��eZdZy)�SymbolicRealN�r7r8r9r2rrr�r�����rr�c��eZdZy)�SymbolicComplexNr�r2rrr�r��r�rr�c�R�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�Ratz3Simple Rational class for testing mixed arithmetic.c� �||_||_yrrT)r�n�ds   rrzRat.__init__�s�������rc��t|t�rtS|j|j|jz|j
|j
z�Sr�rrrrfrUrVr"s  rrgzRat.__mul__�sH���e�Q��!�!��~�~�d�n�n�u���>�"�.�.��1B�1B�B�D�	Drc��|j|j|jz|j|jz�Sr�rfrUrVr"s  rrkzRat.__rmul__�s8���~�~�e�o�o����>�#�/�/�$�2B�2B�B�D�	Drc��t|t�rtS|j|j|j
z|j
|jz�Srr�r"s  rrozRat.__truediv__�sH���e�Q��!�!��~�~�d�n�n�u�/@�/@�@�"�.�.����@�B�	Brc��|j|j|jz|j|jz�Srr�r"s  rrqzRat.__rtruediv__�s8���~�~�e�o�o��0@�0@�@�#�/�/�$�.�.�@�B�	Brc��t|t�rtS|j|jz}|j|j|jz|z|�Sr)rrrrVrUrf�rrr�s   rrtzRat.__mod__�sK���e�Q��!�!����u���.���~�~�d�n�n�u�/@�/@�@�1�D�a�H�Hrc��|j|jz}|j|j|jz|z|�Sr)rVrUrfr�s   rrvzRat.__rmod__�s;��������.���~�~�e�o�o��0@�0@�@�1�D�a�H�Hrc��t|t�rtS|j|j|z|j
|z�Srr�r"s  rryzRat.__pow__�s<���e�Q��!�!��~�~�d�n�n��5�"�.�.�%�7�9�	9rc�4�|j|jzSrrTr3s rr4z
Rat.__float__�s���~�~�� 0� 0�0�0rc���|j|jk7rtSt|j|j�xr t|j|j�Sr)rfrr^rUrVr"s  rr#z
Rat.__eq__�sL���>�>�U�_�_�,�!�!��������@�E��� 0� 0�%�2C�2C�D�	Frc�h�|jj�d|j�d|j�d�S�Nr�z, r�)rfr7rUrVr3s rr�zRat.__repr__�s3���.�.�)�)�*�!�D�N�N�+=�R��@P�@P�?S�ST�U�UrN)r7r8r9r:rrgrkrorqrtrvryr4r#r�r2rrr�r��sD��=��D�
D�B�
B�I�
D�9�
1�F�
Vrr�c�V�eZdZdZed�fd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
y)
�Rootz/Simple Real class for testing mixed arithmetic.�c� �||_||_yr)�base�degree)r�vr�s   rrz
Root.__init__�s����	���rc��t|t�rtS|j|j||j
zz|j
�Sr�rrrrfr�r�r"s  rrgzRoot.__mul__��9���e�Q��!�!��~�~�d�i�i�%����*<�<�d�k�k�J�Jrc�n�|j||jz|jz|j�Sr�rfr�r�r"s  rrkz
Root.__rmul__��)���~�~�e�T�[�[�0�4�9�9�<�d�k�k�J�Jrc��t|t�rtS|j|j||j
zz|j
�Srr�r"s  rrozRoot.__truediv__�r�rc�n�|j||jz|jz|j�Srr�r"s  rrqzRoot.__rtruediv__�r�rc��t|t�rtS|j|j|j
|z�Srr�r"s  rryzRoot.__pow__�s0���e�Q��!�!��~�~�d�i�i����u�)<�=�=rc�^�t|j�dt|j�zzS�N�)r
r�r�r3s rr4zRoot.__float__�s$���T�Y�Y��A��d�k�k�(:�$:�;�;rc���|j|jk7rtSt|j|j�xr t|j|j�Sr)rfrr^r�r�r"s  rr#zRoot.__eq__�sD���>�>�U�_�_�,�!�!��t�y�y�%�*�*�5�d�/�$�+�+�W\�Wc�Wc�:d�drc�h�|jj�d|j�d|j�d�Sr�)rfr7r�r�r3s rr�z
Root.__repr__�s.���.�.�)�)�*�!�D�I�I�=��4�;�;�/��K�KrN)r7r8r9r:rrrgrkrorqryr4r#r�r2rrr�r��s?��9��a�D��K�K�K�K�>�<�e�Lrr�c�@�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�Polarz2Simple Complex class for testing mixed arithmetic.c� �||_||_yr)rW�phi)rrWr�s   rrzPolar.__init__�s�������rc��t|t�rtS|j|j|z|j
�Sr�rrrrfrWr�r"s  rrgz
Polar.__mul__��/���e�Q��!�!��~�~�d�f�f�u�n�d�h�h�7�7rc�T�|j||jz|j�Sr�rfrWr�r"s  rrkzPolar.__rmul__�s���~�~�e�d�f�f�n�d�h�h�7�7rc��t|t�rtS|j|j|z|j
�Srr�r"s  rrozPolar.__truediv__�r�rc�V�|j||jz|j�Srr�r"s  rrqzPolar.__rtruediv__�s!���~�~�e�d�f�f�n�t�x�x�i�8�8rc��t|t�rtS|j|j|z|j
|z�Srr�r"s  rryz
Polar.__pow__�s4���e�Q��!�!��~�~�d�f�f��o�t�x�x�%�/?�@�@rc���|j|jk7rtSt|j|j�xr t|j|j�Sr)rfrr^rWr�r"s  rr#zPolar.__eq__�sA���>�>�U�_�_�,�!�!��t�v�v�u�w�w�/�X�O�D�H�H�e�i�i�4X�Xrc�h�|jj�d|j�d|j�d�Sr�)rfr7rWr�r3s rr�zPolar.__repr__�s.���.�.�)�)�*�!�D�F�F�:�R����|�1�E�ErN)r7r8r9r:rrgrkrorqryr#r�r2rrr�r��s0��<��8�8�8�9�A�Y�Frr�c�F�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�Rectz8Other simple Complex class for testing mixed arithmetic.c� �||_||_yr)�x�y�rr�r�s   rrz
Rect.__init__s�������rc��t|t�rtS|j|j|z|j
|z�Sr�rrrrfr�r�r"s  rrgzRect.__mul__�3���e�Q��!�!��~�~�d�f�f�u�n�d�f�f�u�n�=�=rc�Z�|j||jz||jz�Sr)rfr�r�r"s  rrkz
Rect.__rmul__s#���~�~�e�d�f�f�n�e�d�f�f�n�=�=rc��t|t�rtS|j|j|z|j
|z�Srr�r"s  rrozRect.__truediv__	r�rc���|j|jz|j|jzz}|j||j|zz||j|zz�Sr)r�r�rf)rrrWs   rrqzRect.__rtruediv__
sO���F�F�T�V�V�O�d�f�f�t�v�v�o�-���~�~�e�t�v�v��z�2�E�T�V�V�a�Z�4H�I�Irc�t�t||jztj|�|jz�Sr)r�r�r?�logr�r"s  rr{z
Rect.__rpow__s(���U�d�f�f�_�d�h�h�u�o����&>�?�?rc�B�t|j|j�Sr)�complexr�r�r3s r�__complex__zRect.__complex__s���t�v�v�t�v�v�&�&rc���|j|jk7rtSt|j|j�xr t|j|j�Sr)rfrr^r�r�r"s  rr#zRect.__eq__sA���>�>�U�_�_�,�!�!��t�v�v�u�w�w�/�T�O�D�F�F�E�G�G�4T�Trc�h�|jj�d|j�d|j�d�Sr�)rfr7r�r�r3s rr�z
Rect.__repr__s.���.�.�)�)�*�!�D�F�F�:�R����z��C�CrN)
r7r8r9r:rrgrkrorqr{r�r#r�r2rrr�r��s6��B��>�>�>�J�@�'�U�Drr�c��eZdZy)�RectComplexNr�r2rrr�r�r�rr�c�:�eZdZd�Zd�Zd�Zd�Zed��Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1ed/��Z2y0)1�FractionTestc�p�|jt|�t|��|j||�y)z4Asserts that both the types and values are the same.N)�assertEqualrZ�r�expected�actuals   r�assertTypedEqualszFractionTest.assertTypedEquals!s*������h���f��6�����6�*rc	��|j||�|jttt|��ttt|���y)zBAsserts that both the types and values in the tuples are the same.N)�assertTupleEqual�assertListEqual�list�maprZr�s   r�assertTypedTupleEqualsz#FractionTest.assertTypedTupleEquals&s:�����h��/����T�#�d�H�"5�6��S��v�=N�8O�Prc��	||i|��|jd|jz�y#|$r%}|j|t|��Yd}~yd}~wwxYw)z@Asserts that callable(*args, **kwargs) raises exc_type(message).z
%s not raisedN)�failr7r��str)r�exc_type�message�callable�args�kwargs�es       r�assertRaisesMessagez FractionTest.assertRaisesMessage+sV��	;��d�%�f�%�
�I�I�o��(9�(9�9�:���	.����W�c�!�f�-�-��	.�s�)�A�A�Ac�(�|jdtt���|jdttd���|jdtttdd����|jdttdd���|jdttdd���|jd	ttd
d
���|jdttdd
���|jdttdd���|jdttd���|jdtttdd�d���|jdttdtdd����|jdtttdd�tdd����|jtdtdd�|jttd�|jttd d�|jttdd!�|jttdd"�|jttddd�y)#N�rr�)�r�r��r��r�)���r�r�r�)r�r����)r�r���
)r��r�)�m+?�Rr�r�)r��M�)���r�r�����	)i�	i�	��c�qzFraction(12, 0)�ry�?@�3/2yy�?)r�rXrr��ZeroDivisionError�assertRaisesrr3s r�testInitzFractionTest.testInit5s��������Q�S�!1�2������Q�q�T�!2�3������Q�q��A�w�Z�!8�9�����+�a��A�h�"7�8�����+�a��2�h�"7�8������Q�r�2�Y�!7�8������Q�q�"�X�!6�7�����+�a��2�h�"7�8�����k�!�F�)�&<�=�����+�a��!�Q���n�"=�>�����+�a��1�S�!�9�o�">�?�����{�1�Q�r�1�X�q��c�{�3K�'L�M�� � �!2�4E�!"�B��	+����)�Q��1����)�Q��q�1����)�Q��2�.����)�Q��2�.����)�Q��1�a�0rc��|jdttd���|jdttd���|jdttd���|jtttd��|jtttd��|jtttd	��y)
N)r�r��@r���)��L�33fl皙�����?�nan�inf�-inf)r�rXrr�
ValueErrorr
�
OverflowErrorr3s r�testInitFromFloatzFractionTest.testInitFromFloatNs��������Q�s�V�!4�5������Q�t�W�!5�6����>�$�Q�s�V�,�	.�	
���*�a��u��6����-��E�%�L�9����-��E�&�M�:rc
�2�|jdtttd����|jdtttd����|jdtttd����|j	t
ttd��|j	t
ttd��|j	tttd	��|j	tttd
��y)N)r�r�z1.1)r���z3.5e-2r�z.000e20r	�snanr
r)r�rXrrrrr
r3s r�testInitFromDecimalz FractionTest.testInitFromDecimalYs�������$�Q�w�u�~�%6�7�	9�����$�Q�w�x�'8�%9�:�	<�����$�Q�w�y�'9�%:�;�	=�	
���*�a����8����*�a����9����-��G�E�N�;����-��G�F�O�<rc��
�|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jd	ttd
���|jdttd���|jd
ttd���|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jdttd���|jd ttd!���|jd"ttd#���|jd$ttd%���|jd$ttd&���|jtd'td(�|jt
d)td*�|jt
d+td,�|jt
d-td.�|jt
d/td0�|jt
d1td2�|jt
d3td4�|jt
d5td6�|jt
d7td8�|jt
d9td:�|jt
d;td<�|jt
d=td>�|jt
d?td@�|jt
dAtdB�|jt
dCtdD�|jt
dEtdF�|jt
dGtdH�|jt
dItdJ�|jt
dKtdL�|jt
dMtdN�|jt
dOtdP�|jt
dQtdR�|jt
dStdT�|jt
dUtdV�|jt
dWtdX�|jt
dYtdZ�|jt
d[td\�|jt
d]td^�|jt
d_td`�|jt
datdb�|jt
dctdd�de}|jt
df|zdgzt|�|jt
dh|zdgztdi|z�|jt
dj|zdgztdk|z�|jt
dl|zdgztdm|z�y)nN)r�r��5)r�r�rz3 / 2z 
  +3/2)���r�z-3/2  )�
r�z    013/02 
  )�r�z 3.2 )i�r�z -3.2 )rr�z -3. )r�r�z .6 )r�i5z32.e-5)i@Br�z1E+06)i���r�z-1.23e4r�z .0e+0	z-0.000e0)�{r��1_2_3)�)�kz1_2_3/3_2_1)�i�z3.14_15)rl@�9�Hz3.14_15e-1_0)�e�dz1.01z1.0_1zFraction(3, 0)z3/0z"Invalid literal for Fraction: '3/'z3/z"Invalid literal for Fraction: '/2'z/2z$Invalid literal for Fraction: '3/+2'z3/+2z%Invalid literal for Fraction: '+ 3/2'z+ 3/2z#Invalid literal for Fraction: '3a2'�3a2z%Invalid literal for Fraction: '3/7.2'z3/7.2z%Invalid literal for Fraction: '3.2/7'z3.2/7z!Invalid literal for Fraction: '.'�.z!Invalid literal for Fraction: '_'�_z"Invalid literal for Fraction: '_1'�_1z$Invalid literal for Fraction: '1__2'�1__2z"Invalid literal for Fraction: '/_'z/_z#Invalid literal for Fraction: '1_/'z1_/z#Invalid literal for Fraction: '_1/'z_1/z%Invalid literal for Fraction: '1__2/'z1__2/z#Invalid literal for Fraction: '1/_'z1/_z$Invalid literal for Fraction: '1/_1'z1/_1z&Invalid literal for Fraction: '1/1__2'z1/1__2z&Invalid literal for Fraction: '1._111'z1._111z&Invalid literal for Fraction: '1.1__1'z1.1__1z'Invalid literal for Fraction: '1.1e+_1'z1.1e+_1z)Invalid literal for Fraction: '1.1e+1__1'z	1.1e+1__1z&Invalid literal for Fraction: '123.dd'z123.ddz(Invalid literal for Fraction: '123.5_dd'z123.5_ddz$Invalid literal for Fraction: 'dd.5'zdd.5z$Invalid literal for Fraction: '7_dd'�7_ddz$Invalid literal for Fraction: '1/dd'z1/ddz(Invalid literal for Fraction: '1/123_dd'z1/123_ddz&Invalid literal for Fraction: '789edd'�789eddz(Invalid literal for Fraction: '789e2_dd'�789e2_dd�399999999999999999999999999999999999999999999999999_zInvalid literal for Fraction: '�'z!Invalid literal for Fraction: '1/z1/z!Invalid literal for Fraction: '1.z1.z$Invalid literal for Fraction: '1.1+ez1.1+e)r�rXrr�rr)r�vals  r�testFromStringzFractionTest.testFromStringfs��������Q�s�V�!4�5������Q�u�X�!6�7������Q�w�Z�!8�9������Q�{�^�!<�=�����+�a��k�":�;�����+�a�0A�.B�"C�D�����+�a��j�"9�:�����;�q��{�#;�<�����+�a��j�"9�:������Q�v�Y�!7�8�����K��(��$<�=�����{�1�W�:�'>�?�����k�!�I�,�&?�@������Q�z�]�!;�<������Q�z�]�!;�<�����;�q��z�#:�;�����K��-�0@�$A�B�����{�1�Y�<�'@�A����)�;�q��7H�+I�J�����[��6��%;�<�����[��7��%<�=�� � ��/�
�u�	�	
� � ��<�
�t�	�	
� � ��<�
�t�	�	
� � ��>�
�v�	�	
� � ��?�
�w�	�	
� � ��=�
�u�	�	
� � ��?�
�w�	�	
� � ��?�
�w�	�	
� � ��;�
�s�	�	
� � ��;�
�s�	�	
� � ��<�
�t�	�	
� � ��>�
�v�	�	
� � ��<�
�t�	�	
� � ��=�
�u�	�	
� � ��=�
�u�	�	
� � ��?�
�w�	�	
� � ��=�
�u�	�	
� � ��>�
�v�	�	
� � ��@�
�x�	�	
� � ��@�
�x�	�	
� � ��@�
�x�	�	
� � ��A�
�y�	�	
� � ��C�
�{�	�	
� � ��@�
�x�	�	
� � ��B�
�z�	�	
� � ��>�
�v�	�	
� � ��>�
�v�	�	
� � ��>�
�v�	�	
� � ��B�
�z�	�	
� � ��@�
�x�	�	
� � ��B�
�z�	���� � ��9�C�?�#�E�
�s�	�	
� � ��;�c�A�C�G�
�t�c�z�	�	
� � ��;�c�A�C�G�
�t�c�z�	�	
� � ��>��D�s�J�
�w��}�	rc��tdd�}|jdd�|jdt|��|j	t
t|dd�|j	t
t|dd	�|jdt|��d
|_d|_|jdt|��|jtd
d�|�y)Nr�r�r�r�r�rUr�rV��)r-r�)
rrr�rXr�AttributeError�setattrrGrH�assertNotEqual�rrWs  r�
testImmutablezFractionTest.testImmutable�s���
�a��G��	�
�
�1�b�������Q��0����.�'�1�k�2�F����.�'�1�m�Q�G������Q��0������������Q��0����A�a��G�Q�'rc��|jttjd�|j	dttjd���d}|j	|dfttj|���|j	dttjd���|j	dttjd���|j	d	ttjd
���|j	dttjd���|j	t
d
�t
tjd���|j	dttjd���|j	dt
tjd���d}||z
}|jtdtj|�|jtdtj|�|jtdtj|�y)N�@@)r�r�r�l�{�C	r�r�r�$@)���r�g�)ll+?�Rr��J��-�Dr�)rl g������	@g��(cannot convert Infinity to integer ratio�#cannot convert NaN to integer ratio)
rrrrr�rXr
r�r
r)r�bigintr
r	s    r�
testFromFloatzFractionTest.testFromFloat�s������)�Q�\�\�4�8�����+�a�l�l�2�.>�"?�@�$�����&�!��k�!�,�,�v�2F�&G�H������Q�\�\�$�-?�!@�A�����+�a�l�l�4�.@�"A�B�����+�a�l�l�4�.@�"A�B����5�$�Q�\�\�$�%7�8�	:�����v���a�l�l�4�.@�(A�B����=�$�Q�\�\�#�%6�7�	9�����e�A�L�L��$5�6�7����C�i��� � ��E�
�L�L�#�	�	
� � ��E�
�L�L�3�$�	 �	
� � ��=�
�L�L�#�	rc�V�|jttjd�|j	tdd�tjd��|j	td�tjtd���|j	tdd�tjtd���|j	tdd�tjtd	���|j	td
�tjtd���|j	dtdd�z
tjtd
���|j
tdtjtd��|j
tdtjtd��|j
tdtjtd��|j
tdtjtd��y)Nr4r�r�r�-0r�z0.5��z5e-3i��5e3l�7�3M�e'z 0.999999999999999999999999999999r8r
rr9r	r)	rrr�from_decimalr�rr�r
rr3s r�testFromDecimalzFractionTest.testFromDecimalsx�����)�Q�^�^�T�:�����2�q��1�>�>�"�#5�6�����1��q�~�~�g�d�m�<�=�����1�b��1�>�>�'�%�.�#A�B�����1�d��Q�^�^�G�F�O�%D�E�����4��!�.�.����"@�A�����Q�q�&�\�)������(@�A�	C�	
� � ��E�
�N�N�G�E�N�	,�	
� � ��E�
�N�N�G�F�O�	-�	
� � ��=�
�N�N�G�E�N�	,�	
� � ��=�
�N�N�G�F�O�	-rc�8�|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��|jtdd�j��y)Nr�r�r�r�)�
assertTruer�
is_integer�assertFalser3s r�test_is_integerzFractionTest.test_is_integer3s������!�Q��*�*�,�-�����"�a��+�+�-�.�����!�R��+�+�-�.�����!�Q��*�*�,�-�����"�a��+�+�-�.�����!�R��+�+�-�.�����1�a��+�+�-�.�����2�q��,�,�.�/�����1�b��,�,�.�/�����2�r��-�-�/�0rc�T�|jtdd�j�d�|jtdd�j�d�|jtdd�j�d�|jtdd�j�d�y)	Nr-r,)r�r����)r�r����rr�)r�r�as_integer_ratior3s r�test_as_integer_ratioz"FractionTest.test_as_integer_ratio@s~������1�a��1�1�3�V�<�����2�q��2�2�4�g�>�����1�b��2�2�4�g�>�����1�a��1�1�3�V�<rc��td�}|j|jd�tdd��|j|jd�tdd��|j|jd�tdd��|j|jd�tdd��|jtd	d
�jd�td��|jtd	d
�jd
�tdd
��|jtd�jd�td��dD]-}|jtdtd�j|��/y)Nz3.1415926535897932i'r�r�i�����piM�j��rrr�r�fr)rr�z$max_denominator should be at least 1)rr��limit_denominatorr�r)r�rpi�is   r�testLimitDenominatorz!FractionTest.testLimitDenominatorFs0���$�%������.�.�u�5�q��c�{�C����#�/�/��6�6��$���E�����.�.�s�3�Q�s�C�[�A�����.�.�s�3�Q�s�C�[�A�����3���6�6�s�;�Q�q�T�B�����3���6�6�s�;�Q�s�C�[�I�����1��/�/��6��!��=��A��$�$��B��!��&�&��
+�rc�*�|jdtjtdd���|jdtjtdd���|jdtjtdd���|jdtj
tdd���|jdtj
tdd���|jdt
tdd���|jdttdd���|jdttd	d���|jdttd
d���|jdttdd���|jdttdd���|jd
ttdd���|jdttdd���|jttt
d��|jdttt
d�t
d����|jdttdd���y)Nr�i����r�r�r�r�r�rr6�����FTr�r�r��22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU�?��33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331��������?)r�r?�truncr�floor�ceil�int�roundr��boolr
rr
�assertAlmostEqualr�r3s r�testConversionszFractionTest.testConversionsTs������r�4�:�:�a��R�j�#9�:����q�$�*�*�Q�r�2�Y�"7�8����r�4�:�:�a��R�j�#9�:����r�4�9�9�Q�s�B�Z�#8�9����r�4�9�9�Q�s�B�Z�#8�9����r�3�q��b�z�?�3����q�%��"�b�	�"2�3����q�%��"�b�	�"2�3����r�5��3���#4�5����r�5��2�r��#3�4������Q�q�!�W�
�.�����t�A�a��G�}�-����s�E�!�A�r�(�O�4�	
���-���K�0@�A����u�$�Q�s�;�'7��[�9I�%J�K�	M�	
���v�w�q��2�w�'7�8rc���tdd�}|j|tj�|j	t|�d�|j	t
t|��t
�y)Nr�r�r�)r�assertIsInstance�typing�SupportsIntr�r^rZ)r�fs  r�testSupportsIntzFractionTest.testSupportsIntlsO��
�a��G�����a��!3�!3�4�����Q���#�����c�!�f��s�+rc���G�fd�dt��t�d��d��}|j|j��|j|j��|j|t
j�|jt|�d�|jtt|��t�y)Nc�J��eZdZdZed��Ze�fd��Z�fd�Z�fd�Zy)�:FractionTest.testIntGuaranteesIntReturn.<locals>.CustomIntz�
            Subclass of int with just enough machinery to convince the Fraction
            constructor to produce something with CustomInt numerator and
            denominator.
            c��|Srr2r3s rrUzDFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.numerators���rc����d�Sr�r2)r�	CustomInts �rrVzFFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.denominator�s
��� ��|�#rc�>���t|�t|�z�Sr�r^�rrrns  �rrgzBFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__mul__�s��� ��T��S��Z�!7�8�8rc�>���t|�t|�z�Srrprqs  �r�__floordiv__zGFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__floordiv__�s��� ��T��c�%�j�!8�9�9rN)	r7r8r9r:�propertyrUrVrgrs)rns�rrnrkxs:���
��
��
��
$��
$�
9�
:rrnrr�r�)	r^rrdrUrVrerfr�rZ)rrgrns  @r�testIntGuaranteesIntReturnz'FractionTest.testIntGuaranteesIntReturnss����
	:��	:�*
�i��m�Y�q�\�*�����a�k�k�9�5����a�m�m�Y�7����a��!3�!3�4�����Q���#�����c�!�f��s�+rc�l�tjGd�d��}tjj	|�|d�}t|�}|j
|j|�|j
t|�d�|d�}t|�}|j
t|�d�y)Nc�6�eZdZdZd�Zd�Zed��Zd�ZeZ	y)�=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuer�c��||_yrrbrs  rrzFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__�s	��"��
rc�,�t|j�Sr)r`rr3s r�__bool__zFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__�s���D�J�J�'�'rc��|Srr2r3s rrUzGFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numerator�s	���rc��td��)Nz&Avoid comparisons in Fraction.__bool__)�AssertionErrorr"s  rr#zDFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__�s��$�%M�N�NrN)
r7r8r9rVrr{rtrUr#r*r2rr�CustomValuerx�s2���K�
#�
(��
��
�
O��Frrr�TrF)	�	functools�total_orderingrr�registerr�assertIsrUr`)rrrUrWs    r�testBoolGuarateesBoolReturnz(FractionTest.testBoolGuarateesBoolReturn�s���
�	!�	!�	�	�
"�	�(	���!�!�+�.���N�	�
�i�L���
�
�a�k�k�9�-��
�
�d�1�g�t�$���N�	�
�i�L���
�
�d�1�g�u�%rc	���|jtd�ttd�d��|jtd�ttd�d��|jtd�ttd�d��|jtdd�ttd	d
�d��|jtdd�ttdd
�d��y)
Ni8���ij���r�i�����r�r�rVrr�i��)r�rr_r3s r�	testRoundzFractionTest.testRound�s������q��w��a��g�r�(:�;����q��w��a��g�r�(:�;����q��u�e�A�b�E�2�&6�7����q��R�y�%��#�s��Q�*?�@����q��R�y�%��#�s��Q�*?�@rc
�	�|jtdd�tdd�tdd�z�|jtdd�tdd�tdd�z
�|jtdd�tdd�tdd�z�|jtdd�tdd�tdd	�z�|jtdd	�tdd�tdd�z�|jtd
d�tdd	�tdd�z�|jttj
td�td
��|j
dtdd�tdd�z�|j
dtdd�td�z�|jtdd�tdd�tdd�z�|jtdd�tdd�tdd�z�|jtd�tdd�fttdd�tdd���|jtd�tdd�fttdd�tdd���|jtdd�tdd�td�z�|jtdd�tdd�td�z�|j
dtd	�tdd�z�|jtdd�tdd���ttd�tdd��}|j|jd
�|j|jd�tdd�d
z}|j|tdd��|j|jd�|j|jd�tdd�dz}|j|tdd��|j|jd�|j|jd�tdd�dz}|j|td	d��|j|jd	�|j|jd�y)Nr�r�r�r�r�r,r�r-rV�r�rr�r�r�rW��@r�)r�rrrr �truedivr��divmod�powra�real�imagrUrV)r�z�ps   r�testArithmeticzFractionTest.testArithmetic�s�������1�a��!�A�r�(�Q�q�!�W�"4�5�����2�r��A�a��H�q��A�w�$6�7�����1�b��1�Q��8�a��1�g�#5�6�����1�a��!�A�q�'�A�a��G�"3�4�����1�a��!�A�r�(�Q�q�!�W�"4�5�����3���A�a��G�a��A�h�$6�7����+�X�-=�-=�q��t�Q�q�T�J����q�!�A�r�(�a��1�g�"5�6����v�q���|�q��t�';�<�����1�a��!�A�q�'�A�a��G�"3�4�����1�a��!�B��(�Q�q�!�W�"4�5����!�A�$��!�Q���&��1�a��!�A�q�'�*B�C����!�B�%��1�a��)�6�!�B��(�A�a��G�+D�E�����1�b��1�Q��7�a��d�?�3�����2�q��1�Q��7�a��e�#3�4����s�A�a�D�A�a��G�O�4�����1�a��1�Q��7�(�+���"��q��A�w������q�v�v�q�)��������#�
�b�!�H��M������A�a��G�$�������a�(��������*�
�b�!�H��N������A�b�!�H�%�������b�)��������*�
�b�!�H��N������A�a��G�$�������a�(��������*rc�p�|jtdd�tddzdzd�tdddzdz
�z�|jtdd�td	d
zd�tdd	d
z�z�|jd
tdd�fttddzdzd�tdddzdz
���|jd	dzdztd	d
zd�tdd	d
z�z�|jdtdd	d
z�tdd	d
z�z�|jdtd	d	d
z�fttdd	d
z�tdd	d
z���|jd	dzdztdd�fttd	d
zd�tdd	d
z���y)Nl�b;e�f�Op�Umn�P|�}�l�~J�w�5�PHyT#/jei�4�T�r��#r�lP��~�cegr�lr�rr�r�l��_�rr�)r�rr�r�r3s r�testLargeArithmeticz FractionTest.testLargeArithmetic�s������
�C�K�
M�
�b�"�f�Q�h��!�A�h��B��q��$9�9�	
�
	
���
�a�0�1�
�q�#�v�g�q�M�A�a��C��L�(�	
�	
�#�#�
�
�D�L�N�
O�
�1�R��V�A�X�x�(�!�H�b�"�f�Q�h�*?�@�		
�	
���
�#�X�I��O�
�q�#�v�g�q�M�Q�q�!�S�&�\�)�	
�	
���
�
�a��C��L�A�a��C��L�(�	
�	
���
��!�Q��V����1�Q��3��<��1�a��f��.�	
�	
�#�#��3�h�Y�"�_�
�q�1�
2�
4��1�a��f�W�a�=�!�A�q�#�v�,�/�	
rc�<�|jtdd�tdd�dz�|jdtdd�dz�|jdtdd�dz�|jtdd�dtdd�z�|jddtdd�z�|jddtdd�z�|jtdd�tdd�dz
�|jd	tdd�dz
�|jd
tdd�dz
�|jtdd�dtdd�z
�|jddtdd�z
�|jd
dtdd�z
�y)Nr�r�r�g�������?��?y�������?��?r�g�������y�������r�g�������?y�������?)r�rr3s r�testMixedArithmeticz FractionTest.testMixedArithmeticsV�����q��R�y�!�A�r�(�Q�,�7����s�A�a��H�s�N�3����x��1�b��X�)>�?����q��R�y�!�a��2�h�,�7����s�C�!�A�r�(�N�3����x�(�a��2�h�)>�?����q��R�y�!�A�r�(�Q�,�7����t�Q�q�"�X��^�4����y�!�A�r�(�h�*?�@����q��B�x��Q�q�"�X��6����s�C�!�A�r�(�N�3����x�(�a��2�h�)>�?rc
�	�|jtdd�tdd�dz�|jdtdd�dz�|jdtdd�dz�|jtdd�dtdd�z�|jddtdd�z�|jddtdd�z�|jtdd�td	d�ztd	d��|jtd	d�tdd�ztd	d��|jtdd�td	d�ztd
d��|jtd	d�tdd�ztd	d��|jtdd�t	d�zt	td
d���|jt	d�tdd�zd�|jtdd�t
d�zt
d��|jttjt
d�tdd��|jtdd�tdd�zttdd�d��|jtdd�tdd�ztdd��|jtdd�tdd�zttdd�td
d���|jtdd�tdd�ztdd��|jttjtdd�tdd��|jtdd�tdd�zd�|jtdd�td�ztd��|jttjtd�tdd��|jtdd�td�ztd��|jttjtd�tdd��y)Nr�r�rr�rZr�r�r�r�r�r,r-r��@�Xz3/2 * X�@g@y@y@�@@)r�rrRr�r�r�r�rrr �mulr�r�r�r�r`r3s r�testMixedMultiplicationz$FractionTest.testMixedMultiplications`�����q��B�x��1�b��A��6����s�A�a��H�s�N�3����x��1�b��X�)>�?����q��B�x��Q�q�"�X��6����s�C�!�A�r�(�N�3����x�(�a��2�h�)>�?����q��A�w��q�!�)<�<�a��1�g�F����}�Q��2�Q�q�!�W�<�a��1�g�F����q��A�w��Q���2�C��A�J�?����s�1�a�y�1�Q��7�2�A�a��G�<����q��A�w��a��0�$�q��A�w�-�@����t�A�w��1�a��0�#�6�����1�a��<��#4�4�l�9�6M�N����)�X�\�\�<��3D�a��1�g�N����q��A�w��q�!��4�e�A�a��G�Q�6G�H����q��A�w��s�A��6��c�1�
�F����q��A�w��a���3�T�!�A�q�'�1�Q��7�5K�L����q��A�w��Q��):�:�K��PV�<W�X����)�X�\�\�5��A�;��!�Q��H����t�A�q�z�A�a��G�3�Z�@�����1�a��?�3�#7�7���9S�T����)�X�\�\�?�3�3G��1�a��Q�����1�a��8�C�=�0�(�9�2E�F����)�X�\�\�8�C�=�!�A�q�'�Jrc	��|jtdd�tdd�dz�|jdtdd�dz�|jdtdd�dz�|jtdd�dtdd�z�|jddtdd�z�|jddtdd�z�|jtd	d
�td	d�ztdd
��|jtdd	�td
d	�ztdd
��|jtd	d
�td	d�ztdd
��|jtdd	�td
d	�ztdd
��|jtd
d	�t	d�zt	tdd���|jt	d�td
d	�zd�|jtd	d
�t
d�zt
d��|jttjt
d�td	d
��|jtd	d
�tdd
�zttd	d�d��|jtd	d
�tdd
�ztdd��|jtd	d
�tdd	�ztdd��|jttjtdd
�td
d	��|jtdd	�td
d	�zd�|jtd	d
�td�ztd��|jttjtd�td	d
��|jtd	d
�td�ztd��|jttjtd�td
d	��y)Nr�r�rr�rZr�r5y$@r�r�r�r�r,r-r�r�r�z3/2 / Xr�r�r���?g���Q��?g
ףp=
�?r�)r�rrRr�r�r�r�rrr r�r�r�r�r`r3s r�testMixedDivisionzFractionTest.testMixedDivision2s4�����q��B�x��1�b��A��6����s�A�a��H�s�N�3����x��1�b��X�)>�?����q��Q�x��Q�q�"�X��6����t�S�1�Q��8�^�4����y�8�q��B�x�*?�@����q��A�w��q�!�)<�<�a��1�g�F����}�Q��2�Q�q�!�W�<�a��1�g�F����q��A�w��Q���2�C��A�J�?����s�1�a�y�1�Q��7�2�A�a��G�<����q��A�w��a��0�$�q��A�w�-�@����t�A�w��1�a��0�#�6�����1�a��<��#4�4�l�9�6M�N����)�X�%5�%5�|�C�7H�!�A�q�'�R����q��A�w��q�!��4�e�A�a��G�R�6H�I����q��A�w��s�A��6��e�R�8H�I����q��A�w��a���3�T�$��5E�F����)�X�%5�%5�u�Q��{�A�a��G�L����t�A�q�z�A�a��G�3�Z�@�����1�a��?�3�#7�7���9S�T����)�X�%5�%5��s�7K�Q�q�RS�W�U�����1�a��8�C�=�0�(�9�2E�F����)�X�%5�%5�x��}�a��1�g�Nrc
�
�|jdtdd�dz�|jdtdd�dz�|jddtdd�z�|jddtdd�z�|jddtdd�z�|jtdd�tdd�dz�|jd	tdd�dz�|jtdd�dtdd�z�|jd
dtdd�z�|jd	tdd�td�z�|jtd�tdd�td�z�|jtd�td
d�td�z�|jdtd
d�td�z�|jdtdd�ft	tdd�d��|jt	d	d�t	tdd�d��|jdtd�ft	dtdd���|jt	dd	�t	dtdd���|jt	d	td��t	tdd�td���|jt	d	td��t	tdd�td���|jt	dtd��t	td
d�td���|jt	dtd��t	td
d�td���|jtdd�tdd�ztdd��|jtdd�tdd�ztdd��|jtdd�t
dd�zt
dd��|jt
dd�tdd�ztdd��|jttjtdd�td��|jtd�tdd�zd�|jtdd�td�ztd��|jttjtd�tdd��|jttjtdd�tdd��|jttjtdd�tdd��|jttjt!dd�tdd��|jtdd�t#d�zt#d��|jttjt#d�tdd��|jtdd�t%d�zt%d��|jttjt%d�tdd��y)Nrr�r��r�r�l�d�&O�!g"@rg�������?r
rr�g��������r�r�r�r,r-��?r�z3/2 % X)r�rr
r�r�rRr�rrr �modr�r�r�r�r�r�r�r`r3s r�testMixedIntegerDivisionz%FractionTest.testMixedIntegerDivisionOs������q�!�A�r�(�a�-�0����s�A�a��H��O�4����r�1��!�R��=�1����v�v��1�b��'9�:����z�3�!�A�r�(�?�;����q��B�x��1�b��A��6����s�A�a��H�s�N�3����q��A�w��A�a��H��5����y�#��!�R��.�9����s�A�a��H�u�U�|�$;�<����u�V�}�a��2�h��v��.F�G����u�U�|�Q�r�2�Y��u��-E�F����t�Q�r�2�Y��v��%>�?��#�#�Q��!�R��M�6�!�A�r�(�A�3F�G��#�#�F�3��$4�f�Q�q�"�X�s�6K�L��#�#�R��1��J��q�!�A�r�(�0C�D��#�#�F�3��$4�f�S�!�A�r�(�6K�L��#�#�F�3��e��$=�v�a��2�h�PU�V[�P\�?]�^��#�#�F�3��f�
�$>��q��B�x�QV�W]�Q^�@_�`��#�#�F�4��u��$>��q��R�y�RW�X]�R^�@_�`��#�#�F�4��v��$?���"�b�	�SX�Y_�S`�Aa�b����q��A�w��q�!�)<�<�a��2�h�G����}�Q��2�Q�q�!�W�<�a��1�g�F����q��A�w��Q���2�C��1�I�>����s�1�a�y�1�Q��7�2�A�a��G�<����)�X�\�\�1�Q��7�D��G�D����t�A�w��1�a��0�#�6�����1�a��<��#4�4�l�9�6M�N����)�X�\�\�<��3D�a��1�g�N����)�X�\�\�1�Q��7�E�!�Q�K�H����)�X�\�\�1�Q��7�K��1�<M�N����)�X�\�\�4��1�:�q��A�w�G�����1�a��?�3�#7�7���9S�T����)�X�\�\�?�3�3G��1�a��Q�����1�a��8�C�=�0�(�9�2E�F����)�X�\�\�8�C�=�!�A�q�'�Jrc	��|jtdd�tdd�dz�|jtdd�tdd�dz�|jdtdd�dz�|jdtdd�d	z�|jd
dtdd�z�tdtdd��}|jd|j�|jd|j�|jtdd
�dtdd�z�|jd
d
tdd�z�|jdd
tdd�z�|jd	d	tdd�z�|jttjtdd�d�|jtdd�tdd�ztdd��|jtdd�tdd�ztdd��|jtdd�tdd�ztdd��|jtdd
�tdd�zd�|jtd
d�tdd�zt�|jtd
d�tdd�zd�|jtdd�tdd�zd�|jtdd
�tdd�zd�|jtdd�tdd�ztdd��|jtdd�tdd�ztdd��|jtd
d�tdd�zt�|jtd
d�tdd�zd�|jtd
�tdd�ztd
d��|jtd
�tdd�ztd
td���|jtd
�tdd�ztd
td���|jtd
�tdd�ztd
d��|jtdd�td�ztd��|jtd�tdd�ztd��|jtdd�tdd�zt!tdd
�d��|jtdd�tdd�zt!td�d��|jtdd�t#dd�zt!dd��|jtdd�t#dd�zt!dd��|jt!d
d�tdd�zt!dd��|jt!d
d�tdd�zt!d d!��|jt!d
d�tdd�zt!d"d#��|jt!d
d�tdd�zt!d$d��|jtdd�t%d�zt%d��|jt%d�tdd�zt%d��|jtdd�t'd�zt'd��|jt'd�tdd�zt'd��y)%Nrr�r�r�r�rr�rZr�r-r�rr�g�?r�r�r�ri����r�g@rHy@r�g�r�z3/2 ** XzX ** 1.5r�g@g @�@r,g�?rIg�?)r�rr�rar�r�r�rrr r�rdr
r�r�r�r�r�r�r`)rr�s  r�testMixedPowerzFractionTest.testMixedPower{s������q��a�y�!�A�r�(�b�.�9����q��a�y�!�B��(�a�-�8����s�A�a��H��O�4����x��1�b��h�)?�@����q�1��!�Q��<�0���A�a��G������q�!�&�&�)�����A�F�F�#����q��A�w��a��A�h��7����s�Q�!�A�q�'�\�2����t�S�A�b�!�H�_�5����x�(�q��B�x�)?�@����+�X�\�\��A�q�'�2�	'�	
���q��A�w�#�a��)�3�Q�r�1�X�>����q��A�w�#�b�!�*�4�a��2�h�?����q��Q�x�3�r�1�:�5�q��R�y�A����q��A�w�#�a��)�3�U�;����a��1�g��R���3�U�;����q��A�w�#�b�!�*�4�e�<����q��Q�x�3�r�1�:�5�v�>����s�1�a�y�A�a��G�3�U�;����s�1�a�y�A�a��G�3�S��Q�Z�@����s�1�a�y�A�b�!�H�4�a��2�h�?����c�!�Q�i�1�R��8�3�U�;����s�1�a�y�A�b�!�H�4�e�<����t�A�w�!�A�q�'�1�4��3�<�@����t�A�w�!�A�q�'�1�4��1�Q�4�=�A����t�A�w�!�B��(�2�D��Q�q�T�E�N�C����t�A�w�!�B��(�2�D��D�M�B�����1�a��L��$5�5�|�J�7O�P�����c�*�a��1�g�5�|�J�7O�P����q��A�w�$�q�!�*�4�e�A�a��F�C�6H�I����q��A�w�$�q�!�*�4�e�A�a�D�#�6F�G����q��A�w�+�a��*;�;�U�4��=M�N����q��A�w�+�a��*;�;�U�3��_�M����u�Q��{�a��1�g�5�u�S�#��G����u�Q��{�a��1�g�5�u�R��|�D����u�Q��{�a��A�h�6��h��8K�L����u�Q��{�a��A�h�6��e�T�8J�K�����1�a��O�C�$8�8�/�*�:U�V������-��1�a��8�/�*�:U�V�����1�a��H�S�M�1�8�J�3G�H�����#��!�A�q�'�1�8�J�3G�Hrc	���|jttjt	dd�td��|jttjtd�t	dd��y)Nr�r�z	3.1415926)rrr �addrrr3s r�testMixingWithDecimalz"FractionTest.testMixingWithDecimal�sN�����)�X�\�\��A�b�'�7�;�#7�	9����)�X�\�\�!�+�.��!�B��	9rc���|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k(�|jtdd�tdd�k(�|jtdd�tdd�k7�|jtdd�tdd�k7�y)Nr�r�r�)rCrrEr3s r�testComparisonszFractionTest.testComparisons�s������!�Q��!�A�q�'�)�*�����1�a��1�Q��7�*�+�����!�Q��1�Q��7�*�+�����!�Q��1�Q��7�*�+�����1�a��A�a��G�+�,�����!�Q��1�Q��7�*�+�����1�a��A�a��G�+�,�����1�a��A�a��G�+�,�����!�Q��1�Q��7�*�+rc���|jtdd�tdd�k(�|jtdd�tdd�k(�|jtdd�tdd�k(�|jtdd�tdd�k(�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�kD�|jtdd�tdd�kD�|jtdd�tdd�kD�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k\�|jtdd�tdd�k\�|jtdd�tdd�k\�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�kD�|jtdd�tdd�kD�|jtdd�tdd�kD�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k\�|jtdd�tdd�k\�|jtdd�tdd�k\�y)Nr�r�r�r-r�)rCrr=rEr3s r�testComparisonsDummyRationalz)FractionTest.testComparisonsDummyRational�sf������!�Q��=��A�#6�6�7����
�a��+�q��A�w�6�7�����1�a��M�!�Q�$7�7�8�����q�!�,��!�Q��7�8�����!�Q��-��1�"5�5�6�����1�a��=��A�#6�6�7�����1�a��=��A�#6�6�7�����1�a��=��A�#6�6�7�����1�a��=��A�#6�6�7�����!�Q��-��1�"5�5�6�����!�Q��=��A�#6�6�7�����!�Q��=��A�#6�6�7�����1�a��M�!�Q�$7�7�8�����1�a��M�!�Q�$7�7�8�����!�Q��=��A�#6�6�7�����!�Q��=��A�#6�6�7����
�a��+�a��1�g�5�6�����q�!�,�q��A�w�6�7�����q�!�,�q��A�w�6�7�����q�!�,�q��A�w�6�7�����q�!�,�q��A�w�6�7����
�a��+�a��1�g�5�6����
�a��+�q��A�w�6�7����
�a��+�q��A�w�6�7�����q�!�,��!�Q��7�8�����q�!�,��!�Q��7�8����
�a��+�q��A�w�6�7����
�a��+�q��A�w�6�7rc��td�}tdd�}|j||k7�|j||kxs||kD�|j||k(�|j||kxr||k\�|j||k7�|j||kxs||kD�|j||k(�|j||kxr||k\�y)NgUUUUUU�?r�r�)r
rrCrEr�s   r�testComparisonsDummyFloatz&FractionTest.testComparisonsDummyFloat�s����u���
�a��G������Q�������A����Q��'�����a�� �����a��*�A��F�+�����Q�������A����Q��'�����a�� �����a��*�A��F�+rc��|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jtdd�dk�|jtdd�dk�|jdtdd�k�|jdtdd�k�|jtd	�tdd�k�|jtd
�tdd�k�|jtd
�tdd�k�|jtdd�td	�k�|jtdd�td
�k�|jtdd�td
�k�y)Nr�r�r-r�r��333333�?皙�����?r�r
rrr�r	rr��r������rCrrEr
r3s r�
testMixedLesszFractionTest.testMixedLess�sd������A�a��G��$�����Q�q�!�W��%�����!�Q��!��$�����1�a��1��%�����!�Q��#�
�&�����1�a��3��'�����a��1�g�
�&�����q��A�w��'�����u���!�Q��/�0�����f�
��!�R��0�1�����u���"�a��0�1�����!�Q��%��,�.�/�����2�r��U�6�]�2�3�����3���u�U�|�3�4rc��|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jtd	�tdd�k�|jtd
�tdd�k�|jtd
�tdd�k�|jtdd�td	�k�|jtdd�td
�k�|jtdd�td
�k�y)Nr�r�r�r�r�r-r�r�r
rrr�r	rr�r�r�r�r�r�r3s r�testMixedLessEqualzFractionTest.testMixedLessEqual�sd������q��A�w��'������!�Q���(�����!�Q��3��'�����1�a��C��(�����Q�q�!�W��%�����a��1�g��&�����!�Q��1��%�����1�a��A��&�����u���1�a��0�1�����f�
��1�b��1�2�����u���2�q��1�2�����!�Q��5��<�/�0�����2�r��e�F�m�3�4�����3����e��4�5rc
�`�|jtd�td�k(�|jdtttjd�dz��k�|jdttjd�dz�k�|jdttjd�dz
�k�|jdttjd�dz
�kD�|jdttjd�dz�k\�y)Nr�r7r�)rErr
r?r[rCr3s r�testBigFloatComparisonsz$FractionTest.testBigFloatComparisonss�������6��e�F�m�3�4������a��
�
�4�(8�1�(<�&=� >�>�?�����q����D�!1�A�!5�6�6�7������4�:�:�d�#3�a�#7�!8�8�9�����q����D�!1�A�!5�6�6�7������4�:�:�d�#3�a�#7�!8�8�9rc�^�|jtd�td�k(�|jtt
jtd�td��|jtt
jtd�td��tdd�}tdd�}tdd�}|j||k(�|j||k7�|j||k(�|j||k7�t
jt
jt
jt
jfD]b}|jt|||�|jt|||�|jt|||�|jt|||��dy)Nr�r�r�r�r�g�������?)rErr�rrr r/r&rCr)r,)rr�r��wrs     r�testBigComplexComparisonsz&FractionTest.testBigComplexComparisonss8������6��g�f�o�5�6����)�X�[�[�!�F�)�W�V�_�M����)�X�[�[�!�F�)�W�V�_�M�
�a��G���E�3����E�3�������Q�������a�� �����a�� �����Q����+�+�x�{�{�H�K�K����D�B����i��Q��2����i��Q��2����i��Q��2����i��Q��2�	Erc��|jdtdd�k(�|jdtdd�k(�|jtdd�dk(�|jtdd�dk(�|jdtdd�k(�|jdtdd�k(�|jtdd�dk(�|jtdd�dk(�|jtdd�td	�k(�|jtd	�tdd
�k(�|jtdd�td�k(�|jtd�tdd�k(�y)
Nr�r�r�r�r�r-r�r�r	r�r
rr�r3s r�testMixedEqualzFractionTest.testMixedEqual+s.������q��A�w��'������!�Q���(�����!�Q��3��'�����1�a��C��(�����Q�q�!�W��%�����a��1�g��&�����!�Q��1��%�����1�a��A��&�����1�a��E�%�L�0�1�����u���1�a��0�1�����1�a��E�%�L�0�1�����v��!�A�q�'�1�2rc	�t�|jdttdd���|jdttd���|jdttdd���|jd	ttdd���|jd
ttdd���y)NzFraction(7, 3)r�r�z Fraction(6283185307, 2000000000)�3.1415926535z#Fraction(-1, 100000000000000000000)r�l���� F�x:^Vz7/3�7)r��reprrr�r3s r�testStringificationz FractionTest.testStringification9s������)�4��!�Q��=�9����;��a��/�0�	2����>��a��7�m�,�	.������A�a��G��-�����c�!�A�q�'�l�+rc	�Z�tjj}tjj}|j	td�tt
dd���|j	tddz�tt
ddz���|jttd��tt
d���|j	|tt
d|���|j	tt
d��t
d�j��y)	Nrr�r�r��2r�r�r�)
�sys�	hash_info�modulusr
r��hashrr0r
�__hash__)r�hmod�hinfs   r�testHashzFractionTest.testHashBs����}�}�$�$���}�}� � ������c��D��1�a��M�2�����b�"�f��t�A�b�"�f�I��7����D��v��/��a��i��A�����t�A�a��J�/�0�	
����a��e��a��e�n�n�&6�7rc�0�td�}d|dddddf\}}}}}}}t||z
�tdd�kDr?|}||z|dz}}||z|dz}}||z|z}||z
}t||z
�tdd�kDr�?|jtj|�y)Nr�rr���ʚ;r�� )r�absrar?�pi)	r�three�lasts�t�sr��nar��das	         r�testApproximatePizFractionTest.testApproximatePiMs����!���$%�u�a��A�q�"�$<�!��q�!�Q��A�r��!�e�)�n�q��E�{�*��E��b�D�"�Q�$�r�A��b�D�"�R�%�r�A��Q��!��A�
��F�A��!�e�)�n�q��E�{�*�	
���t�w�w��*rc�V�td�}ddtd�dddf\}}}}}}t||z
�tdd�kDrF|}|dz
}|||dz
zz}|||zz}|dz}|||z|zz
}t||z
�tdd�kDr�F|jtjd�|�y)Nr�rr�r�r�)rr�rar?�cos)rr�rSr�r��factrA�signs        r�testApproximateCos1z FractionTest.testApproximateCos1Zs���
�a�D��'(�!�Q�q�T�1�a��':�$��5�!�T�3���!�e�)�n�q��E�{�*��E�
��F�A��A��1��I��D��1�q�5�L�C��B�J�D�
��t��d�"�"�A�
�!�e�)�n�q��E�{�*�	
���t�x�x��{�A�.rc
��tdd�}tdd�}tdtjdz�D]'}|j|t
t||����)|jt|�tt|���|jt|�tt|���|jt|�tt|���|jt|�tt|���|j|t|��|j|t|��y)Nrr�rr�)
rrR�range�pickle�HIGHEST_PROTOCOLr�rr�idrrr0r�)rrW�dr�protos    r�test_copy_deepcopy_picklez&FractionTest.test_copy_deepcopy_picklehs���
�b�!�H��
�2�q�
!���1�f�5�5��9�:�E����Q��e�A�u�o� 6�7�;�����A���4��7��,�����A���8�A�;��0����B�r�F�B�t�B�x�L�1����B�r�F�B�x��|�$4�5����r�4��8�,����r�8�B�<�0rc�V�tdd�}|jtt|dd�y)Nrr�r\r�)rrr.r/r1s  r�
test_slotszFractionTest.test_slotsts#��
�b�!�H�����.�'�1�c�2�>rc�j�Gd�dt�}tj|d�|d��}|j|jd�|j|j
d�|jt
|j�|�|jt
|j
�|�y)Nc�>�eZdZd�Zd�Zd�Zed��Zed��Zy)�-FractionTest.test_int_subclass.<locals>.myintc�N�t|�t|�t|�z�Sr�rZr^r"s  rrgz5FractionTest.test_int_subclass.<locals>.myint.__mul__{s ��!�t�D�z�#�d�)�c�%�j�"8�9�9rc�N�t|�t|�t|�z�Srr�r"s  rrsz:FractionTest.test_int_subclass.<locals>.myint.__floordiv__}s ��!�t�D�z�#�d�)�s�5�z�"9�:�:rc�R�t|�t|�t|�z�}|Srr�)rrr�s   rrtz5FractionTest.test_int_subclass.<locals>.myint.__mod__s$���D��J�s�4�y�3�u�:�5�6���rc�6�t|�t|��Srr�r3s rrUz7FractionTest.test_int_subclass.<locals>.myint.numerator�s��!�t�D�z�#�d�)�,�,rc�$�t|�d�Sr�)rZr3s rrVz9FractionTest.test_int_subclass.<locals>.myint.denominator�s��!�t�D�z�!�}�$rN)	r7r8r9rgrsrtrtrUrVr2rr�myintr�zs7��
:�
;�
��
-��
-�
�
%��
%rr�r�r,r�r�)r^rErFr�rUrVrZ)rr�rgs   r�test_int_subclasszFractionTest.test_int_subclassys���
	%�C�
	%�
���u�U�|�U�5�\�:��������a�(��������*�����a�k�k�*�E�2�����a�m�m�,�e�4rc��tdd�ddftdd�ddftd�ddftd�dd	fg}|D]>\}}}|j||�
�5|jt||�|�ddd��@y#1swY�KxYw)Nr�r��z1/3r�z-1/3�3r�-3��fraction�spec�r�subTestr��format�r�	testcasesrrr�s     r� test_format_no_presentation_typez-FractionTest.test_format_no_presentation_type�s����q�!�W�b�%� �
�r�1�X�r�6�"�
�q�T�2�s�O�
�r�U�B���	
�	�)2�$�H�d�H����x�d��;�� � ���$�!7��B�<�;�)2�;�;�s�A=�=B	c��gtdd�ddf�tdd�ddf�tdd�ddf�tdd�dd	f�tdd
�ddf�tdd�ddf�td
d�ddf�tdd�ddf�td
d�ddf�tdd�ddf�tdd�ddf�td�ddf�tdd�ddf�tdd�ddf�tdd�ddf�tdd�ddf�td�ddf�td�ddf�td�ddf�td�dd f�td!�dd"f�td#�dd"f�td$d�dd%f�td&d�dd'f�td(�dd)f�td*�dd+f�td,�dd-f�tdd�d.d/f�tdd�d0d1f�td2�d3d4f�td5d6�d7d8f�td2�d9d:f�td5d6�d;d8f�td5d6�d<d8f�td5d6�d=d>f�td?�d@dAf�tdB�dCdDf�tdEd6dz�dFdGf�}|D]>\}}}|j||�H�5|jt||�|�ddd��@y#1swY�KxYw)INr�r�z.6ez6.666667e-01z1.500000e+00rz1.538462e-01�z8.695652e-02�!z6.060606e-02z6.500000e+00�z1.000000e+01z1.150000e+01z1.650000e+01rz.3ez	0.000e+00r�r>z	1.000e-03rz	1.000e-02r�z	1.000e-01z	1.000e+00z	1.000e+01z	1.000e+02z	1.000e+03z99.999994999999z9.999999e+01z	99.999995z1.000000e+02z99.999995000001r�z
-6.666667e-01rz
-1.500000e+00i����z
-1.000000e+02�1e1000z1.000e+1000z1e-1000z1.000e-1000z.6Ez6.666667E-01z.1ez6.7e-01z0.995z.0ez1e+00r�r�r�z3.142857e+00z#.0ez1.e+00z11.6ez12.6ez13.6ez
 3.142857e+00z1234567.123456z,.5e�1.23457e+06z
123.123456z012_.2ez0_001.23e+02r�zz.6ez
-3.091690e-85rrr	s     r�test_format_e_presentation_typez,FractionTest.test_format_e_presentation_type�s���3
�
�q�!�W�e�^�,�3
�
�q�!�W�e�^�,�3
��q�"�X�u�n�-�3
��q�"�X�u�n�-�	3
�
�q�"�X�u�n�-�3
��r�1�X�u�n�-�
3
��r�1�X�u�n�-�3
��r�1�X�u�n�-�3
��r�1�X�u�n�-�3
��q�!�W�e�^�,�3
��q�!�W�e�^�,�3
��q�T�5�+�&�3
��q�$�Z���,�3
� �q�#�Y��{�+�!3
�"�q�"�X�u�k�*�#3
�$�q�!�W�e�[�)�%3
�&�r�U�E�;�'�'3
�(�s�V�U�K�(�)3
�*�t�W�e�[�)�+3
�.� �
!�5�.�9�/3
�0�{�^�U�N�3�13
�2� �
!�5�.�9�33
�6�r�1�X�u�o�.�73
�8�r�1�X�u�o�.�93
�:�t�W�e�_�-�;3
�>�x�[�%��/�?3
�@�y�\�5�-�0�A3
�D�q�!�W�e�^�,�E3
�H�q�!�W�e�Y�'�I3
�J�w�Z���(�K3
�N�r�1�X�s�N�+�O3
�R�w�Z���*�S3
�V�r�1�X�w��/�W3
�X�r�1�X�w��/�Y3
�Z�r�1�X�w��0�[3
�^��
 �&�-�8�_3
�`�|�_�i��8�a3
�d�r�1�c�6�]�F�O�4�e3
�	�h)2�$�H�d�H����x�d��;�� � ���$�!7��B�<�;�)2�;�;�s�I6�6I?	c��gtdd�ddf�tdd�ddf�tdd�ddf�td	d�dd
f�tdd�ddf�tdd�dd
f�tdd�ddf�tdd�ddf�tdd�ddf�tdd�ddf�td�ddf�tdd�ddf�tdd�ddf�td�ddf�td d�dd!f�td"�dd#f�td$�dd%f�td&�dd%f�td'�dd(f�td)�dd(f�td*�dd+f�td,�dd+f�td-�dd.f�td/�dd0f�td1�dd2f�td3�dd2f�td4�dd5f�td6�dd5f�td7�dd8f�td9�dd8f�td:�dd;f�tdd�ddf�tdd�d<df�tdd�d=d>f�tdd�d?d@f�tdAd�ddBf�tdAd�d<dBf�tdAd�d=dBf�tdAd�d?dBf�tdd�dCdDf�tdEd�dCdFf�tdd�dCdGf�td d�dCdHf�tdd�dIdJf�tdEd�dIdKf�tdd�dIdLf�td d�dIdMf�tdN�dOdf�tdN�dPdf�tdN�dQdRf�tdN�dSdTf�tdU�dOdf�tdU�dPdf�tdU�dQdRf�tdU�dSdTf�tdd�dVdWf�tdX�dVdYf�tdX�dZd[f�tdd�d\dWf�tdd�d]d^f�tdd�d_df�tdd�d`df�tdd�dadbf�tdd�dcddf�tdd�dedff�tdd�dgdhf�tdAd�didjf�tdd�didkf�tdAd�dldBf�tdAd�dmdnf�tdAd�dodpf�tdAd�dqdrf�tdAd�dsdtf�tdAd�dudvf�tdAd�dwdxf�tdAd�dydzf�tdAd�d{d|f�tdAd�d}d~f�tdAd�dd�f�tdAd�d�d�f�tdAd�d�d�f�tdAd�d�d�f�tdd�d�d�f�tdd�d�d�f�tdd�d�df�tdd�d�df�tdd�d�df�tdd�d�df�tdd�d�df�tdd�d�df�tdd�d�df�tdd�d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�tdd�d�df�tdd�d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�td��d�d�f�tdīd�d�f�tdīd�d�f�tdd�d�df�tdd�d�d�f�tdd�d�d�f�tddʫd�d�f�tdd̫d�d�f�tddΫd�d�f�tddЫd�d�f�tdd�d�d�f�tdd�d�d�f�td�d�d�d�f�tdd�d�d�f�tdd�d�d�f�tdd�d�d�f�tdd�ddf�tdd�ddf�tdd�dd
f�td�d߫dd�f�td�d߫dd�f�td�d߫dd�f�tdd֫d�d�f�td�d߫d�d�f�td�d߫d�d�f�td�d߫d�d�f�td�d߫d�d�f�}|D]>\}}}|j||��5|jt||�|�ddd��@y#1swY�KxYw)�Nrr�z.2fz0.00r�z0.33r�z0.67r-z1.33r��0.12z0.38rz0.08��z0.01rr�r�z.5fz3.14286�	399024789z399024789.00i��i��z.50fz43.14159265392142104470871594159265392142104470871594rgz3.142857z0.000000i��z	-3.142857z1.225z1.22z1.2250000001z1.23z1.2349999999z1.235z1.24z1.245z1.2450000001z1.25z1.2549999999z1.255z1.26z-1.225z-1.22z
-1.2250000001z-1.23z
-1.2349999999z-1.235z-1.24z-1.245z
-1.2450000001z-1.25z
-1.2549999999z-1.255z-1.26z-.2fz+.2fz+0.67z .2fz 0.67r�z-0.67z.0f�0r�r=rrz#.0fz0.z-0.�3.z-3.z-0.001zz.2fz-z.2fz+z.2fz+0.00z z.2fz 0.00z0.001z6.2fz  0.67i90z12345.00�12fz12345.000000z>6.2fz<6.2fz0.67  z^3.2fz^4.2fz^5.2fz0.67 z^6.2fz 0.67 z^7.2fz 0.67  z^8.2fz  0.67  z=+8.2fz-   0.67z+   0.67zX>3.2fzX>7.2fzXX-0.67zX<7.2fz-0.67XXzX^7.2fzX-0.67XzX=7.2fz-XX0.67z >7.2fz  -0.67z>7.2fz-0.67z
>7.2fz

-0.67z	>7.2fz		-0.67z>>7.2fz>>-0.67z<>7.2fz<<-0.67u→>7.2fu→→-0.67z07.2fz-000.67z-07.2fz+07.2fz+000.67z 07.2fz 000.67z0.2fz>0.2fz<0.2fz^0.2fz=0.2fz00.2fz,.2fz,.7fz	0.6666667z
123456.789z
123,456.79�1234567z1,234,567.00�12345678z
12,345,678.00z,fz12,345,678.000000z_.2fz_.7fz
123_456.79z1_234_567.00z
12_345_678.00�	1234.5678z07,.2fz1,234.57z08,.2fz09,.2fz	01,234.57z010,.2fz
001,234.57z011,.2fz0,001,234.57z012,.2fz013,.2fz
00,001,234.57z014,.2fz000,001,234.57z015,.2fz0,000,001,234.57z016,.2fz
-1234.5678z	-1,234.57z
-01,234.57z-001,234.57z
-0,001,234.57z-00,001,234.57z-000,001,234.57z-0,000,001,234.57z06,.0fz-1,235z07,.0fz-01,235z08,.0fz-001,235z09,.0fz
-0,001,235z0=12,.2fz00001,234.57z12.34zX>0.2fz.5Fz.2%z314.29%z14.29%�Fz1.43%i�z0.14%iXz0.01%ipz0.00%z.0%z14%z#.0%z14.%rz,.2%z	1,428.57%z7.2%z8.2%z 314.29%z08.2%z0314.29%i�	r>z2.54i�	z2.55iK
z2.64z.1fz0.0�1�3z0.1��z0.2rrr	s     r�test_format_f_presentation_typez,FractionTest.test_format_f_presentation_type�s&��{
�
�q�!�W�e�V�$�{
��q�!�W�e�V�$�{
��q�!�W�e�V�$�	{
�
�q�!�W�e�V�$�{
��q�!�W�e�V�$�
{
��q�!�W�e�V�$�{
��q�"�X�u�f�%�{
��q�#�Y��v�&�{
��q�#�Y��v�&�{
��r�1�X�u�i�(�{
��{�^�U�N�3�{
��v�u�
�v�
C�
E�{
�"�r�1�X�s�J�'�#{
�$�q�T�3�
�#�%{
�&�s�A�Y��[�)�'{
�*�w�Z���'�+{
�,�~�
��v�.�-{
�.�~�
��v�.�/{
�0�w�Z���'�1{
�2�w�Z���'�3{
�4�~�
��v�.�5{
�6�~�
��v�.�7{
�8�w�Z���'�9{
�:�x�[�%��)�;{
�<��
���0�={
�>��
���0�?{
�@�x�[�%��)�A{
�B�x�[�%��)�C{
�D��
���0�E{
�F��
���0�G{
�H�x�[�%��)�I{
�L�q�!�W�e�V�$�M{
�N�q�!�W�f�f�%�O{
�P�q�!�W�f�g�&�Q{
�R�q�!�W�f�g�&�S{
�T�r�1�X�u�g�&�U{
�V�r�1�X�v�w�'�W{
�X�r�1�X�v�w�'�Y{
�Z�r�1�X�v�w�'�[{
�^�q�!�W�e�S�!�_{
�`�r�1�X�u�d�#�a{
�b�r�1�X�u�c�"�c{
�d�s�A�Y��t�$�e{
�h�q�!�W�f�d�#�i{
�j�r�1�X�v�u�%�k{
�l�r�1�X�v�t�$�m{
�n�s�A�Y���&�o{
�r�x�[�&�&�)�s{
�t�x�[�'�6�*�u{
�v�x�[�'�7�+�w{
�x�x�[�'�7�+�y{
�z�w�Z���(�{{
�|�w�Z��&�)�}{
�~�w�Z��'�*�{
�@�w�Z��'�*�A{
�D�q�!�W�f�h�'�E{
�F�u�X�v�z�*�G{
�H�u�X�u�n�-�I{
�L�q�!�W�g�x�(�M{
�N�q�!�W�g�x�(�O{
�P�q�!�W�g�v�&�Q{
�R�q�!�W�g�v�&�S{
�T�q�!�W�g�w�'�U{
�V�q�!�W�g�x�(�W{
�X�q�!�W�g�y�)�Y{
�Z�q�!�W�g�z�*�[{
�^�r�1�X�x��,�_{
�`�q�!�W�h�
�+�a{
�d�r�1�X�x��)�e{
�f�r�1�X�x��+�g{
�h�r�1�X�x��+�i{
�j�r�1�X�x��+�k{
�l�r�1�X�x��+�m{
�n�r�1�X�x��+�o{
�r�r�1�X�{�O�4�s{
�t�r�1�X�y�+�.�u{
�v�r�1�X�y�+�.�w{
�x�r�1�X�x��+�y{
�z�r�1�X�x��+�{{
�|�r�1�X�z�=�1�}{
�@�r�1�X�w�	�*�A{
�B�r�1�X�x��+�C{
�D�q�!�W�h�	�*�E{
�F�q�!�W�h�	�*�G{
�L�q�!�W�f�f�%�M{
�N�q�!�W�g�v�&�O{
�P�q�!�W�g�v�&�Q{
�R�q�!�W�g�v�&�S{
�T�q�!�W�g�v�&�U{
�X�q�!�W�g�v�&�Y{
�\�q�!�W�f�f�%�]{
�^�q�!�W�f�k�*�_{
�`�|�_�f�l�3�a{
�b�y�\�6�>�2�c{
�d�z�]�F�O�4�e{
�f�z�]�D�"5�6�g{
�j�q�!�W�f�f�%�k{
�l�q�!�W�f�k�*�m{
�n�|�_�f�l�3�o{
�p�y�\�6�>�2�q{
�r�z�]�F�O�4�s{
�v�{�^�X�z�2�w{
�x�{�^�X�z�2�y{
�z�{�^�X�{�3�{{
�|�{�^�Y��5�}{
�~�{�^�Y��7�{
�@�{�^�Y��7�A{
�B�{�^�Y��8�C{
�D�{�^�Y�(8�9�E{
�F�{�^�Y�(:�;�G{
�H�{�^�Y�(:�;�I{
�J�|�_�h��4�K{
�L�|�_�h��4�M{
�N�|�_�h��4�O{
�P�|�_�i��6�Q{
�R�|�_�i��7�S{
�T�|�_�i��9�U{
�V�|�_�i��9�W{
�X�|�_�i�)9�:�Y{
�Z�|�_�i�):�;�[{
�\�|�_�i�)<�=�]{
�`�|�_�h��1�a{
�b�|�_�h�	�2�c{
�d�|�_�h�
�3�e{
�f�|�_�h��5�g{
�r�{�^�Z��8�s{
�|�w�Z���)�}{
�~�w�Z��7�+�{
�B�r�1�X�u�i�(�C{
�F�r�1�X�u�i�(�G{
�H�q�!�W�e�X�&�I{
�J�q�"�X�u�g�&�K{
�L�q�#�Y��w�'�M{
�N�q�$�Z���(�O{
�P�q�%�[�%��)�Q{
�R�q�!�W�e�U�#�S{
�T�q�!�W�f�f�%�U{
�V�s�A�Y���,�W{
�X�r�1�X�v�y�)�Y{
�Z�r�1�X�v�z�*�[{
�\�r�1�X�w�
�+�]{
�`�q�!�W�e�V�$�a{
�b�q�!�W�e�V�$�c{
�d�q�!�W�e�V�$�e{
�f�t�T�]�E�6�*�g{
�h�t�T�]�E�6�*�i{
�j�t�T�]�E�6�*�k{
�l�q�#�Y��u�%�m{
�n�r�4�[�%��'�o{
�p�r�4�[�%��'�q{
�r�s�D�\�5�%�(�s{
�t�s�D�\�5�%�(�u{
�	�x)2�$�H�d�H����x�d��;�� � ���$�!7��B�<�;�)2�;�;�s�	c1�1c:	c�B�gtd�ddf�td�ddf�td�ddf�td�dd	f�td
�ddf�td�dd
f�td�ddf�td�ddf�td�ddf�td�ddf�td�ddf�td�ddf�td�ddf�td�ddf�td�dd f�td!�d"d#f�td$�d"d#f�td%�d"d&f�td'�d"d&f�td(�d"d)f�td*�d"d)f�td+�d"d,f�td-�d"d,f�td.�dd/f�td0�dd1f�td2�dd3f�td4�dd5f�td6�dd7f�td.�d8d9f�td0�d8d0f�td2�d8d2f�td4�d8d4f�td6�d8d:f�td�d;df�td�d;d<f�td=�d>d?f�td@�dAdBf�tdC�dAdDf�tdE�dAdFf�tdG�dAdHf�tdG�dIdJf�tdK�dAdLf�tdK�dIdMf�td@�dNdBf�tdC�dNdDf�tdE�dNdFf�tdG�dNdHf�tdG�dOdJf�tdK�dNdLf�tdP�dQdRf�tdSdTdUz�dVdWf�}|D]>\}}}|j||�X�5|jt||�|�ddd��@y#1swY�KxYw)YNz0.000012345678z.6gz1.23457e-05z
0.00012345678z0.000123457z0.0012345678z
0.00123457z0.012345678z	0.0123457z
0.12345678z0.123457z	1.2345678z1.23457z	12.345678z12.3457z	123.45678z123.457rz1234.57z	12345.678z12345.7z	123456.78�123457z	1234567.8rz
9.99999e+2z.4g�1000z
9.99999e-8z1e-07z
9.99999e+8z1e+09z-0.115z.2gz-0.12z-0.125z-0.135z-0.14z-0.145z0.115rz0.125z0.135z0.14z0.145rrz123.400z123.4z123.000�123z120.000�120�12000000z1.2e+07z#.6gz0.00000z1.20000e+07z.6Gz1.23457E+06r�rCz3.14159z0.000031415z.0gz3e-05z
0.00031415z0.0003z0.31415z0.3z3.1415rz#.0grz31.415z3e+01z3.e+01z.1gz#.1glz_.25g�18_446_744_073_709_551_616r�r�r�zgz-3.09169e-85rrr	s     r�test_format_g_presentation_typez,FractionTest.test_format_g_presentation_type�s���=
�
��
 �%��7�=
�
��
��
�6�=
��~�
��|�4�=
��}�
�u�k�2�	=
�
�|�_�e�Z�0�=
��{�^�U�I�.�
=
��{�^�U�I�.�=
��{�^�U�I�.�=
��{�^�U�I�.�=
��{�^�U�I�.�=
��{�^�U�H�-�=
��{�^�U�M�2�=
��|�_�e�V�,�=
��|�_�e�W�-�=
� �|�_�e�W�-�!=
�$�x�[�%��)�%=
�&�x�[�%��)�'=
�(�x�[�%��)�)=
�*�x�[�%��)�+=
�,�w�Z���'�-=
�.�w�Z���'�/=
�0�w�Z���'�1=
�2�w�Z���'�3=
�6�q�T�5�#��7=
�8�y�\�5�'�*�9=
�:�y�\�5�%�(�;=
�<�y�\�5�%�(�==
�>�z�]�E�9�-�?=
�B�q�T�6�9�%�C=
�D�y�\�6�9�-�E=
�F�y�\�6�9�-�G=
�H�y�\�6�9�-�I=
�J�z�]�F�M�2�K=
�N�{�^�U�I�.�O=
�P�{�^�U�M�2�Q=
�T�~�
��Y�/�U=
�X�}�
�u�g�.�Y=
�Z�|�_�e�X�.�[=
�\�y�\�5�%�(�]=
�^�x�[�%��%�_=
�`�x�[�&�$�'�a=
�b�x�[�%��)�c=
�d�x�[�&�(�+�e=
�f�}�
�u�g�.�g=
�h�|�_�e�X�.�i=
�j�y�\�5�%�(�k=
�l�x�[�%��%�m=
�n�x�[�&�$�'�o=
�p�x�[�%��)�q=
�t�u�X�w� <�=�u=
�x�r�1�c�6�]�D�.�1�y=
�	�|)2�$�H�d�H����x�d��;�� � ���$�!7��B�<�;�)2�;�;�s�-L�L	c�X�tdd�}|jt�5t|d�ddd�gd�}|D]G}|j	|��5|jt
�5t||�ddd�ddd��Iy#1swY�ZxYw#1swY� xYw#1swY�lxYw)Nr�r�)�Q6fzX>010fzX<010fzX^010fzX=010fz0>010fz0<010fz0^010fz0=010fz>010fz<010fz^010fz=010ez=010fz=010gz=010%z>00.2fz>00f�006fz.010fz.02fz.000fz.ez.fz.gz.%zZ.2f)r)rrrrrr)rr�
invalid_specsrs    r�test_invalid_formatsz!FractionTest.test_invalid_formats�s����Q��7��
�
�
�y�
)��8�T�"�*�!
�
�D"�D����4��(��&�&�z�2��8�T�*�3�)�(�"�K*�
)��N3�2��)�(�s/�
B�B �(
B�5B �B�B�B � B)	c��ttd��5}|D�]K}|jd�r�|j�}|s�)t	t
j|j
d��\}}|j
�\}}|dk(r�n|dd}|j||��5tt|��}|jt||�|�|r |jt||�d|z�t|�}|jtt||��t|��|jtt||��td|z��ddd���N	ddd�y#1swY��cxYw#1swYyxYw)	Nzutf-8)�encodingz--z->z%rr�)�fmt�arg�-)�open�format_testfile�
startswith�stripr�r��splitrrr
r�r)	r�testfile�line�lhs�rhsr3r4�fmt2rgs	         r�test_float_format_testfilez'FractionTest.test_float_format_testfiles=��
�/�G�
4�� ���?�?�4�(���z�z�|�����s�y�y�$�*�*�T�*:�;���S��9�9�;���S��$�;���1�2�w���\�\�c�s�\�3��%��*�
�A��$�$�V�A�t�_�c�:���(�(����D�)9�3��9�E��#��A��$�$�U�6�!�T�?�%;�U�3�Z�H��$�$�U�6�1�"�d�+;�%<�e�C�#�I�>N�O�4�3�!�5�
4�4�3��5�
4�s%�B	E;�B>E.�E;�.E8�3E;�;FN)3r7r8r9r�r�r�rrrrr*r2r;rArFrKrTrbrhrur�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr"r+r0r@r2rrr�r�s'��+�
Q�
;�1�2�;��;�=�G�R(� �8-�01�=�+�9�0,� ,�D"&�HA�!+�F 
�D
@�K�<O�:*K�X1I�f9�	,�8�@
,�5�$6�":�3�$3�,�	8�+�/�
1�?�
5�,
C�8C�t@C�DBC�H*+�X�P��Prr��__main__)4r:�cmath�decimalr�test.supportrr?rr rEr��osr�re�unittestrrr�rrrFr�path�dirname�__file__�curdir�test_dir�joinr7�objectr
r=rRrXr^r`r��Realr�r��Complexr�rr�r�r�r�r��TestCaser�r7�mainr2rr�<module>rRs���!���*������	�
�
���
��
�����7�7�?�?�8�$�1��	�	���'�'�,�,�x�)D�E�����@8�F�8�@A�I�&�&�A�(�A�&<�&<�P	�8�	������l�#�	�h�	�������)�-V�-V�\�����#��L�L�:�����d��F�F�6�������D�D�8�������	�$��	�~P�8�$�$�~P�B(�z���H�M�M�O�r

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