Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.218.149.167
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_struct.cpython-310.pyc
o

ab���@s�ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZejdkZ
dZdZefdd	�Zd
d�Zdd
�ZGdd�dej�ZGdd�dej�Zedkr]e��dSdS)�)�abcN)�support)�assert_python_ok�big)�b�B�h�H�i�I�l�L�q�Q�n�N)��@�=�<�>�!ccs6�tD]}|D]}|dvr|dvrq||fVqqdS)N�rr)rr)�
integer_codes)�
byteorders�code�	byteorder�r�9/usr/local/python-3.10/lib/python3.10/test/test_struct.py�iter_integer_formatss���rcCs|ddd�S)N���r)�srrr�string_reversesr"cCstr|St|�S�N)�ISBIGENDIANr")�valuerrr�bigendian_to_nativesr&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!d"�Zd#d$�Zd%d&�Zejd'd(��Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7S)8�
StructTestcCs |�t�dd�ddkt�dS)Nz=i�r)�assertEqual�struct�packr$��selfrrr�test_isbigendian"s zStructTest.test_isbigendiancCs|�tjtjd�t�d�}|�|dt�d��d}d}t�|�}t�|�}|�|d|�|�tjtjdd�|�tjtjdddd�|�ttjftjdd�|�ttjftjdd�|�tjtjd	d
�t�ddd
�}|�tjtjd|�|�tjtjd|�dS)N�Zr
�Ziiizcbxxxxxxhhhhiillffd?z3c3b18x12h6i6l6f3d3?Zfoo�P�dsflap�iir(�)�assertRaisesr*�error�calcsizer)r+�	TypeError�unpack)r-Zsz�fmtZfmt3Zsz3r!rrr�test_consistence%s 


