Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_binop.cpython-311.pyc
�

�Ke�8��j�dZddlZddlmZmZmZddlmZd�Zd�Z	d�Z
d�ZGd	�d
e��Z
Gd�dej��ZGd
�d��Zd�ZGd�de��ZGd�dee���ZGd�de��ZGd�de��Ze�e��Gd�dej��ZGd�de��ZGd�de��ZGd�d e��ZGd!�d"e��ZGd#�d$e��ZGd%�d&��ZGd'�d(ej��Zed)krej ��dSdS)*z9Tests for binary operators on subtypes of built-in types.�N)�eq�le�ne)�ABCMetac��|r	||z|}}|�	|S)z1Greatest common divisor using Euclid's algorithm.�)�a�bs  �9/usr/local/apps/python3/lib/python3.11/test/test_binop.py�gcdrs&��
����s�A�1�����H�c�,�t|t��S)z-Test whether an object is an instance of int.)�
isinstance�int��xs r�isintr
����a����r
c�Z�tttfD]}t||��rdS�dS)zATest whether an object is an instance of a built-in numeric type.�r)r�float�complexr)r�Ts  r�isnumrs;��
�%��
 �����a����	��1�1�	��1r
c�,�t|t��S)z7Test whether an object is an instance of the Rat class.)r�Ratrs r�isRatrrr
c���eZdZdZddgZdd�Zd�Zeed��Zd	�Z	ee	d��Z
d
�Zd�Zd�Z
d
�Zd�ZeZd�Zd�Zd�ZeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)rz9Rational number implemented as a normalized pair of ints.�	_Rat__num�	_Rat__denrrc�0�t|��std|z���t|��std|z���|dkrtd���t||��}t	||z��|_t	||z��|_dS)z[Constructor: Rat([num[, den]]).

        The arguments must be ints, and default to (0, 1).zRat numerator must be int (%r)z Rat denominator must be int (%r)rzzero denominatorN)r�	TypeError�ZeroDivisionErrorrrrr )�self�num�den�gs    r�__init__zRat.__init__"s����S�z�z�	D��<�s�B�C�C�C��S�z�z�	F��>��D�E�E�E��!�8�8�#�$6�7�7�7���S�M�M����a��[�[��
���a��[�[��
�
�
r
c��|jS)z7Accessor function for read-only 'num' attribute of Rat.)r�r$s r�_get_numzRat._get_num1�
���z�r
Nc��|jS)z7Accessor function for read-only 'den' attribute of Rat.)r r*s r�_get_denzRat._get_den6r,r
c�$�d|j|jfzS)z<Convert a Rat to a string resembling a Rat constructor call.zRat(%d, %d)�rr r*s r�__repr__zRat.__repr__;s����
�D�J�7�7�7r
c�:�tt|����S)z=Convert a Rat to a string resembling a decimal numeric value.)�strrr*s r�__str__zRat.__str__?s���5��;�;���r
c�&�|jdz|jzS)zConvert a Rat to a float.��?r0r*s r�	__float__z
Rat.__float__Cs���z�#�~�d�j�(�(r
c���|jdkrB	t|j��S#t$r tdt	|��z���wxYwtdt	|��z���)z,Convert a Rat to an int; self.den must be 1.rz%s too large to convert to intzcan't convert %s to int)r rr�
OverflowError�repr�
ValueErrorr*s r�__int__zRat.__int__Gsz���:��?�?�
2��4�:���&�� �
2�
2�
2�#�$D�&*�4�j�j�%1�2�2�2�
2�����2�T�$�Z�Z�?�@�@�@s	�!�*Ac� �t|��rt|��}t|��r:t|j|jz|j|jzz|j|jz��St|��rt
|��|zStS)z$Add two Rats, or a Rat and a number.�rrrrr rr�NotImplemented�r$�others  r�__add__zRat.__add__Q�����<�<�	���J�J�E���<�<�	/��t�z�%�+�-���D�J�0F�F��z�%�+�-�/�/�
/���<�<�	'���;�;��&�&��r
c� �t|��rt|��}t|��r:t|j|jz|j|jzz
|j|jz��St|��rt
|��|z
StS)z)Subtract two Rats, or a Rat and a number.r>r@s  r�__sub__zRat.__sub__^rCr
c� �t|��rt|��}t|��r:t|j|jz|j|jzz
|j|jz��St|��r|t
|��z
StS)z9Subtract two Rats, or a Rat and a number (reversed args).r>r@s  r�__rsub__zRat.__rsub__is�����<�<�	���J�J�E���<�<�	/��u�{�4�:�-��
�5�;�0F�F��z�%�+�-�/�/�
/���<�<�	'��5��;�;�&�&��r
c��t|��r*t|j|jz|j|jz��St	|��rt|j|z|j��St|��rt
|��|zStS)z)Multiply two Rats, or a Rat and a number.�rrrr rrrr?r@s  r�__mul__zRat.__mul__ts����<�<�	G��t�z�%�+�-�t�z�%�+�/E�F�F�F���<�<�	5��t�z�%�'���4�4�4���<�<�	%���;�;�u�$�$��r
c��t|��r*t|j|jz|j|jz��St	|��rt|j|j|z��St|��rt
|��|zStS)z'Divide two Rats, or a Rat and a number.rIr@s  r�__truediv__zRat.__truediv__�s����<�<�	G��t�z�%�+�-�t�z�%�+�/E�F�F�F���<�<�	5��t�z�4�:�e�#3�4�4�4���<�<�	'���;�;��&�&��r
c��t|��r*t|j|jz|j|jz��St	|��rt||jz|j��St|��r|t
|��zStS)z7Divide two Rats, or a Rat and a number (reversed args).rIr@s  r�__rtruediv__zRat.__rtruediv__�s����<�<�	G��u�{�4�:�-�u�{�4�:�/E�F�F�F���<�<�	5��u�T�Z�'���4�4�4���<�<�	'��5��;�;�&�&��r
c��t|��rt|��}nt|��stS||z}|j|jzS)z.Divide two Rats, returning the floored result.)rrrr?rr �r$rArs   r�__floordiv__zRat.__floordiv__�sI����<�<�	"���J�J�E�E��u���	"�!�!���J���w�!�'�!�!r
c�*�||z}|j|jzS)z>Divide two Rats, returning the floored result (reversed args).r0rPs   r�
__rfloordiv__zRat.__rfloordiv__�s���$�J���w�!�'�!�!r
c��t|��rt|��}nt|��stS||z}||||zz
fS)z2Divide two Rats, returning quotient and remainder.)rrrr?rPs   r�
__divmod__zRat.__divmod__�sN����<�<�	"���J�J�E�E��u���	"�!�!��%�K���4�%�!�)�#�$�$r
c��t|��rt|��}nt|��stSt	||��S)zBDivide two Rats, returning quotient and remainder (reversed args).)rrrr?�divmodr@s  r�__rdivmod__zRat.__rdivmod__�sA����<�<�	"���J�J�E�E��u���	"�!�!��e�T�"�"�"r
c�.�t||��dS)zTake one Rat modulo another.r�rWr@s  r�__mod__zRat.__mod__�s���d�E�"�"�1�%�%r
c�.�t||��dS)z,Take one Rat modulo another (reversed args).rrZr@s  r�__rmod__zRat.__rmod__�s���e�T�"�"�1�%�%r
c��t|��r|jdko
|j|kSt|��r |j|jko|j|jkSt	|��rt|��|kStS)zCompare two Rats for equality.r)rr rrrrr?r@s  r�__eq__z
Rat.__eq__�sy����<�<�	;��:��?�:�t�z�U�':�:���<�<�	K��:���,�J���u�{�1J�J���<�<�	(���;�;�%�'�'��r
)rr)�__name__�
__module__�__qualname__�__doc__�	__slots__r(r+�propertyr%r.r&r1r4r7r<rB�__radd__rErGrJ�__rmul__rLrNrQrSrUrXr[r]r_rr
rrrs�������C�C��k�*�I�
!�
!�
!�
!�����(�8�T�
"�
"�C�����(�8�T�
"�
"�C�8�8�8� � � �)�)�)�A�A�A�	�	�	��H�	�	�	�	�	�	�����H�������"�"�"�"�"�"�
%�%�%�#�#�#�&�&�&�&�&�&�����r
rc�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�RatTestCasez3Unit tests for Rat class and its support utilities.c��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�td	d��d
��|�tdd
��d��|�td	d
��d
��tdd��D]�}tdd��D]�}|�t||��dk��|�t||��dk��|�t||��dk��|�t||��dk������dS)
N�
�����r�d�������r)�assertEqualr�range�
assertTrue)r$�i�js   r�test_gcdzRatTestCase.test_gcd�s�������R����a�(�(�(�����R����a�(�(�(�����R����a�(�(�(�����S�"���q�)�)�)�����S�!���b�)�)�)�����R����a�(�(�(�����S�"���r�*�*�*��q�"���	1�	1�A��1�b�\�\�
1�
1������A�q�	�	�A�
�.�.�.�����Q�B��
�
�Q��/�/�/�����A��r�
�
�Q��/�/�/�����Q�B�����a��0�0�0�0�	
1�	1�	1r
c	�B�tdd��}|�|jd��|�|jd��tdd��}|�|jd��|�|jd��tdd��}|�|jd��|�|jd��tdd��}|�|jd��|�|jd��td��}|�|jd��|�|jd	��	td	d
��}|�d��n#t
$rYnwxYwdd
ddgidttf	D]t}	t|��}|�d|z��n#t$rYnwxYw	td	|��}|�d|z���e#t$rY�qwxYwdS)Nrkrnrm�i�rsrr�rrz(Rat(1, 0) didn't raise ZeroDivisionError�0gyrzRat(%r) didn't raise TypeErrorz!Rat(1, %r) didn't raise TypeError)rrur%r&�failr#�unittestr")r$r	�bads   r�test_constructorzRatTestCase.test_constructor�sR����B�K�K��������"�"�"�������"�"�"���C�L�L��������#�#�#�������"�"�"���R�L�L��������#�#�#�������"�"�"���S�M�M��������"�"�"�������"�"�"���F�F��������"�"�"�������"�"�"�	B��A�q�	�	�A�
�I�I�@�A�A�A�A��!�	�	�	��D�	������R��R��T�3��@�	E�	E�C�
B���H�H���	�	�:�S�@�A�A�A�A���
�
�
���
����
E���3�K�K���	�	�=��C�D�D�D�D���
�
�
���
����	E�	Es6�F�
F�F�-G�
G"�!G"�&H�
H�Hc���|�tdd��tdd��zd��|�tdd��dztdd����|�dtdd��ztdd����|�dtdd��zd��|�tdd��dzd��dS)Nrmr|rror6��?�rurr*s r�test_addzRatTestCase.test_add�s�������Q����S��A�Y�Y�.��2�2�2�����Q����Q���A�q�	�	�2�2�2�����S��A�Y�Y���A�q�	�	�2�2�2�����s�1�a�y�y��#�.�.�.�����Q����S��#�.�.�.�.�.r
c��|�tdd��tdd��z
tdd����|�tdd��dz
tdd����|�dtdd��z
tdd����|�tdd��dz
d	��|�dtdd��z
d	��dS)
Nr}rmro�rkrr|r6��?r�r*s r�test_subzRatTestCase.test_subs�������Q����S��A�Y�Y�.��B����<�<�<�����Q����Q���A�q�	�	�2�2�2�����S��A�Y�Y���A�q�	�	�2�2�2�����Q����S��#�.�.�.�����s�1�a�y�y��#�.�.�.�.�.r
c���|�tdd��tdd��ztdd����|�tdd��dzd��|�dtdd��zd��|�tdd��dzd��|�dtdd��zd��dS)	Nrmr|ror}rkr�r�r6r�r*s r�test_mulzRatTestCase.test_mul	s�������Q����S��A�Y�Y�.��B����<�<�<�����R����a���,�,�,�����S��Q�Z�Z���,�,�,�����R����c�)�3�/�/�/�����s�2�q�z�z�)�3�/�/�/�/�/r
c��|�tdd��tdd��ztdd����|�tdd��dztdd����|�dtd��ztdd����|�dtd	d��zd
��|�td	d��dzd
��dS)Nrkr|ror}��	rm�@rr�r�r*s r�test_divzRatTestCase.test_divs�������R����c�!�Q�i�i�/��R����<�<�<�����R����a���R����4�4�4�����S��V�V��S��A�Y�Y�/�/�/�����s�1�a�y�y��#�.�.�.�����Q����S��#�.�.�.�.�.r
c�n�|�td��td��zd��|�tdd��tdd��zd��|�td��dzd��|�dtd��zd��dS)Nrk�rmr|r�r*s r�
test_floordivzRatTestCase.test_floordivs�������R���C��F�F�*�A�.�.�.�����R����s�1�a�y�y�0�!�4�4�4�����R���A��q�)�)�)�����s�1�v�v��q�)�)�)�)�)r
c��|�td��tdd����|�td��d��|�dtd����|�td��d��|�dtd����dS)Nrkrtrmg$@r�r*s r�test_eqzRatTestCase.test_eqs�������R���#�b�!�*�*�-�-�-�����R���"�%�%�%�����S��W�W�%�%�%�����R���$�'�'�'�����s�2�w�w�'�'�'�'�'r
c�@�|�tdd��tdd��ztdd����|�tdd��dztdd����|�dtd��ztdd����|�dtd	d��zd
��|�td	d��dzd
��|�td��d��dS)
Nrkr|ror}r�r�rmr�rr�z1/2r�)rur�evalr*s r�
test_true_divzRatTestCase.test_true_div$s�������R����c�!�Q�i�i�/��R����<�<�<�����R����a���R����4�4�4�����S��V�V��S��A�Y�Y�/�/�/�����s�1�a�y�y��#�.�.�.�����Q����S��#�.�.�.�����e���c�*�*�*�*�*r
N)
r`rarbrcrzr�r�r�r�r�r�r�r�rr
rriri�s�������=�=�
1�
1�
1�"E�"E�"E�H/�/�/�/�/�/�0�0�0�/�/�/�*�*�*�(�(�(�+�+�+�+�+r
ric��eZdZdZd�Zd�ZdS)�OperationLoggerz.Base class for classes with operation logging.c��||_dS�N��logger)r$r�s  rr(zOperationLogger.__init__1s
������r
c��|j|�dSr�r�)r$�argss  r�
log_operationzOperationLogger.log_operation3s�����T����r
N)r`rarbrcr(r�rr
rr�r�/s8������8�8��������r
r�c��g}g}|D]%}|�||j�����&	||�n#t$rYnwxYw|S)zvReturn the sequence of operations that results from applying
    the operation `op` to instances of the given classes.)�appendr")�op�classes�log�	instances�cs     r�op_sequencer�6su��
�C��I�
�(�(�������3�:���'�'�'�'�
�
��I������
�
�
���
�����Js�4�
A�Ac� �eZdZd�Zd�Zd�ZdS)�Ac�:�|�d��tS)N�A.__eq__�r�r?r@s  rr_zA.__eq__E������:�&�&�&��r
c�:�|�d��tS)N�A.__le__r�r@s  r�__le__zA.__le__Hr�r
c�:�|�d��tS)N�A.__ge__r�r@s  r�__ge__zA.__ge__Kr�r
N�r`rarbr_r�r�rr
rr�r�D�A����������������r
r�c� �eZdZd�Zd�Zd�ZdS)�Bc�:�|�d��tS)N�B.__eq__r�r@s  rr_zB.__eq__Pr�r
c�:�|�d��tS)N�B.__le__r�r@s  rr�zB.__le__Sr�r
c�:�|�d��tS)N�B.__ge__r�r@s  rr�zB.__ge__Vr�r
Nr�rr
rr�r�Or�r
r�)�	metaclassc� �eZdZd�Zd�Zd�ZdS)�Cc�:�|�d��tS)N�C.__eq__r�r@s  rr_zC.__eq__[r�r
c�:�|�d��tS)N�C.__le__r�r@s  rr�zC.__le__^r�r
c�:�|�d��tS)N�C.__ge__r�r@s  rr�zC.__ge__ar�r
Nr�rr
rr�r�Zr�r
r�c�$�eZdZdZd�Zd�Zd�ZdS)�VzVirtual subclass of Bc�:�|�d��tS)N�V.__eq__r�r@s  rr_zV.__eq__gr�r
c�:�|�d��tS)NzV.__le__r�r@s  rr�zV.__le__jr�r
c�:�|�d��tS)N�V.__ge__r�r@s  rr�zV.__ge__mr�r
N)r`rarbrcr_r�r�rr
rr�r�esG������������������r
r�c��eZdZd�ZdS)�OperationOrderTestsc�p�|�tttt��ddg��|�tttt��ddg��|�tttt��ddg��|�tttt
��ddg��|�ttt
t��ddg��|�tttt��ddg��|�tttt��ddg��|�tttt��ddg��|�tttt
��ddg��|�ttt
t��d	dg��|�ttt����|�tttt��dd
g��|�tttt��ddg��dS)Nr�r�r�r�r�r�r�r�r�r�r�)
rur�rr�r�r�rrw�
issubclassr�r*s r�test_comparison_ordersz*OperationOrderTests.test_comparison_ordersts�������R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I����
�1�a�(�(�)�)�)�����R��A�.�.��Z�0H�I�I�I�����R��A�.�.��Z�0H�I�I�I�I�Ir
N)r`rarbr�rr
rr�r�ss(������J�J�J�J�Jr
r�c��eZdZdZd�ZdS)�SupEqzClass that can test equalityc��dS�NTrr@s  rr_zSupEq.__eq__�����tr
N�r`rarbrcr_rr
rr�r��s)������&�&�����r
r�c��eZdZdZdZdS)�Sz"Subclass of SupEq that should failNr�rr
rr�r���������,�,�
�F�F�Fr
r�c��eZdZdZdS)�Fz'Independent class that should fall backN)r`rarbrcrr
rr�r��s������1�1�1�1r
r�c��eZdZdZdZdS)�Xz"Independent class that should failNr�rr
rr�r��r�r
r�c��eZdZdZdZdS)�SNz>Subclass of SupEq that can test equality, but not non-equalityN)r`rarbrc�__ne__rr
rr�r��s������H�H�
�F�F�Fr
r�c��eZdZdZd�ZdZdS)�XNz>Independent class that can test equality, but not non-equalityc��dSr�rr@s  rr_z	XN.__eq__�r�r
N)r`rarbrcr_r�rr
rr�r��s(������H�H����
�F�F�Fr
r�c��eZdZdZd�Zd�ZdS)�FallbackBlockingTestsz#Unit tests for None method blockingc��t��t��t��t��f\}}}}|�||��|�||��|�||��|�||��|�tt||��|�tt||��|�tt||��dSr�)r�r�r�r�ru�assertRaisesr"r)r$�e�f�srs     r�test_fallback_rmethod_blockingz4FallbackBlockingTests.test_fallback_rmethod_blocking�s����W�W�a�c�c�1�3�3����+�
��1�a������A��������A��������A��������A�������)�R��A�.�.�.����)�R��A�.�.�.����)�R��A�.�.�.�.�.r
c��t��t��t��}}}|�||k��|�t
t||��|�t
t||��|�||k��|�t
t||��dSr�)r�r�r��assertFalser�r"r)r$r��sn�xns    r�test_fallback_ne_blockingz/FallbackBlockingTests.test_fallback_ne_blocking�s����G�G�R�T�T�2�4�4�r�2������a�� � � ����)�R��B�/�/�/����)�R��Q�/�/�/�����b��!�!�!����)�R��Q�/�/�/�/�/r
N)r`rarbrcr�r�rr
rr�r��s8������-�-�
/�
/�
/�0�0�0�0�0r
r��__main__)!rcr��operatorrrr�abcrrrrr�objectr�TestCaserir�r�r�r�r�r��registerr�r�r�r�r�r�r�r�r`�mainrr
r�<module>r�sb��?�?���������������������
�
�
����
�
�
����g�g�g�g�g�&�g�g�g�Re+�e+�e+�e+�e+�(�#�e+�e+�e+�T�����������	�	�	�	�	��	�	�	�	�	�	�	�	��7�	�	�	�	�	�	�	�	�	��	�	�	�
�
�
�
�
��
�
�
��
�
�1�
�
�
�J�J�J�J�J�(�+�J�J�J�&�����F����
���������2�2�2�2�2��2�2�2���������������������������0�0�0�0�0�H�-�0�0�0�.�z����H�M�O�O�O�O�O��r