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

�Ke2���$�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZejdkZdZdZefd	�Zd
�Zd�ZGd�d
ej��ZGd�dej��Zedkrej��dSdS)�)�abcN)�support)�
import_helper)�assert_python_ok�big)�b�B�h�H�i�I�l�L�q�Q�n�N)��@�=�<�>�!c#�FK�tD]}|D]}|dvr|dvr�||fV���dS)N�rr)rr)�
integer_codes)�
byteorders�code�	byteorders   �:/usr/local/apps/python3/lib/python3.11/test/test_struct.py�iter_integer_formatsr!s^�����"�"��#�	"�	"�I���*�*�t�z�/A�/A���	�/�!�!�!�!�	"�"�"�c��|ddd�S)N����)�ss r �string_reverser's���T�T�r�T�7�Nr"c�2�tr|St|��S�N)�ISBIGENDIANr')�values r �bigendian_to_nativer,s���%����e�$�$�$r"c�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zejd���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejd���Z d�Z!ejd���Z"ejd���Z#d S)!�
StructTestc�v�|�tjdd��ddkt��dS)Nz=i�r)�assertEqual�struct�packr*��selfs r �test_isbigendianzStructTest.test_isbigendian%s4�����&�+�d�A�.�.�q�1�Q�6��E�E�E�E�Er"c��|�tjtjd��tjd��}|�|dztjd����d}d}tj|��}tj|��}|�|dz|��|�tjtjdd��|�tjtjdddd��|�ttjftjdd��|�ttjftjdd��|�tjtjd	d
��tjddd
��}|�tjtjd|��|�tjtjd|��dS)N�Zr��iiizcbxxxxxxhhhhiillffd?z3c3b18x12h6i6l6f3d3?�foo�P�dsflap�iir0�)�assertRaisesr2�error�calcsizer1r3�	TypeError�unpack)r5�sz�fmt�fmt3�sz3r&s      r �test_consistencezStructTest.test_consistence(s������&�,����=�=�=�
�_�S�
!�
!������a�����!7�!7�8�8�8�$��%��
�_�S�
!�
!���o�d�#�#������a���%�%�%����&�,���U�A�>�>�>����&�,���S�!�Q��B�B�B����9�f�l�3�V�[�#�u�M�M�M����9�f�l�3�V�[�#�u�M�M�M����&�,��
�s�G�D�D�D��K��a��#�#�����&�,��
�u�a�@�@�@����&�,��
�s�A�>�>�>�>�>r"c
��d}d}d}d}d}d}d}d}dD�]9}	d	D�]2}
|	|
z}
tj|
||||||||�	�	}tj|
|��\}}
}}}}}}|�||��|�|
|��|�||��|�||��|�||��|�t	d
|z��t	d
|z����|�t	d
|z��t	d
|z����|�||����4��;dS)N�ar0�i��igo���!	@T)rrrrrr)z	xcbhilfd?z	xcBHILfd?�d)r2r3rDr1�int)r5�crr
rr�fr=�t�prefix�formatr&�cp�bp�hp�ip�lp�fp�dp�tps                    r �test_transitivenesszStructTest.test_transitiveness=s|����
��������������3�	(�	(�F�4�
(�
(���&����K���1�a��A�q�!�Q�?�?��17��v�q�1I�1I�.��B��B��B��B�� � ��Q�'�'�'�� � ��Q�'�'�'�� � ��Q�'�'�'�� � ��Q�'�'�'�� � ��Q�'�'�'�� � ��S�2�X����C�!�G���=�=�=�� � ��S�2�X����C�!�G���=�=�=�� � ��Q�'�'�'�'�
(�	(�	(r"c�4�gd�d�d�d�d�d�d�d�d	�d
�d�d�d
�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"gd#d#d$f�d%�}|D]�\}}}}}d&|z|fd'|z|fd(|z|fd)|ztr|p|ffD]�\}}tj||��}	|�|	|��|�tj|��t|	����tj||	��d*}
|
|kr|�|������dS)+N)rOrKrKrKr)�xcrK�ar_r)�cxrK�arar)r&rKrKrKr)�0s�
helloworldr"r"r0)�1src�hrer0)�9src�	helloworlrgr0)�10srcrcrcr)�11src�helloworldrjr0)�20src�helloworldrlr0)r��rnr)ri������ror)r	rmrnrnr)r	�roror)r
�����r)r
iD�����D�D�r)rrqrrrsr)riD�rtrur)r�,�,���,r)r�����������r)r
rvrwrxr)r
��b�wrzr{r)rrvrwrxr)rryrzr{r)rrvrwrxr)rr|rzr{r)rP�@s@s@r)r=r}s@s@r)rP��s�s�r)r=r~s�s�r)�?r�r�r)rr9�r�r0)rTr�r�rrr�r0)r)r0r�r�r0rrrrr)r*r2r3r1rB�lenrD�
assertTrue)r5�testsrF�argr�lil�asy�xfmt�exp�res�revs           r �test_new_featureszStructTest.test_new_featuresUs|��&
�&�&
�+�&
�
,�&
�
'�	&
�

/�&
�
1�
&
�
A�&
�
D�&
�
H�&
�
V�&
�
&�&
�
+�&
�
&�&
�
,�&
�
4�&
� 
/�!&
�"
4�#&
�$
6�%&
�&
C�'&
�(
J�)&
�*
C�+&
�,
U�-&
�.
C�/&
�0
J�1&
�2
C�3&
�4
U�5&
�6
>�7&
�8
<�9&
�<
E�=&
�>
@�?&
�B
&�C&
�D
&�E&
�F
)�G&
�H�"�e�U�A�&�I&
�J
)�K&
��P(-�	)�	)�#�C��c�3��!$�S��#���S��#���S��#��!$�S��+�*=�#�*D�� E� G�
)�
)���s��k�$��,�,��� � ��c�*�*�*�� � ����!6�!6��C���A�A�A��m�D�#�.�.�q�1���#�:�:��O�O�C�(�(�(��
)�	)�	)r"c���ddddddddddd�
}td��D]:\}}||z}tj|��}|�|||���;d}|D]W}dD]R}tj||d	z��}tj||dz��}	|�||	���S�X|�tjd
��d��|�dtjd����|�dtjd����|�tjd��tjd
����|�tjd
��tjd����|�dtjd����|�tjd��tjd����|�tjd��tjd
����|�tjd��tjd����dS)Nr0r?��)
rr	r
rrr
rrrr�rrrr)�bB�hH�iI�lL�nN�qQrrrr
rrrrr<)r!r2rBr1�assertLessEqual�assertGreaterEqual)
r5�
expected_sizerrrS�size�native_pairs�format_pair�signed_size�
unsigned_sizes
          r �
test_calcsizezStructTest.test_calcsize�sH��������������
� 4�4H�I�I�	8�	8�O�D�)��t�^�F��?�6�*�*�D����T�=��#6�7�7�7�7�:��'�	=�	=�K�$�
=�
=�	�$�o�i�+�a�.�.H�I�I�� &��	�K��N�0J� K� K�
�� � ��m�<�<�<�<�
=�	
������-�-�q�1�1�1����Q���� 4� 4�5�5�5����Q���� 4� 4�5�5�5����V�_�S�1�1�6�?�3�3G�3G�H�H�H����V�_�S�1�1�6�?�3�3G�3G�H�H�H����Q���� 4� 4�5�5�5����V�_�S�1�1�6�?�3�3G�3G�H�H�H������� 4� 4�f�o�c�6J�6J�K�K�K������� 4� 4�f�o�c�6J�6J�K�K�K�K�Kr"c�����ddl�G���fd�dtj���t��D])\}}||z�����}|����*dS)Nrc�X���eZdZ��fd�Zejej�jfd�Z�fd�Z	�xZ
S)�+StructTest.test_integers.<locals>.IntTesterc�X��t�|���d���||_|d|_|dd�|_|jt
vrt
d|jz���tj|��|_	|j	dz|_
|jtd��vr1d|_d|j
d	z
z|_
d|j
d	z
zd	z
|_dS|jtd
��vr"d|_d|_
d|j
zd	z
|_dSt
d
|jz���)N�test_one)�
methodNamer$z"unrecognized packing byteorder: %sr��bhilqnTr?r0�BHILQNFrzunrecognized format code: %s)�super�__init__rSrrr�
ValueErrorr2rB�bytesize�bitsize�tuple�signed�	min_value�	max_value)r5rS�	IntTester�	__class__s  ��r r�z4StructTest.test_integers.<locals>.IntTester.__init__�s0����i��&�&�/�/�:�/�F�F�F�$���"�2�J��	�!'��������~��3�3�$�%I�%)�^�&4�5�5�5� &��� 7� 7��
�#�}�q�0����9��h���/�/�"&�D�K�'(�4�<��>�':�%;�D�N�%&���a��%8�1�%<�D�N�N�N��Y�%��/�/�1�1�"'�D�K�%&�D�N�%&���_�q�%8�D�N�N�N�$�%C�%)�Y�&/�0�0�0r"c�T�|j}|j|cxkr|jk�rYn�nU|}|jr|dkr
|d|jzz
}|�|d��d|z}t
|��dzrd|z}|�d��}||��}d|jt
|��z
z|z}|j	dks|j	dvrtst|��}|�t
|��|j��|||��}|�||��|||��d}|�||��|�
tjt f||d	|z��dS|�
t"t$tjf|||��dS)
Nrr0z%x�0�asciir�r)rrrr�)rSr�r�r�r�r�r��encoder�rr*r'r1r@r2rArC�
OverflowErrorr�)	r5�xr3rD�	unhexlifyrS�expected�got�	retrieveds	         r r�z4StructTest.test_integers.<locals>.IntTester.test_one�s�������>�Q�8�8�8�8�$�.�8�8�8�8�8� �H��{�6�q�1�u�u� �A���$5�5���+�+�H�a�8�8�8�#�h��H��8�}�}�q�(�2�#&��>��'���w�7�7�H�(�y��2�2�H� '�4�=�3�x�=�=�+H� I� (�!)�H���#�-�-���.�8�8��8�#1�(�#;�#;���$�$�S��]�]�D�M�B�B�B��$�v�q�/�/�C��$�$�S�(�3�3�3�!'��v�s� 3� 3�A� 6�I��$�$�Q�	�2�2�2��%�%�v�|�Y�&?���AH�3��P�P�P�P�P��%�%�}�j�&�,�&O�&*�F�A�7�7�7�7�7r"c�L��ddlm}g}t|jdz��D]}|�d|z���t|j��D]A}d}t|j��D]}|dz|d��z}�|�|���B|�ddtjd	zg��|D])}||fD]!}d
D]}||z}	|�	|	����"�*Gd�d��}
Gd
�dt��}Gd�dt��}|�ttjftj|jd��|�ttjftj|j|��|�ttjftj|jd��|�ttjftj|j|
����|�ttjftj|j|����|d��|d��|d��|d��|d��|d��fD]4}
	tj�|