zStructTest.test_consistencec
Cs�d}d}d}d}d}d}d}d}dD]f}	d	D]a}
|	|
}
t�|
||||||||�	}t�|
|�\}}
}}}}}}|�||�|�|
|�|�||�|�||�|�||�|�td
|�td
|��|�td
|�td
|��|�||�qqdS)N�ar(�i��igo���!	@T)rrrrrr)z	xcbhilfd?z	xcBHILfd?�d)r*r+r9r)�int)r-�crrr
r�fr2�t�prefix�formatr!ZcpZbpZhpZipZlp�fpZdp�tprrr�test_transitiveness:s.��zStructTest.test_transitivenesscCs@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]N\}}}}}d&||fd'||fd(||fd)|trl|pm|ffD],\}}t�||�}	|�|	|�|�t�|�t|	��t�||	�d*}
|
|kr�|�|�qpqOdS)+N)r@r<r<r<r)Zxcr<�arHr)Zcxr<�arIr)r!r<r<r<r)�0s�
helloworld�rLr()Z1srK�hrMr()Z9srK�	helloworlrNr()Z10srKrKrKr)Z11srK�helloworldrOr()Z20srK�helloworldrPr()r��rRr)ri������rSr)rrQrRrRr)r�rSrSr)r�����r)riD�����D�D�r)r	rUrVrWr)r	iD�rXrYr)r
�,�,���,r)r
�����������r)rrZr[r\r)r��b�wr^r_r)rrZr[r\r)rr]r^r_r)r
rZr[r\r)r
r`r^r_r)rA�@s@s@r)r2ras@s@r)rA��s�s�r)r2rbs�s�r)�?r�rdr)rcr0�rer()rcTrererrcrdr()rc)r(rerer(rrrrr)r$r*r+r)r7�lenr9�
assertTrue)r-Ztestsr:�argrZlilZasyZxfmt�exp�resZrevrrr�test_new_featuresRs���������	�
���
������������������!�"�#�$�%�(�
���zStructTest.test_new_featuresc
CsZddddddddddd�
}td�D]\}}||}t�|�}|�|||�qd}|D]}dD]}t�||d	�}t�||d�}	|�||	�q/q+|�t�d
�d�|�dt�d��|�dt�d��|�t�d�t�d
��|�t�d
�t�d��|�dt�d��|�t�d�t�d��|�t�d�t�d
��|�t�d�t�d��dS)Nr(r4��)
rrrr	r
rrr
rr�rrrr)ZbBZhHZiIZlL�nNZqQrrrrrr
rrr1)rr*r7r)ZassertLessEqual�assertGreaterEqual)
r-Z
expected_sizerrrD�sizeZnative_pairsZformat_pairZsigned_sizeZ
unsigned_sizerrr�
test_calcsize�s4�	
�zStructTest.test_calcsizecsNddl�G���fdd�dtj��t�D]\}}||����}|��qdS)Nrcs@eZdZ��fdd�Zejej�jfdd�Z�fdd�Z	�Z
S)z+StructTest.test_integers.<locals>.IntTestercs�t�|�jdd�||_|d|_|dd�|_|jtvr$td|j��t�|�|_	|j	d|_
|jtd�vrOd|_d|j
d	|_
d|j
d	d	|_dS|jtd
�vrfd|_d|_
d|j
d	|_dStd
|j��)N�test_one)Z
methodNamer z"unrecognized packing byteorder: %srmZbhilqnTr4r(ZBHILQNFrzunrecognized format code: %s)�super�__init__rDrrr�
ValueErrorr*r7�bytesize�bitsize�tuple�signed�	min_value�	max_value)r-rD)�	IntTester�	__class__rrru�s*

��z4StructTest.test_integers.<locals>.IntTester.__init__c	Ss.|j}|j|kr|jkr�nnx|}|jr!|dkr!|d|j>7}|�|d�d|}t|�d@r5d|}|�d�}||�}d|jt|�|}|j	dksU|j	dvrYt
sYt|�}|�t|�|j�|||�}|�||�|||�d}|�||�|�
tjtf||d	|�dS|�
tttjf|||�dS)
Nrr(z%x�0�asciirdr)rrrre)rDr{r|rzrxrprf�encoderwrr$r"r)r5r*r6r8�
OverflowErrorrv)	r-�xr+r9�	unhexlifyrD�expected�gotZ	retrievedrrrrs�s>
�
��
��z4StructTest.test_integers.<locals>.IntTester.test_onecsddlm}g}t|jd�D]	}|�d|>�qt|j�D]}d}t|j�D]
}|d>|d�B}q'|�|�q|�ddtjd	g�|D]}||fD]}d
D]}||}	|�	|	�qPqLqEGdd�d�}
Gd
d�dt
�}Gdd�dt
�}|�tt
jft
j|jd�|�tt
jft
j|j|�|�tt
jft
j|jd�|�tt
jft
j|j|
��|�tt
jft
j|j|��|d�|d�|d�|d�|d�|d�fD]}
zt
��|
�Wq�|�d�Yq�|d�|d�|d�|ddi�|gd��fD]}
|�tt
jft
j|j|
�q�dS)Nr)�	randranger0r(rm�i,i`�
rl)r rr(c@�eZdZdd�ZdS)zAStructTest.test_integers.<locals>.IntTester.run.<locals>.NotAnIntcS�dS�N�*rr,rrr�__int__�zIStructTest.test_integers.<locals>.IntTester.run.<locals>.NotAnInt.__int__N)�__name__�
__module__�__qualname__r�rrrr�NotAnInt�r�c@�eZdZdd�Zdd�ZdS)zBStructTest.test_integers.<locals>.IntTester.run.<locals>.IndexablecSs
||_dSr#��_value)r-r%rrrrus
zKStructTest.test_integers.<locals>.IntTester.run.<locals>.Indexable.__init__cSs|jSr#r�r,rrr�	__index__szLStructTest.test_integers.<locals>.IntTester.run.<locals>.Indexable.__index__N)r�r�r�rur�rrrr�	Indexable�r�c@r�)zAStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndexcS�t�r#)r8r,rrrr�r�zKStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndex.__index__cSr�r�rr,rrrr�r�zIStructTest.test_integers.<locals>.IntTester.run.<locals>.BadIndex.__int__N)r�r�r�r�r�rrrr�BadIndexr�r�za stringy@E@�
�r�r>�z:integer code pack failed on object with '__index__' methodr<r�a)r(r4r0)�randomr��rangerx�appendrw�extend�sys�maxsizers�objectr5r8r*r6r+rD�fail)r-r��valuesrir
�val�j�baseZincrr�r�r�r��obj)rDrr�run�sn��	���������z/StructTest.test_integers.<locals>.IntTester.run)r�r�r�rur*r+r9r�rsr��
__classcell__r�r}�binasciirD)r~rr}�s
�&r})r��unittest�TestCaserr�)r-rrrBrr�r�
test_integers�s
�zStructTest.test_integerscsT�fdd�}dD]}dD]}||}|tj|�|tj|d�|tj|d�qqdS)NcsP��tj��}||i|��Wd�n1swY��dt|j��dS)Nzbad char in struct format)r5r*r6�assertIn�str�	exception)�func�args�kwargs�cmr,rr�assertStructErrorEs�z2StructTest.test_nN_code.<locals>.assertStructErrorrornrrL)r*r7r+r9)r-r�rrrDrr,r�test_nN_codeCs��zStructTest.test_nN_codecCsHdD]\}}}}t�||�}|�||�t�||�\}|�||�qdS)N))�p�abcrdrL)Z1pr�rdrL)Z2pr�sar<)Z3pr�sabsab)Z4pr�sabcr�)Z5pr�sabcr�)Z6pr�sabcr�)Z1000ps�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs��xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r*r+r)r9)r-r�inputr�Zexpectedbackr�rrr�test_p_codePs	�zStructTest.test_p_codecCstdd�D]L}d}||d|kr|d}||d|ks||}t�d|�}t�d|�d}|�||�t�d|�}|�|t|��t�d|�d}|�||�qd}t�|d	�}t�d|�}t�d|�d}|�||�d
}t�|d�}|�t	tjd|�dS)Nr(�!g�?raz<frz>fi����hi����g)
r�r*r+r9r)r"�math�ldexpr5r�)r-r�ZdeltaZsmaller�packedZunpackedZ	bigpackedrrrr�test_705836`s*�zStructTest.test_705836cCslt�D]\}}||}|�tjtj|d�|�tjtj|d�q|�tjtjdd�|�tjtjdd�dS)N��?g�?r1)rr5r*r6r+)r-rrrDrrr�test_1530559�szStructTest.test_1530559c	Cs�d}d}t�|�}ttfD]Q}||�}|�|�|�d�|�|�|d�d�|�|�|d�d�td�D]}|�|�||�|||d�f�q4tdt|�d	�D]}|�tj	|j||�qQq
ttfD]V}||�}|�t�||�d�|�t�||d�d�|�t�||d�d�td�D]}|�t�|||�|||d�f�q�tdt|�d	�D]
}|�tj	tj|||�q�qc|�|j|dd
�d�dS)Ns	abcd01234Z4s)sabcdr4)scd01rl)s0123�r()�buffer�offset)
r*�Struct�bytes�	bytearrayr)�unpack_fromr�rfr5r6)r-�test_stringr:r!�cls�datar
rrr�test_unpack_from�s4
$�&��zStructTest.test_unpack_fromcCs�d}t�dd�}d}t�|�}|�|d|�|��dt|��}|�||�|�|d|�|��dt|�d�}|�||dd�|�t�dd�}|�ttj	f|j|d|�|�ttj	f|j|d|�|}|�t
tj	ftjd	|d�dS)
N�Reykjavik rocks, eow!r�d                                                                                                    �21srr��
          r4rL)�arrayr*r��	pack_into�tobytesrfr)r5rvr6r8)r-r��writable_bufr:r!�from_buf�	small_bufZsbrrr�test_pack_into�s*
���zStructTest.test_pack_intocs�d}t�dd�}d��fdd�}||d|�|��dt|��}|�||�||d|�|��dt|�d�}|�||dd�|�t�dd	�}|�ttjf||d|�|�ttjf||d
|�dS)Nr�rr�r�cstj�g|�R�Sr#)r*r�)r��r:rr�<lambda>�sz.StructTest.test_pack_into_fn.<locals>.<lambda>rr�r�r4)r�r�rfr)r5rvr*r6)r-r�r�r�r�r�rr�r�test_pack_into_fn�s"��zStructTest.test_pack_into_fncCs@t�dd�}td�}||fD]}t�d|�\}|�|d�qdS)Nrs4Vxz>IixV4)r��
memoryviewr*r9r))r-Zdata1Zdata2r�r%rrr�test_unpack_with_buffer�s�z"StructTest.test_unpack_with_bufferc	Cs�Gdd�dt�}td�dD]�}dggddf}dgd	d
ddd
f}|dt|�}tj|g|�R�}t�||�}|dt|�}tj|g|�R�}	t�||	�}
|�t|�t|
��|�t|�t|��|D]}|�|�qd|
D]}|�|�qnt�|dd�}|�t|�t�	|d��t|�dkr�|j|d|d�zt�|d|��Wn	t
y�Yqw|�d|d�qdD]
}
|�t�d|
�d�q�dS)Nc@r�)z+StructTest.test_bool.<locals>.ExplodingBoolcSr�r#)�OSErrorr,rrr�__bool__�r�z4StructTest.test_bool.<locals>.ExplodingBool.__bool__N)r�r�r�r�rrrr�
ExplodingBool�r�r�z<>!=)rrrrr(�test�r lg���Arcz encoded bool is not one byte: %r)�msgz2Expected OSError: struct.pack(%r, ExplodingBool()))re������z>?)r�ryrfr*r+r9r)ZassertFalsergr7r�r�)r-r�rCZfalse�trueZfalseFormatZpackedFalseZ
unpackedFalseZ
trueFormatZ
packedTrueZunpackedTruerBr�r@rrr�	test_bool�sB����zStructTest.test_boolcCsPd�tjd�}|�tjtj|�d�tjdtjd�}|�tjtj|�dS)Nz{}br(z{}b{}Hr4)rDr�r�r5r*r6r7)r-Z	hugecountZ
hugecount2rrr�test_count_overflow
szStructTest.test_count_overflowcCst�dd�}|�tjtjd�|�tjtjdd�|�tjtjd|d�|�tjtjd|d�|�tjtjdd�|�tjtjdd�|�tjtjd|dd�|�tjtjd|d�|�tjtjd	d
�|�tjtjd	d�|�tjtjd	|dd
�|�tjtjd	|d�dS)Nrr�Z12345rLrZc12345r��xZ14s42z
spam and eggss
spam and eggs)r�r5r*r6r+r9r�r�)r-�storerrr�test_trailing_counters*����z StructTest.test_trailing_countercCst�d�}|�d�dS)Nr
r3)r*r�ru�r-r!rrr�test_Struct_reinitialization*s
z'StructTest.test_Struct_reinitializationcCs8t�d�}|t�d�|d7}t�|t�|�|�dS)NZ2n3PZP3n0Pr()rZcalcobjsizer*r7�check_sizeofr�)r-Z
format_strZnumber_of_codesZ	totalsizerrrr�1s
zStructTest.check_sizeofcCs�tD]}|�|d�q|�dd�|�dd�|�dd�|�dd	�|�d
d�|�dd�|�dd�|�d
d�|�dd	�dS)Nr(Z	BHILfdspP�	A�BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBi��fdr4ZxxxxxxxxxxxxxxrZ100HZ187sZ20prJZ0c)rr�)r-rrrr�test__sizeof__8szStructTest.test__sizeof__cCs�d}|�tj|��t�dtd�dd�Wd�n1swYd}|�tj|��t�dtd�d�Wd�dS1sAwYdS)Nzkpack_into requires a buffer of at least 6 bytes for packing 1 bytes at offset 5 \(actual buffer size is 1\)rr(r�zounpack_from requires a buffer of at least 6 bytes for unpacking 1 bytes at offset 5 \(actual buffer size is 1\))�assertRaisesRegexr*r6r�r�r��r-Zregex1Zregex2rrr�test_boundary_error_messageFs���"�z&StructTest.test_boundary_error_messagecCstd�}|�tjd��t�d|dd�Wd�n1swY|�tjd��t�d|dd�Wd�n1s=wY|�tjd	��t�d|d�Wd�n1s[wY|�tjd��t�d|d�Wd�dS1szwYdS)
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)r�r�r*r6r�r�)r-Z	byte_listrrr�0test_boundary_error_message_with_negative_offsetWs2�������"�z;StructTest.test_boundary_error_message_with_negative_offsetcCs�dttjd�dttj�d}|�tj|��t�dtd�tjd�Wd�n1s/wYdttjd�d	ttj�d}|�tj|��t�dtd�tj�Wd�dS1scwYdS)
Nz(pack_into requires a buffer of at least rlz% bytes for packing 4 bytes at offset z \(actual buffer size is 10\)r�r�r(z*unpack_from requires a buffer of at least z' bytes for unpacking 4 bytes at offset )	r�r�r�r�r*r6r�r�r�r�rrr�-test_boundary_error_message_with_large_offsetms,���������"�z8StructTest.test_boundary_error_message_with_large_offsetcCsN|�t��t�dd�Wd�n1swY|�t�dd�d�dS)Nrrr<)�a)r5r8r*r9r)r,rrr�test_issue29802s�zStructTest.test_issue29802cCs<t�d�}|�|jd�t�|j���}|�|j|j�dS)Nz=i2H)r*r�r)rDr�)r-r!�s2rrr�test_format_attr�s
zStructTest.test_format_attrcCsLd}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-crrLsException ignored in:s	C.__del__)rr)�rstripr�)r-r�rc�stdout�stderrrrr�)test_struct_cleans_up_at_runtime_shutdown�sz4StructTest.test_struct_cleans_up_at_runtime_shutdownc	CsFdD]}|�tjd��
t�|�Wd�n1swYqdS)N)�z2irdzembedded null character)r�r*r6r7r�rrr�test_issue35714�s����zStructTest.test_issue35714N) r�r�r�r.r;rGrkrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rZcpython_onlyr�r�rrrrrr
rrrrr'!s<5"
!+

	r'c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�UnpackIteratorTestzD
    Tests for iterative unpacking (struct.Struct.iter_unpack).
    cs"�fdd�}t�d�}|�d�}||�|�d�}||���tj��
|�d�Wd�n1s3wY��tj��
|�d�Wd�n1sNwYt�d�}��tj��
|�d�Wd�n1snwY��tj��|�d	�Wd�dS1s�wYdS)
Ncs ��|tj���|tj�dSr#)ZassertIsInstancer�Iterator�Iterable)�itr,rr�_check_iterator�sz:UnpackIteratorTest.test_construct.<locals>._check_iterator�>ibcprLs1234567s123456s12345678rs12)r*r��iter_unpackr5r6)r-rr!rrr,r�test_construct�s&


��
�"�z!UnpackIteratorTest.test_constructcCs$tt�d��d��}|�t|�dS)NrrL)�typer*r�rr5r8)r-Ziter_unpack_typerrr�test_uninstantiable�sz&UnpackIteratorTest.test_uninstantiablecCsrt�d�}ttdd��}|�|�}|�t|�d�|�t|�d�|�t|�d�|�tt|�|�tt|�dS)N�>IBr(��ir��i	r�)i
�)	r*r�r�r�rr)�nextr5�
StopIteration�r-r!rrrrr�test_iterate�s

zUnpackIteratorTest.test_iteratecCsft�d�}ttdd��}|�t|��}|�t|�d�|�t|�d�|�t	t|�|�t	t|�dS�Nrr(�rr)
r*r�r�r�rr�r)rr5rrrrr�test_arbitrary_buffer�s
z(UnpackIteratorTest.test_arbitrary_buffercCs�tj}t�d�}ttdd��}|�|�}|�||�d�t|�|�||�d�t|�|�||�d�t|�|�||�d�|�	t
t|�|�||�d�dS)Nrr(rr0r4r)�operator�length_hintr*r�r�r�rr)rr5r)r-Zlhr!rrrrr�test_length_hint�s