���#|�d��Y�2xYw|d��|d��|d��|ddi��|gd���fD]:}
|�ttjftj|j|
���;dS)Nr)�	randranger9r0r��i,i`�
r�)r$rr0c��eZdZd�ZdS)�AStructTest.test_integers.<locals>.IntTester.run.<locals>.NotAnIntc��dS�N�*r%r4s r �__int__zIStructTest.test_integers.<locals>.IntTester.run.<locals>.NotAnInt.__int__���!�rr"N)�__name__�
__module__�__qualname__r�r%r"r �NotAnIntr�
s#������"�"�"�"�"r"r�c��eZdZd�Zd�ZdS)�BStructTest.test_integers.<locals>.IntTester.run.<locals>.Indexablec��||_dSr)��_value)r5r+s  r r�zKStructTest.test_integers.<locals>.IntTester.run.<locals>.Indexable.__init__s
��&+����r"c��|jSr)r�r4s r �	__index__zLStructTest.test_integers.<locals>.IntTester.run.<locals>.Indexable.__index__s
��#�{�*r"N)r�r�r�r�r�r%r"r �	Indexabler�s2������,�,�,�+�+�+�+�+r"r�c��eZdZd�Zd�ZdS)�AStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndexc��t�r))rCr4s r r�zKStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndex.__index__s��'�r"c��dSr�r%r4s r r�zIStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndex.__int__r�r"N)r�r�r�r�r�r%r"r �BadIndexr�s2������(�(�(�"�"�"�"�"r"r�za stringy@E@�
�r�rM�z:integer code pack failed on object with '__index__' methodrKr�a)r0r?r9)�randomr��ranger��appendr��extend�sys�maxsizer��objectr@rCr2rAr3rS�fail)r5r��valuesr�r�val�j�base�incrr�r�r�r��objrSs              �r �runz/StructTest.test_integers.<locals>.IntTester.run�s����,�,�,�,�,�,��� ����!1�2�2�,�,�C��M�M�!�s�(�+�+�+�+��t�|�,�,�'�'�A��C�"�4�=�1�1�:�:��"�a�x�9�9�S�>�>�9����M�M�#�&�&�&�&��
�
�s�F�C�K��M�:�;�;�;�#�-�-�D� $�u�d�{�-�-��$,�-�-�D� #�d�
�A� �M�M�!�,�,�,�,�-�-�"�"�"�"�"�"�"�"�+�+�+�+�+��+�+�+�"�"�"�"�"�v�"�"�"��!�!�9�f�l�";�"(�+�t�{�",�.�.�.��!�!�9�f�l�";�"(�+�t�{�"+�-�-�-��!�!�9�f�l�";�"(�+�t�{�"'�)�)�)��!�!�9�f�l�";�"(�+�t�{�"*�(�*�*�.�.�.��!�!�9�f�l�";�"(�+�t�{�"*�(�*�*�.�.�.�
&�I�a�L�L�)�)�B�-�-���2���%�I�b�M�M�9�9�S�>�>�9�9�S�>�>�K�=�=�C�=���F�C�0�0�0�0��=��	�	�#<�=�=�=�=�=����&�I�d�O�O�Y�Y�s�^�^�Y�Y�t�_�_�%�I�s�A�h�/�/���9�9�9�1E�1E�G�+�+�C��%�%�y�&�,�&?�&,�k�4�;�&)�+�+�+�+�+�+s�?J�J.)r�r�r�r�r2r3rDr�r�r��
__classcell__)r�r��binasciirSs@���r r�r��s���������
0�
0�
0�
0�
0�
0�,(.�{�)/��,4�,>�$
7�$
7�$
7�$
7�LR
+�R
+�R
+�R
+�R
+�R
+�R
+�R
+�R
+r"r�)r��unittest�TestCaser!r�)r5rrrQr�r�rSs    @@@r �
test_integerszStructTest.test_integers�s����������O	+�O	+�O	+�O	+�O	+�O	+�O	+�O	+�O	+��)�O	+�O	+�O	+�b 4�5�5�	�	�O�D�)��t�^�F��	�&�!�!�A�
�E�E�G�G�G�G�	�	r"c����fd�}dD]P}dD]K}||z}|tj|��|tj|d��|tj|d���L�QdS)Nc������tj��5}||i|��ddd��n#1swxYwY��dt	|j����dS)Nzbad char in struct format)r@r2rA�assertIn�str�	exception)�func�args�kwargs�cmr5s    �r �assertStructErrorz2StructTest.test_nN_code.<locals>.assertStructErrorHs�����"�"�6�<�0�0�
&�B���d�%�f�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��M�M�5�s�2�<�7H�7H�I�I�I�I�Is�	6�:�:r�r�rr")r2rBr3rD)r5r�rrrSs`    r �test_nN_codezStructTest.test_nN_codeFs����	J�	J�	J�	J�	J��	>�	>�D�1�
>�
>�	�"�4���!�!�&�/�6�:�:�:�!�!�&�+�v�q�9�9�9�!�!�&�-���=�=�=�=�	
>�	>�	>r"c���dD]_\}}}}tj||��}|�||��tj||��\}|�||���`dS)N))�p�abcr�r")�1pr�r�r")�2pr�sarK)�3pr�sabsab)�4pr�sabcr�)�5pr�sabcr�)�6pr�sabcr�)�1000ps�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs��xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r2r3r1rD)r5r�inputr��expectedbackr�s      r �test_p_codezStructTest.test_p_codeSs|��4D�	0�	0�/�D�%��<��+�d�E�*�*�C����S�(�+�+�+��]�4��-�-�F�S����S�,�/�/�/�/�	0�	0r"c��tdd��D]�}d}||dzz
|kr|dz}||dzz
|k�||z
}tjd|��}tjd|��d}|�||��tjd|��}|�|t|����tjd|��d}|�||����d}t
j|d	��}tjd|��}tjd|��d}|�||��d
}t
j|d��}|�ttjd|��dS)Nr0�!g�?r}z<frz>fi����hi����g)
r�r2r3rDr1r'�math�ldexpr@r�)r5r��delta�smaller�packed�unpacked�	bigpackedrs        r �test_705836zStructTest.test_705836cs����!�R�L�L�	-�	-�D��E�����$��,�,���������$��,�,��U�l�G��[��w�/�/�F��}�T�6�2�2�1�5�H�
���T�8�,�,�,���D�'�2�2�I����Y��v�(>�(>�?�?�?��}�T�9�5�5�a�8�H����T�8�,�,�,�,����j��h�'�'����T�3�'�'���=��v�.�.�q�1������h�'�'�'����j��h�'�'�����-���d�C�@�@�@�@�@r"c��t��D]b\}}||z}|�tjtj|d��|�tjtj|d���c|�tjtjdd��|�tjtjdd��dS)N��?g�?r<)r!r@r2rAr3)r5rrrSs    r �test_1530559zStructTest.test_1530559�s���3�5�5�	F�	F�O�D�)���%�F����f�l�F�K���E�E�E����f�l�F�K���E�E�E�E����&�,���S�#�>�>�>����&�,���S�#�>�>�>�>�>r"c	�L�d}d}tj|��}ttfD�]}||��}|�|�|��d��|�|�|d��d��|�|�|d��d��t
d��D]8}|�|�||��|||dz�f���9t
dt|��d	z��D])}|�tj	|j||���*��ttfD�]#}||��}|�tj||��d��|�tj||d��d��|�tj||d��d��t
d��D]8}|�tj|||��|||dz�f���9t
dt|��d	z��D]/}|�tj	tj|||���0��%|�|�|d�
��d��dS)Ns	abcd01234�4s)sabcdr?)scd01r�)s0123�r0)�buffer�offset)
r2�Struct�bytes�	bytearrayr1�unpack_fromr�r�r@rA)r5�test_stringrFr&�cls�datars       r �test_unpack_fromzStructTest.test_unpack_from�s���"�����M�#�����9�%�	H�	H�C��3�{�#�#�D����Q�]�]�4�0�0�*�=�=�=����Q�]�]�4��3�3�Z�@�@�@����Q�]�]�4��3�3�Z�@�@�@��1�X�X�
I�
I��� � ����t�Q�!7�!7�$�q��1��u�+��H�H�H�H��1�c�+�.�.��2�3�3�
H�
H���!�!�&�,��
�t�Q�G�G�G�G�
H��9�%�	R�	R�C��3�{�#�#�D����V�/��T�:�:�J�G�G�G����V�/��T�1�=�=�z�J�J�J����V�/��T�1�=�=�z�J�J�J��1�X�X�
S�
S��� � ��!3�C��q�!A�!A�D��1�Q�3��K�>�R�R�R�R��1�c�+�.�.��2�3�3�
R�
R���!�!�&�,��0B�C��q�Q�Q�Q�Q�
R�	
������k�!��D�D�#�	%�	%�	%�	%�	%r"c�&�d}tjdd��}d}tj|��}|�|d|��|���dt|���}|�||��|�|d|��|���dt|��dz�}|�||dd�|z��tjdd��}|�ttj	f|j|d|��|�ttj	f|j|d|��|}|�ttj	ftjd	|d��dS)
N�Reykjavik rocks, eow!r�d                                                                                                    �21srr��
          r?r")�arrayr2r�	pack_into�tobytesr�r1r@r�rArC)r5r �writable_bufrFr&�from_buf�	small_buf�sbs        r �test_pack_intozStructTest.test_pack_into�s���.���{�3��1�1�����M�#����	
���L�!�[�1�1�1��'�'�)�)�*;�3�{�+;�+;�*;�<������;�/�/�/�	
���L�"�k�2�2�2��'�'�)�)�*>�3�{�+;�+;�B�+>�*>�?������;�s��s�#3�k�#A�B�B�B��K��W�-�-�	����:�v�|�4�a�k�9�a�%�	'�	'�	'����:�v�|�4�a�k�9�a�%�	'�	'�	'������9�f�l�3�V�5E�s�B��	 �	 �	 �	 �	 r"c�b��d}tjdd��}d��fd�}||d|��|���dt|���}|�||��||d|��|���dt|��dz�}|�||dd�|z��tjdd��}|�t
tjf||d|��|�t
tjf||d	|��dS)
Nr%rr&r'c�(��tj�g|�R�Sr))r2r*)r�rFs �r �<lambda>z.StructTest.test_pack_into_fn.<locals>.<lambda>�s���&�"2�3�">��">�">�">�r"rr�r(r?)r)r+r�r1r@r�r2rA)r5r r,r*r-r.rFs      @r �test_pack_into_fnzStructTest.test_pack_into_fn�sP���.���{�3��1�1����>�>�>�>�	�	�	�,��;�/�/�/��'�'�)�)�*;�3�{�+;�+;�*;�<������;�/�/�/�	�	�,��K�0�0�0��'�'�)�)�*>�3�{�+;�+;�B�+>�*>�?������;�s��s�#3�k�#A�B�B�B��K��W�-�-�	����:�v�|�4�i��A�%�	'�	'�	'����:�v�|�4�i��A�%�	'�	'�	'�	'�	'r"c��tjdd��}td��}||fD]/}tjd|��\}|�|d���0dS)Nr	s4Vxz>IixV4)r)�
memoryviewr2rDr1)r5�data1�data2r"r+s     r �test_unpack_with_bufferz"StructTest.test_unpack_with_buffer�sk����C�!4�5�5���.�/�/���E�N�	0�	0�D��]�4��.�.�F�E����U�J�/�/�/�/�	0�	0r"c��Gd�dt��}td��dzD�]�}dggddf}dgd	d
ddd
f}|dt|��zz}tj|g|�R�}tj||��}|dt|��zz}tj|g|�R�}	tj||	��}
|�t|��t|
����|�t|��t|����|D]}|�|���|
D]}|�|���tj|dzd��}|�t|��tj	|dz����t|��dkr|�|d|z���	tj|dz|����|�
d|dzz�����#t$rY���wxYwdD]0}
|�tjd|
��d���1dS)Nc��eZdZd�ZdS)�+StructTest.test_bool.<locals>.ExplodingBoolc��t�r))�OSErrorr4s r �__bool__z4StructTest.test_bool.<locals>.ExplodingBool.__bool__�s���
r"N)r�r�r�r?r%r"r �
ExplodingBoolr<�s#������
�
�
�
�
r"r@z<>!=)rr%rrr0�test�r$lg���Arz encoded bool is not one byte: %r)�msgz2Expected OSError: struct.pack(%r, ExplodingBool()))r�������z>?)r�r�r�r2r3rDr1�assertFalser�rBr�r>)r5r@rR�false�true�falseFormat�packedFalse�
unpackedFalse�
trueFormat�
packedTrue�unpackedTruerQrrOs              r �	test_boolzStructTest.test_bool�s���	�	�	�	�	�F�	�	�	��F�m�m�E�)�"	?�"	?�F���B��A�%�E��3���2�|�\�A�D� �3��U���#3�3�K� �+�k�:�E�:�:�:�K�"�M�+�{�C�C�M��#��D�	�	�/�1�J���Z�7�$�7�7�7�J�!�=��Z�@�@�L����S��Y�Y��L�(9�(9�:�:�:����S��Z�Z��]�);�);�<�<�<�"�
$�
$��� � ��#�#�#�#�!�
#�
#������"�"�"�"��[����Q�/�/�F����S��[�[�&�/�&��*�*E�*E�F�F�F��6�{�{�a���� � ��-O�.4�.5� �6�6�6�
?���F�S�L�-�-�/�/�:�:�:��	�	�-�06���>�?�?�?�?���
�
�
���
����?�	7�	7�A��O�O�F�M�$��2�2�1�5�6�6�6�6�	7�	7s� H�
H�
Hc�V�d�tjdz��}|�tjtj|��d�tjdztjdz��}|�tjtj|��dS)Nz{}br0z{}b{}Hr?)rSr�r�r@r2rArB)r5�	hugecount�
hugecount2s   r �test_count_overflowzStructTest.test_count_overflow
sv���L�L���Q��/�/�	����&�,����C�C�C��_�_�S�[�!�^�S�[�!�^�D�D�
����&�,����D�D�D�D�Dr"c�^�tjdd��}|�tjtjd��|�tjtjdd��|�tjtjd|d��|�tjtjd|d��|�tjtjdd��|�tjtjdd��|�tjtjd|dd��|�tjtjd|d��|�tjtjd	d
��|�tjtjd	d��|�tjtjd	|dd
��|�tjtjd	|d��dS)Nrr&�12345r"r�c12345r��x�14s42z
spam and eggss
spam and eggs)r)r@r2rAr3rDr*r)r5�stores  r �test_trailing_counterz StructTest.test_trailing_counters�����C��*�*��	
���&�,���W�=�=�=����&�,��
�w��D�D�D����&�,��(8�'�5�!�L�L�L����&�,��(:�G�U�A�N�N�N�	
���&�,���X�s�C�C�C����&�,��
�x��F�F�F����&�,��(8�(�E�1��	 �	 �	 ����&�,��(:�H�e��	�	�	�	
���&�,���W�o�N�N�N����&�,��
�w�*�	,�	,�	,����&�,��(8�'�5�!�)�	+�	+�	+����&�,��(:�G�U�A�N�N�N�N�Nr"c�X�tjd��}|�d��dS)Nrr>)r2rr��r5r&s  r �test_Struct_reinitializationz'StructTest.test_Struct_reinitialization-s+��
�M�#����	�
�
�4�����r"c��tjd��}|tjd��|dzzz
}tj|tj|��|��dS)N�2n3P�P3n0Pr0)r�calcobjsizer2rB�check_sizeofr)r5�
format_str�number_of_codes�	totalsizes    r rdzStructTest.check_sizeof4sU���'��/�/�	��V�_�W�-�-��1�1D�E�E�	���T�6�=��#<�#<�i�H�H�H�H�Hr"c���tD]}|�|d���|�dd��|�dd��|�dd��|�dd	��|�d
d��|�dd��|�dd��|�d
d��|�dd	��dS)Nr0�	BHILfdspP�	��BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBi��fdr?�xxxxxxxxxxxxxxr�100H�187s�20prb�0c)rrd)r5rs  r �test__sizeof__zStructTest.test__sizeof__;s���!�	'�	'�D����d�A�&�&�&�&����+�q�)�)�)����*�d�+�+�+����$��"�"�"����*�A�.�.�.����&�!�$�$�$����&�!�$�$�$����%��#�#�#����$��"�"�"����$��"�"�"�"�"r"c�~�d}|�tj|��5tjdt	d��dd��ddd��n#1swxYwYd}|�tj|��5tjdt	d��d��ddd��dS#1swxYwYdS)Nzkpack_into requires a buffer of at least 6 bytes for packing 1 bytes at offset 5 \(actual buffer size is 1\)rr0rBzounpack_from requires a buffer of at least 6 bytes for unpacking 1 bytes at offset 5 \(actual buffer size is 1\))�assertRaisesRegexr2rAr*rr�r5�regex1�regex2s   r �test_boundary_error_messagez&StructTest.test_boundary_error_messageIs;��
+�	�
�
#�
#�F�L�&�
9�
9�	6�	6���S�)�A�,�,��1�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�
+�	�
�
#�
#�F�L�&�
9�
9�	5�	5���s�I�a�L�L�!�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s#�%A�A�A�$B2�2B6�9B6c��td��}|�tjd��5tjd|dd��ddd��n#1swxYwY|�tjd��5tjd|dd��ddd��n#1swxYwY|�tjd	��5tjd|d��ddd��n#1swxYwY|�tjd��5tjd|d��ddd��dS#1swxYwYdS)
Nr�z%no space to pack 4 bytes at offset -2�<I����{z*offset -11 out of range for 10-byte bufferz<Bi����z.not enough data to unpack 4 bytes at offset -2)rrtr2rAr*r)r5�	byte_lists  r �0test_boundary_error_message_with_negative_offsetz;StructTest.test_boundary_error_message_with_negative_offsetZsP���b�M�M�	�
�
#�
#���8�:�:�	7�	7�
��T�9�b�#�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
#�
#���<�>�>�	8�	8�
��T�9�c�3�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�
�
#�
#���A�C�C�	4�	4�
��t�Y��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�
#�
#���<�>�>�	5�	5�
��t�Y��4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5sG�A�A�A�?B#�#B'�*B'�C1�1C5�8C5�E�E�Ec��dttjdz��zdzttj��zdz}|�tj|��5t	jdtd��tjd��ddd��n#1swxYwYdttjdz��zd	zttj��zdz}|�tj|��5t	jdtd��tj��ddd��dS#1swxYwYdS)
Nz(pack_into requires a buffer of at least r�z% bytes for packing 4 bytes at offset z \(actual buffer size is 10\)rzr�r0z*unpack_from requires a buffer of at least z' bytes for unpacking 4 bytes at offset )	r�r�r�rtr2rAr*rrrus   r �-test_boundary_error_message_with_large_offsetz8StructTest.test_boundary_error_message_with_large_offsetps���
8�#�c�k�A�o�:N�:N�N�4�
5�7:�3�;�7G�7G�
H�,�
-�	�
�
#�
#�F�L�&�
9�
9�	B�	B���T�9�R�=�=�#�+�q�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�
:�C���a��<P�<P�P�6�
7�9<�S�[�9I�9I�
J�,�
-�	�
�
#�
#�F�L�&�
9�
9�	A�	A���t�Y�r�]�]�C�K�@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As$� /B�B�"B�.E�E�Ec���|�t��5tjdd��ddd��n#1swxYwY|�tjdd��d��dS)NrrrK)�a)r@rCr2rDr1r4s r �test_issue29802zStructTest.test_issue29802�s����
�
�y�
)�
)�	"�	"��M�#�q�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	
�����s�D�1�1�:�>�>�>�>�>s�=�A�Ac��tjd��}|�|jd��tj|j�����}|�|j|j��dS)Nz=i2H)r2rr1rSr�)r5r&�s2s   r �test_format_attrzStructTest.test_format_attr�sf���M�&�!�!�������6�*�*�*��]�1�8�?�?�,�,�
-�
-�������A�H�-�-�-�-�-r"c��d}td|��\}}}|�|d��|�|���d��|�d|��|�d|��dS)Nz�if 1:
            import struct

            class C:
                def __init__(self):
                    self.pack = struct.pack
                def __del__(self):
                    self.pack('I', -42)

            struct.x = C()
            z-crr"sException ignored in:s	C.__del__)rr1�rstripr�)r5r�rc�stdout�stderrs     r �)test_struct_cleans_up_at_runtime_shutdownz4StructTest.test_struct_cleans_up_at_runtime_shutdown�s���
��.�d�D�9�9���F�F�����Q������������#�.�.�.��
�
�.��7�7�7��
�
�l�F�+�+�+�+�+r"c���tjd��}tj|��}|�d��~tj��|�|��d��dS)N�_structrz(_struct module was not garbage collected)r�import_fresh_module�weakref�refrB�gc�collect�assertIsNone)r5�_struct_module�
module_refs   r �'test__struct_reference_cycle_cleaned_upz2StructTest.test__struct_reference_cycle_cleaned_up�sz��
'�:�9�E�E���[��0�0�
�����$�$�$��	�
��������J�L�L�D�	F�	F�	F�	F�	Fr"c�>�tj}ttjdd����}||fD]i}|�|���5|�t��5d|_ddd��n#1swxYwYddd��n#1swxYwY�jdS)NrrY)r!r0)r2r�type�iter_unpack�subTestr@rCr�)r5r�unpack_iteratorr!s    r �test__struct_types_immutablez'StructTest.test__struct_types_immutable�s������v�1�#�t�<�<�=�=���O�,�	�	�C����#��&�&�
�
��&�&�y�1�1����C�E�������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s6�B�&A:�.B�:A>�>B�A>�B�B	�B	c��dD]N}|�tjd��5tj|��ddd��n#1swxYwY�OdS)N)�z2ir�zembedded null character)rtr2rArBr^s  r �test_issue35714zStructTest.test_issue35714�s���$�	#�	#�A��'�'���(A�C�C�
#�
#����"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��	#�	#s�A�A
	�
A
	c�x�tjd��}d|j��}|�tj|��5t	jdd��ddd��n#1swxYwY|�tj|��5t	jdd��ddd��dS#1swxYwYdS)N�	_testcapiz&ushort format requires 0 <= number <= r�pr$)r�
import_module�	USHRT_MAXrtr2rAr3�r5r��	error_msgs   r �test_issue45034_unsignedz#StructTest.test_issue45034_unsigned�s/��!�/��<�<�	�R�Y�=P�R�R�	�
�
#�
#�F�L�)�
<�
<�	$�	$��K��U�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�
#�
#�F�L�)�
<�
<�	!�	!��K��R� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s#�A!�!A%�(A%�B/�/B3�6B3c��tjd��}d|j�d|j��}|�t
j|��5tjdd��ddd��n#1swxYwY|�t
j|��5tjdd��ddd��dS#1swxYwYdS)Nr�zshort format requires z <= number <= r
r�i��)rr��SHRT_MIN�SHRT_MAXrtr2rAr3r�s   r �test_issue45034_signedz!StructTest.test_issue45034_signed�s:��!�/��<�<�	�c�Y�-?�c�c�y�Oa�c�c�	�
�
#�
#�F�L�)�
<�
<�	$�	$��K��U�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�
#�
#�F�L�)�
<�
<�	%�	%��K��V�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s$�A)�)A-�0A-�B7�7B;�>B;N)$r�r�r�r6rIr\r�r�r�r�rrrr#r0r4r9rQrUr\r_rdr�cpython_onlyrrrxr~r�r�r�r�r�r�r�r�r�r%r"r r.r.$sE������F�F�F�?�?�?�*(�(�(�03)�3)�3)�j L� L� L�DX�X�X�t>�>�>�0�0�0� A�A�A�B?�?�?�%�%�%�6 � � �8'�'�'�.0�0�0�)7�)7�)7�VE�E�E�O�O�O�2���I�I�I�
��#�#���#�5�5�5�"5�5�5�,A�A�A�$?�?�?�.�.�.�,�,�,�$
F�
F�
F�
�������#�#�#�
��!�!���!�
��%�%���%�%�%r"r.c�<�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�UnpackIteratorTestzD
    Tests for iterative unpacking (struct.Struct.iter_unpack).
    c�D���fd�}tjd��}|�d��}||��|�d��}||����tj��5|�d��ddd��n#1swxYwY��tj��5|�d��ddd��n#1swxYwYtjd��}��tj��5|�d��ddd��n#1swxYwY��tj��5|�d��ddd��dS#1swxYwYdS)	Nc�����|tj����|tj��dSr))�assertIsInstancer�Iterator�Iterable)�itr5s �r �_check_iteratorz:UnpackIteratorTest.test_construct.<locals>._check_iterator�s9����!�!�"�c�l�3�3�3��!�!�"�c�l�3�3�3�3�3r"�>ibcpr"s1234567s123456s12345678rs12)r2rr�r@rA)r5r�r&r�s`   r �test_constructz!UnpackIteratorTest.test_construct�s����	4�	4�	4�	4�	4�
�M�'�"�"��
�]�]�3�
�
��������
�]�]�:�
&�
&��������
�
�
�v�|�
,�
,�	%�	%�
�M�M�)�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�
�
�
�v�|�
,�
,�	'�	'�
�M�M�+�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
�M�#����
�
�
�v�|�
,�
,�	�	�
�M�M�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�v�|�
,�
,�	!�	!�
�M�M�%� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!sH�:B�B �#B �C(�(C,�/C,�&E�E�E�2F�F�Fc��ttjd���d����}|�t
|��dS)Nr�r")r�r2rr�r@rC)r5�iter_unpack_types  r �test_uninstantiablez&UnpackIteratorTest.test_uninstantiable�sE����
�g� 6� 6� B� B�3� G� G�H�H�����)�%5�6�6�6�6�6r"c���tjd��}ttdd����}|�|��}|�t
|��d��|�t
|��d��|�t
|��d��|�tt|��|�tt|��dS)N�>IBr0��irB�i	r�)i
�)	r2rrr�r�r1�nextr@�
StopIteration�r5r&rr�s    r �test_iteratezUnpackIteratorTest.test_iterate�s����M�%� � ���%��2�,�,����
�]�]�1�
�
������b���?�3�3�3�����b���#3�4�4�4�����b���#3�4�4�4����-��r�2�2�2����-��r�2�2�2�2�2r"c��tjd��}ttdd����}|�t|����}|�t|��d��|�t|��d��|�tt|��|�tt|��dS�Nr�r0�r�r�)
r2rrr�r�r6r1r�r@r�r�s    r �test_arbitrary_bufferz(UnpackIteratorTest.test_arbitrary_buffers����M�%� � ���%��2�,�,����
�]�]�:�a�=�=�
)�
)������b���?�3�3�3�����b���#3�4�4�4����-��r�2�2�2����-��r�2�2�2�2�2r"c�|�tj}tjd��}t	tdd����}|�|��}|�||��d��t|��|�||��d��t|��|�||��d��t|��|�||��d��|�	tt|��|�||��d��dS)Nr�r0r�r9r?r)�operator�length_hintr2rrr�r�r1r�r@r�)r5�lhr&rr�s     r �test_length_hintz#UnpackIteratorTest.test_length_hints��
�
!���M�%� � ���%��2�,�,����
�]�]�1�
�
�������B����#�#�#��R���������B����#�#�#��R���������B����#�#�#��R���������B����#�#�#����-��r�2�2�2������B����#�#�#�#�#r"c	�v�tjdttdd������}|�t|��d��|�t|��d��|�tt
|��|�tt
|��dSr�)r2r�rr�r1r�r@r�)r5r�s  r �test_module_funcz#UnpackIteratorTest.test_module_funcs���
�
��u�U�1�b�\�\�':�':�
;�
;������b���?�3�3�3�����b���#3�4�4�4����-��r�2�2�2����-��r�2�2�2�2�2r"c���ddddddddtd	��fd
td��fdg
}|D�]�\}}|ddd
�}|�|tjd|��d��|�|tjd|����|�|tjd|��d��|�|tjd|����t
jdkrZ|�|tjd|��d��|�|tjd|������+|�|tjd|��d��|�|tjd|�������gd�}|D]�\}}|�tj	tjd|��d����|�tj	tjd|ddd
���d������tjdtj
��}|�|ddzd��tjdtj
��}|�|ddzd��gd�}	|	D]/\}}}|�|tj||�����0gd�}
|
D],\}}|�ttj||���-dg}|D]/\}}}|�|tj||�����0dS)N)s<r)s�r~)s�{g��@)s�?)sgp>)�g)s�g�s|z+infs�z-inf)sU5gT�?r$�<er�>e�little�e))r�s�)r�s�)r�s��)r�s|)r�s~)r�s�r0�~))r�sg`>)r�r�g`>)r�r�gP>)r���g�?)r�r�g������?)r��g�?)r�r�r�)r�s<g�?)r��<g�?)r�r�g�?)r��{�i�)r�r�i�)r�s�g`�)r���g`�)r�r�gP�)r�s�g�)r���g�)r�r�g�)r�s��i��))r����@)r���@)r��u�<�7~)r����)r���)r��u�<�7�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�sg�g�����@)
�floatr1r2rDr3r�rr�r�isnan�nanr@r�)r5�&format_bits_float__cleanRoundtrip_list�le_bitsrP�be_bits�format_bits__nan_list�
formatcode�bitsr� format_bits_float__rounding_list�%format_bits_float__roundingError_list�+format_bits_float__doubleRoundingError_lists            r �test_half_floatz"UnpackIteratorTest.test_half_float"s���
��"�!�!���
�%��-�-�(�
�%��-�-�(�)�2
�.�A�	?�	?�J�G�Q��d�d��d�m�G����Q��
�d�G� <� <�Q� ?�@�@�@����W�f�k�$��&:�&:�;�;�;����Q��
�d�G� <� <�Q� ?�@�@�@����W�f�k�$��&:�&:�;�;�;��}��(�(�� � ��F�M�#�w�$?�$?��$B�C�C�C�� � ��&�+�c�1�*=�*=�>�>�>�>�� � ��F�M�#�w�$?�$?��$B�C�C�C�� � ��&�+�c�1�*=�*=�>�>�>�>�!
�!
�!
��!6�	L�	L��J���O�O�D�J�v�}�T�4�'@�'@��'C�D�D�E�E�E��O�O�D�J�v�}�T�4���"��:�'F�'F�q�'I�J�J�K�K�K�K���T�4�8�,�,��������T�)�4�0�0�0���T�D�H�9�-�-��������T�)�4�0�0�0�,
�,
�,
�(�,$D�	?�	?��J��a����T�6�;�z�1�#=�#=�>�>�>�>�1
�1
�1
�-� C�	I�	I�M�J�����m�V�[�*�a�H�H�H�H�
7�7
�3�$O�	?�	?��J��a����T�6�;�z�1�#=�#=�>�>�>�>�	?�	?r"N)r�r�r��__doc__r�r�r�r�r�r�r�r%r"r r�r��s���������!�!�!�*7�7�7�3�3�3�3�3�3�
$�
$�
$�3�3�3�f?�f?�f?�f?�f?r"r��__main__)�collectionsrr)r�rr�r�r2r�r�rAr�test.supportr�test.support.script_helperrrr*rrr!r'r,r�r.r�r��mainr%r"r �<module>r�sr������������	�	�	�	�������������
�
�
�
�
�
�
�
�����������&�&�&�&�&�&�7�7�7�7�7�7��m�u�$��J�
�
(�
�$.�"�"�"�"����%�%�%�s
%�s
%�s
%�s
%�s
%��"�s
%�s
%�s
%�ln?�n?�n?�n?�n?��*�n?�n?�n?�b�z����H�M�O�O�O�O�O��r"