z#UnpackIteratorTest.test_length_hintcCsVt�dttdd���}|�t|�d�|�t|�d�|�tt|�|�tt|�dSr!)r*rr�r�r)rr5r)r-rrrr�test_module_func�s
z#UnpackIteratorTest.test_module_funccCs ddddddddtd	�fd
td�fdg
}|D]i\}}|ddd
�}|�|t�d|�d�|�|t�d|��|�|t�d|�d�|�|t�d|��tjdkri|�|t�d|�d�|�|t�d|��q|�|t�d|�d�|�|t�d|��qgd�}|D]%\}}|�t�	t�d|�d��|�t�	t�d|ddd
��d��q�t�dtj
�}|�|dd@d�t�dtj
�}|�|dd@d�gd�}	|	D]\}}}|�|t�||��q�gd�}
|
D]
\}}|�ttj||�q�dg}|D]\}}}|�|t�||��q�dS)N)s<r�)s�rb)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�r(�~))r+sg`>)r+r)g`>)r+r)gP>)r+��g�?)r+r/g������?)r+�g�?)r+r0r()r+s<g�?)r+�<g�?)r+r1g�?)r+�{�i�)r+r2i�)r+s�g`�)r+��g`�)r+r3gP�)r+s�g�)r+��g�)r+r4g�)r+s��i��))r+���@)r+��@)r+�u�<�7~)r+���)r+��)r+�u�<�7�)r*r5)r*r6)r*r7)r*r8)r*r9)r*r:)r+sg�g�����@)
�floatr)r*r9r+r�rrgr��isnan�nanr5r�)r-Z&format_bits_float__cleanRoundtrip_listZle_bitsrAZbe_bitsZformat_bits__nan_listZ
formatcode�bitsr�Z format_bits_float__rounding_listZ%format_bits_float__roundingError_listZ+format_bits_float__doubleRoundingError_listrrr�test_half_float�sR

�

	(��z"UnpackIteratorTest.test_half_floatN)r�r�r��__doc__rrr r#r&r'r?rrrrr�s
	r�__main__)�collectionsrr�r�r$r�r*r�r�rZtest.support.script_helperrrr$rrrr"r&r�r'rr��mainrrrr�<module>s4
2�
© 2025 GrazzMean