Ë
    D<TföC  ã                   ó  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	Zd dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
l	mZmZmZmZ dZdZdZdZ G d„ dej@                  «      Z! G d„ dej@                  «      Z"y)é    N)Úmkdtemp)Úmock)ÚImage)ÚDataOverflowError)Ú	BaseImage)Ú
PyPNGImage)ÚStyledPilImage)Ú
colormasksÚmoduledrawers)ÚMODE_8BIT_BYTEÚMODE_ALPHA_NUMÚMODE_NUMBERÚQRDatau   Î±Î²Î³)éÿ   r   r   )r   r   r   )r   r   r   c                   óJ  — e 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 ej$                  e d«      d„ «       Z ej$                  e d«      d„ «       Z ej$                  e d«      d„ «       Z ej$                  e d«      d„ «       Z ej$                  e d«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej$                  e d«      d„ «       Z ej$                  e d«      d„ «       Z  ej$                  e d«      d„ «       Z! ej$                  e d«      d„ «       Z" ej$                  e d«      d„ «       Z# ej$                  e d«      d „ «       Z$ ej$                  e d«      d!„ «       Z% ej$                  e d«      d"„ «       Z& ej$                  e d«      d#„ «       Z' ej$                  e d«      d$„ «       Z( ej$                  e d«      d%„ «       Z) ej$                  e d«      d&„ «       Z* ej$                  e d«      d'„ «       Z+ ej$                  e d«      d(„ «       Z, ej$                  e d«      d)„ «       Z- ej$                  e d«      d*„ «       Z. ej$                  e d«      d+„ «       Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3d0„ Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<y9):ÚQRCodeTestsc                 ó"   — t        «       | _        y ©N)r   Útmpdir©Úselfs    úWC:\Users\user\Documents\project_loop\venv\Lib\site-packages\qrcode/tests/test_qrcode.pyÚsetUpzQRCodeTests.setUp   s   € Ü“iˆ�ó    c                 óB   — t        j                  | j                  «       y r   )ÚosÚrmdirr   r   s    r   ÚtearDownzQRCodeTests.tearDown   s   € Ü
�‰�—‘Õr   c                 óv   — t        j                  d¬«      }|j                  d«       |j                  d¬«       y ©Né   ©ÚversionÚaF©Úfit©ÚqrcodeÚQRCodeÚadd_dataÚmake©r   Úqrs     r   Ú
test_basiczQRCodeTests.test_basic!   s*   € Ü�]‰] 1Ô%ˆØ
�‰�CÔØ
�‰�EˆÕr   c                 óv   — t        j                  d¬«      }|j                  d«       |j                  d¬«       y )Né   r"   r$   Fr%   r'   r,   s     r   Ú
test_largezQRCodeTests.test_large&   s*   € Ü�]‰] 2Ô&ˆØ
�‰�CÔØ
�‰�EˆÕr   c                 óP   — | j                  t        t        j                  d¬«       y )Né)   r"   ©ÚassertRaisesÚ
ValueErrorr(   r)   r   s    r   Útest_invalid_versionz QRCodeTests.test_invalid_version+   s   € Ø×Ñœ*¤f§m¡m¸RÐÕ@r   c                 óP   — | j                  t        t        j                  d¬«       y )Néÿÿÿÿ©Úborderr4   r   s    r   Útest_invalid_borderzQRCodeTests.test_invalid_border.   s   € Ø×Ñœ*¤f§m¡m¸BÐÕ?r   c                 ó–   — t        j                  d¬«      }|j                  d«       | j                  t        |j
                  d¬«       y )Nr!   r"   ÚabcdefghijklmnoFr%   )r(   r)   r*   r5   r   r+   r,   s     r   Útest_overflowzQRCodeTests.test_overflow1   s7   € Ü�]‰] 1Ô%ˆØ
�‰Ð%Ô&Ø×ÑÔ+¨R¯W©W¸%ÐÕ@r   c                 óŒ   — t        j                  d¬«      }t        d«      }|j                  |«       |j	                  d¬«       y r    )r(   r)   r   r*   r+   )r   r-   Údatas      r   Útest_add_qrdatazQRCodeTests.test_add_qrdata6   s3   € Ü�]‰] 1Ô%ˆÜ�c‹{ˆØ
�‰�DÔØ
�‰�EˆÕr   c                 ó   — t        j                  «       }|j                  d«       |j                  «        | j	                  |j
                  d«       |j                  d«       |j                  «        | j	                  |j
                  d«       y )Nr$   r!   Úbcdefghijklmnoé   ©r(   r)   r*   r+   ÚassertEqualr#   r,   s     r   Útest_fitzQRCodeTests.test_fit<   s`   € Ü�]‰]‹_ˆØ
�‰�CÔØ
�‰Œ	Ø×Ñ˜Ÿ™ QÔ'Ø
�‰Ð$Ô%Ø
�‰Œ	Ø×Ñ˜Ÿ™ QÕ'r   c                 ó  — t        j                  «       }|j                  dd¬«       |j                  «        | j	                  |j
                  d«       | j	                  |j                  d   j                  t        «       y )NÚ"1234567890123456789012345678901234r   ©Úoptimizer!   )	r(   r)   r*   r+   rG   r#   Ú	data_listÚmoder   r,   s     r   Útest_mode_numberzQRCodeTests.test_mode_numberE   sY   € Ü�]‰]‹_ˆØ
�‰Ð8À1ˆÔEØ
�‰Œ	Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ a™×-Ñ-¬{Õ;r   c                 ó  — t        j                  «       }|j                  dd¬«       |j                  «        | j	                  |j
                  d«       | j	                  |j                  d   j                  t        «       y )NÚABCDEFGHIJ1234567890r   rK   r!   )	r(   r)   r*   r+   rG   r#   rM   rN   r   r,   s     r   Útest_mode_alphazQRCodeTests.test_mode_alphaL   sY   € Ü�]‰]‹_ˆØ
�‰Ð*°QˆÔ7Ø
�‰Œ	Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ a™×-Ñ-¬~Õ>r   c                 óÌ   — t        j                  «       }|j                  dd¬«       |j                  «        | j	                  |j
                  d   j                  t        «       y )Nú,r   rK   ©r(   r)   r*   r+   rG   rM   rN   r   r,   s     r   Útest_regression_mode_commaz&QRCodeTests.test_regression_mode_commaS   sD   € Ü�]‰]‹_ˆØ
�‰�C !ˆÔ$Ø
�‰Œ	Ø×Ñ˜Ÿ™ a™×-Ñ-¬~Õ>r   c                 ó  — t        j                  «       }|j                  dt        z   d¬«       |j	                  «        | j                  |j                  d«       | j                  |j                  d   j                  t        «       y )NÚabcABCr   rK   r!   )
r(   r)   r*   ÚUNICODE_TEXTr+   rG   r#   rM   rN   r   r,   s     r   Útest_mode_8bitzQRCodeTests.test_mode_8bitY   s]   € Ü�]‰]‹_ˆØ
�‰�Hœ|Ñ+°aˆÔ8Ø
�‰Œ	Ø×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ a™×-Ñ-¬~Õ>r   c                 óÌ   — t        j                  «       }|j                  dd¬«       |j                  «        | j	                  |j
                  d   j                  t        «       y )NzABCDEFGHIJ1234567890
r   rK   rU   r,   s     r   Útest_mode_8bit_newlinez"QRCodeTests.test_mode_8bit_newline`   sE   € Ü�]‰]‹_ˆØ
�‰Ð,°qˆÔ9Ø
�‰Œ	Ø×Ñ˜Ÿ™ a™×-Ñ-¬~Õ>r   úRequires PILc                 ó  — t        j                  «       }|j                  t        «       |j	                  «       }|j                  t        j                  «       «       | j                  |j                  «       t        j                  «       y r   )r(   r)   r*   rY   Ú
make_imageÚsaveÚioÚBytesIOÚassertIsInstanceÚ	get_imageÚ	pil_Imager   ©r   r-   Úimgs      r   Útest_render_pilzQRCodeTests.test_render_pilf   sP   € ä�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m‹oˆØ�‰”—‘“ÔØ×Ñ˜cŸm™m›o¬y¯©Õ?r   c                 óÀ   — t        j                  «       }|j                  t        «       |j	                  d¬«      }|j                  t        j                  «       «       y )NÚTransParent©Ú
back_color©r(   r)   r*   rY   r_   r`   ra   rb   rf   s      r   Ú+test_render_pil_with_transparent_backgroundz7QRCodeTests.test_render_pil_with_transparent_backgroundn   s;   € ä�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m }ˆmÓ5ˆØ�‰”—‘“Õr   c                 óÀ   — t        j                  «       }|j                  t        «       |j	                  d¬«      }|j                  t        j                  «       «       y )NÚredrk   rm   rf   s      r   Ú#test_render_pil_with_red_backgroundz/QRCodeTests.test_render_pil_with_red_backgroundu   s;   € ä�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m uˆmÓ-ˆØ�‰”—‘“Õr   c                 óÂ   — t        j                  «       }|j                  t        «       |j	                  dd¬«      }|j                  t        j                  «       «       y )N)r   éÃ   éë   )é7   é_   é#   )rl   Ú
fill_colorrm   rf   s      r   Ú%test_render_pil_with_rgb_color_tuplesz1QRCodeTests.test_render_pil_with_rgb_color_tuples|   s=   € ä�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m À<ˆmÓPˆØ�‰”—‘“Õr   c                 óÀ   — t        j                  d¬«      }|j                  t        «       |j	                  «       }|j                  t        j                  «       «       y )Né   ©Úmask_patternrm   rf   s      r   Útest_render_with_patternz$QRCodeTests.test_render_with_patternƒ   s9   € ä�]‰]¨Ô*ˆØ
�‰”LÔ!Ø�m‰m‹oˆØ�‰”—‘“Õr   c                 ó„  — | j                  t        «      5  t        j                  d¬«       d d d «       | j                  t        «      5  t        j                  d¬«       d d d «       | j                  t        «      5  t        j                  d¬«       d d d «       y # 1 sw Y   ŒrxY w# 1 sw Y   ŒJxY w# 1 sw Y   y xY w)Nústring patternr|   r9   é*   )r5   Ú	TypeErrorr(   r)   r6   r   s    r   Ú"test_make_image_with_wrong_patternz.QRCodeTests.test_make_image_with_wrong_patternŠ   s™   € Ø×ÑœyÓ)ñ 	9Ü�M‰MÐ'7Õ8÷	9ð ×ÑœzÓ*ñ 	+Ü�M‰M rÕ*÷	+ð ×ÑœzÓ*ñ 	+Ü�M‰M rÕ*÷	+ð 	+÷	9ð 	9ú÷	+ð 	+ú÷	+ð 	+ús#   –BÁ
B*Á>B6ÂB'Â*B3Â6B?c                 óR  — t        j                  «       }| j                  t        «      5  d|_        d d d «       | j                  t
        «      5  d|_        d d d «       | j                  t
        «      5  d|_        d d d «       y # 1 sw Y   ŒTxY w# 1 sw Y   Œ;xY w# 1 sw Y   y xY w)Nr€   r9   é   )r(   r)   r5   r‚   r}   r6   r,   s     r   Útest_mask_pattern_setterz$QRCodeTests.test_mask_pattern_setter”   s”   € Ü�]‰]‹_ˆà×ÑœyÓ)ñ 	/Ø.ˆBŒO÷	/ð ×ÑœzÓ*ñ 	!Ø ˆBŒO÷	!ð ×ÑœzÓ*ñ 	 ØˆBŒO÷	 ð 	 ÷	/ð 	/ú÷	!ð 	!ú÷	 ð 	 ús#   ªBÁBÁ4BÂBÂBÂB&c                 ó  — | j                  t        «      5  t        j                  d¬«       d d d «       | j                  t        «      5  t        j                  t
        ¬«       d d d «       y # 1 sw Y   ŒBxY w# 1 sw Y   y xY w)NÚnot_BaseImage©Úimage_factory)r5   r‚   r(   r)   ÚAssertionErrorÚdictr   s    r   Útest_qrcode_bad_factoryz#QRCodeTests.test_qrcode_bad_factory    sg   € Ø×ÑœyÓ)ñ 	9Ü�M‰M¨Õ8÷	9ð ×Ñœ~Ó.ñ 	.Ü�M‰M¬Õ-÷	.ð 	.÷	9ð 	9ú÷	.ð 	.ús   –A.Á
A:Á.A7Á:Bc                 ó,  —  G d„ dt         «      }t        j                  |¬«      }|j                  t        «       |j                  «        | j                  |j                  j                  «       | j                  |j                  j                  «       y )Nc                   óP   — e Zd Z ej                  «       Z ej                  «       Zy)ú4QRCodeTests.test_qrcode_factory.<locals>.MockFactoryN)Ú__name__Ú
__module__Ú__qualname__r   ÚMockÚdrawrectÚ	new_image© r   r   ÚMockFactoryr�   ¨   s   „ Ø �t—y‘y“{ˆHØ!˜Ÿ	™	›‰Ir   r˜   r‰   )
r   r(   r)   r*   rY   r_   Ú
assertTruer–   Úcalledr•   )r   r˜   r-   s      r   Útest_qrcode_factoryzQRCodeTests.test_qrcode_factory§   sc   € ô	$œ)ô 	$ô �]‰]¨Ô5ˆØ
�‰”LÔ!Ø
�‰ŒØ�‰˜×-Ñ-×4Ñ4Ô5Ø�‰˜×,Ñ,×3Ñ3Õ4r   c                 óz  — t        j                  «       }|j                  t        «       |j	                  t
        ¬«      }| j                  |j                  «       t        j                  «       t        |j                  |j                  |j                  «       |j                  t        j                   «       «       y )Nr‰   )r(   r)   r*   rY   r_   r   rc   rd   ÚpngÚWriterÚprintÚwidthÚbox_sizer;   r`   ra   rb   rf   s      r   Útest_render_pypngzQRCodeTests.test_render_pypng²   sm   € Ü�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m¬*ˆmÓ5ˆØ×Ñ˜cŸm™m›o¬s¯z©zÔ:äˆc�i‰i˜Ÿ™ s§z¡zÔ2Ø�‰”—‘“Õr   c                 óè  — t        j                  «       }|j                  t        «       |j	                  t
        ¬«      }| j                  |j                  «       t        j                  «       t        j                  «       }t        j                  d|d¬«      5  |j                  d«       d d d «       |j                  dd«        |dd«      j                  j!                  «        y # 1 sw Y   Œ=xY w)Nr‰   zqrcode.image.pure.openT)Úcreateztest_file.pngÚwb)r(   r)   r*   rY   r_   r   rc   rd   r�   rž   r   Ú	mock_openÚpatchr`   Úassert_called_once_withÚwriteÚassert_called)r   r-   rg   r¦   s       r   Útest_render_pypng_to_strz$QRCodeTests.test_render_pypng_to_str»   sª   € Ü�]‰]‹_ˆØ
�‰”LÔ!Ø�m‰m¬*ˆmÓ5ˆØ×Ñ˜cŸm™m›o¬s¯z©zÔ:ä—N‘NÓ$ˆ	Ü�Z‰ZÐ0°)ÀDÔIñ 	&Ø�H‰H�_Ô%÷	&à×)Ñ)¨/¸4Ô@Ù�/ 4Ó(×.Ñ.×<Ñ<Õ>÷	&ð 	&ús   ÂC(Ã(C1c                 óè   — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        ¬«      }|j                  t        j                  «       «       y )N©Úerror_correctionr‰   )
r(   r)   ÚERROR_CORRECT_Lr*   rY   r_   r	   r`   ra   rb   rf   s      r   Útest_render_styled_Imagez$QRCodeTests.test_render_styled_ImageÇ   sD   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰m¬.ˆmÓ9ˆØ�‰”—‘“Õr   c                 ó  — t        j                  ddd¬«      }t        j                  t        j                  ¬«      }|j                  t        «       |j                  t        |¬«      }|j                  t        j                  «       «       y )NÚRGB©é
   r´   rp   ©Úcolorr­   )rŠ   Úembeded_image)re   Únewr(   r)   r¯   r*   rY   r_   r	   r`   ra   rb   )r   Úembeded_imgr-   rg   s       r   Ú%test_render_styled_with_embeded_imagez1QRCodeTests.test_render_styled_with_embeded_imageÎ   sX   € ä—m‘m E¨8¸5ÔAˆÜ�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰m¬.ÈˆmÓTˆØ�‰”—‘“Õr   c                 óº  — t         j                  j                  | j                  d«      }t	        j
                  ddd¬«      }|j                  |«       t        j                  t        j                  ¬«      }|j                  t        «       |j                  t        |¬«      }|j                  t        j                  «       «       t        j                   |«       y )Nztest.pngr²   r³   rp   rµ   r­   )rŠ   Úembeded_image_path)r   ÚpathÚjoinr   re   r¸   r`   r(   r)   r¯   r*   rY   r_   r	   ra   rb   Úremove)r   Útmpfiler¹   r-   rg   s        r   Ú*test_render_styled_with_embeded_image_pathz6QRCodeTests.test_render_styled_with_embeded_image_pathÖ   sŠ   € ä—'‘'—,‘,˜tŸ{™{¨JÓ7ˆÜ—m‘m E¨8¸5ÔAˆØ×Ñ˜Ô!Ü�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰m¬.ÈWˆmÓUˆØ�‰”—‘“ÔÜ
�	‰	�'Õr   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y ©Nr­   )rŠ   Úmodule_drawer)r(   r)   r¯   r*   rY   r_   r	   r   ÚSquareModuleDrawerr`   ra   rb   rf   s      r   Ú,test_render_styled_with_square_module_drawerz8QRCodeTests.test_render_styled_with_square_module_drawerá   óX   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰mÜ(Ü'×:Ñ:Ó<ð ó 
ˆð 	�‰”—‘“Õr   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y rÃ   )r(   r)   r¯   r*   rY   r_   r	   r   ÚGappedSquareModuleDrawerr`   ra   rb   rf   s      r   Ú,test_render_styled_with_gapped_module_drawerz8QRCodeTests.test_render_styled_with_gapped_module_drawerë   sX   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰mÜ(Ü'×@Ñ@ÓBð ó 
ˆð 	�‰”—‘“Õr   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y rÃ   )r(   r)   r¯   r*   rY   r_   r	   r   ÚCircleModuleDrawerr`   ra   rb   rf   s      r   Ú,test_render_styled_with_circle_module_drawerz8QRCodeTests.test_render_styled_with_circle_module_drawerõ   rÇ   r   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y rÃ   )r(   r)   r¯   r*   rY   r_   r	   r   ÚRoundedModuleDrawerr`   ra   rb   rf   s      r   Ú-test_render_styled_with_rounded_module_drawerz9QRCodeTests.test_render_styled_with_rounded_module_drawerÿ   sX   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰mÜ(Ü'×;Ñ;Ó=ð ó 
ˆð 	�‰”—‘“Õr   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y rÃ   )r(   r)   r¯   r*   rY   r_   r	   r   ÚVerticalBarsDrawerr`   ra   rb   rf   s      r   Ú3test_render_styled_with_vertical_bars_module_drawerz?QRCodeTests.test_render_styled_with_vertical_bars_module_drawer	  rÇ   r   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       |j                  t        t        j                  «       ¬«      }|j                  t        j                  «       «       y rÃ   )r(   r)   r¯   r*   rY   r_   r	   r   ÚHorizontalBarsDrawerr`   ra   rb   rf   s      r   Ú5test_render_styled_with_horizontal_bars_module_drawerzAQRCodeTests.test_render_styled_with_horizontal_bars_module_drawer  sX   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ø�m‰mÜ(Ü'×<Ñ<Ó>ð ó 
ˆð 	�‰”—‘“Õr   c                 ó  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  «       }|j                  t        |¬«      }|j                  t        j                  «       «       y )Nr­   ©rŠ   Ú
color_mask)r(   r)   r¯   r*   rY   r
   ÚSolidFillColorMaskr_   r	   r`   ra   rb   ©r   r-   Úmaskrg   s       r   Ú0test_render_styled_with_default_solid_color_maskz<QRCodeTests.test_render_styled_with_default_solid_color_mask  sT   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×,Ñ,Ó.ˆØ�m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 ó(  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  t        t        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y )Nr­   ©rl   Úfront_colorrØ   )r(   r)   r¯   r*   rY   r
   rÚ   ÚWHITEÚREDr_   r	   r`   ra   rb   rÛ   s       r   Ú(test_render_styled_with_solid_color_maskz4QRCodeTests.test_render_styled_with_solid_color_mask%  sX   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×,Ñ,¼Ì3ÔOˆØ�m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 óB  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  dt        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       |j                  dk(  sJ ‚y )Nr­   )r   r   r   r   rß   rØ   ÚRGBA)r(   r)   r¯   r*   rY   r
   rÚ   râ   r_   r	   r`   ra   rb   rN   rÛ   s       r   Ú4test_render_styled_with_color_mask_with_transparencyz@QRCodeTests.test_render_styled_with_color_mask_with_transparency-  so   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×,Ñ,Ø)´sô
ˆð �m‰m¬.ÀTˆmÓJˆØ�‰”—‘“ÔØ�x‰x˜6Ò!Ñ!Ð!r   c                 ó2  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  t        t        t        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y ©Nr­   )rl   Úcenter_colorÚ
edge_colorrØ   )r(   r)   r¯   r*   rY   r
   ÚRadialGradiantColorMaskrá   ÚBLACKrâ   r_   r	   r`   ra   rb   rÛ   s       r   Ú2test_render_styled_with_radial_gradient_color_maskz>QRCodeTests.test_render_styled_with_radial_gradient_color_mask8  ó_   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×1Ñ1Ü¬5¼Sô
ˆð �m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 ó2  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  t        t        t        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y rè   )r(   r)   r¯   r*   rY   r
   ÚSquareGradiantColorMaskrá   rì   râ   r_   r	   r`   ra   rb   rÛ   s       r   Ú2test_render_styled_with_square_gradient_color_maskz>QRCodeTests.test_render_styled_with_square_gradient_color_maskB  rî   r   c                 ó2  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  t        t        t        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y )Nr­   )rl   Ú
left_colorÚright_colorrØ   )r(   r)   r¯   r*   rY   r
   ÚHorizontalGradiantColorMaskrá   râ   rì   r_   r	   r`   ra   rb   rÛ   s       r   Ú6test_render_styled_with_horizontal_gradient_color_maskzBQRCodeTests.test_render_styled_with_horizontal_gradient_color_maskL  s_   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×5Ñ5Ü¬¼%ô
ˆð �m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 ó2  — t        j                  t         j                  ¬«      }|j                  t        «       t        j                  t        t        t        ¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y )Nr­   )rl   Ú	top_colorÚbottom_colorrØ   )r(   r)   r¯   r*   rY   r
   ÚVerticalGradiantColorMaskrá   râ   rì   r_   r	   r`   ra   rb   rÛ   s       r   Ú4test_render_styled_with_vertical_gradient_color_maskz@QRCodeTests.test_render_styled_with_vertical_gradient_color_maskV  s_   € ä�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×3Ñ3Ü¬¼%ô
ˆð �m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 óP  — t        j                  ddd¬«      }t        j                  t        j                  ¬«      }|j                  t        «       t        j                  t        |¬«      }|j                  t        |¬«      }|j                  t        j                  «       «       y )Nr²   r³   rp   rµ   r­   )rl   Úcolor_mask_imagerØ   )re   r¸   r(   r)   r¯   r*   rY   r
   ÚImageColorMaskrá   r_   r	   r`   ra   rb   )r   Úimg_maskr-   rÜ   rg   s        r   Ú(test_render_styled_with_image_color_maskz4QRCodeTests.test_render_styled_with_image_color_mask`  sj   € ä—=‘= ¨¸Ô>ˆÜ�]‰]¬F×,BÑ,BÔCˆØ
�‰”LÔ!Ü×(Ñ(´EÈHÔUˆØ�m‰m¬.ÀTˆmÓJˆØ�‰”—‘“Õr   c                 óR  — t        j                  «       }d}|j                  |d¬«       |j                  «        | j	                  |j
                  D �cg c]  }|j                  ‘Œ c}t        t        t        t        t        g«       | j	                  |j                  d«       y c c}w )NÚA1abc12345def1HELLOaé   rK   rE   )r(   r)   r*   r+   rG   rM   rN   r   r   r   r#   ©r   r-   ÚtextÚds       r   Útest_optimizezQRCodeTests.test_optimizei  s~   € Ü�]‰]‹_ˆØ%ˆØ
�‰�D 1ˆÔ%Ø
�‰Œ	Ø×ÑØŸ\™\Ö*˜ˆQ�V‹VÒ*äÜÜÜÜðô		
ð 	×Ñ˜Ÿ™ QÕ'ùò +s   ÁB$c                 óˆ  — t        j                  «       }d}|j                  |d¬«       |j                  «        | j	                  t        |j                  «      d«       | j	                  |j                  D �cg c]  }|j                  ‘Œ c}t        t        t        g«       | j	                  |j                  d«       y c c}w )NÚA1abc1234567def1HELLOaé   rK   r{   rE   )r(   r)   r*   r+   rG   ÚlenrM   rN   r   r   r#   r  s       r   Útest_optimize_shortzQRCodeTests.test_optimize_shortz  s�   € Ü�]‰]‹_ˆØ'ˆØ
�‰�D 1ˆÔ%Ø
�‰Œ	Ø×Ñœ˜RŸ\™\Ó*¨AÔ.Ø×ÑØŸ\™\Ö*˜ˆQ�V‹VÒ*Üœ[¬.Ð9ô	
ð 	×Ñ˜Ÿ™ QÕ'ùò +s   Á8B?c                 óú   — t        j                  «       }d}|j                  |d¬«       | j                  t	        |j
                  «      d«       | j                  |j
                  d   j                  t        «       y )NÚABCDEFGHIJKé   rK   r!   r   )r(   r)   r*   rG   r  rM   rN   r   )r   r-   r  s      r   Útest_optimize_longer_than_dataz*QRCodeTests.test_optimize_longer_than_data†  sY   € Ü�]‰]‹_ˆØˆØ
�‰�D 2ˆÔ&Ø×Ñœ˜RŸ\™\Ó*¨AÔ.Ø×Ñ˜Ÿ™ a™×-Ñ-¬~Õ>r   c                 óP  — d}t        j                  «       }|j                  |«       |j                  «        | j	                  |j
                  d«       t        j                  «       }|j                  |d¬«       |j                  «        | j	                  |j
                  d«       y )NÚúA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOaA1abc12345123451234512345def1HELLOHELLOHELLOHELLOar´   r   rK   é   rF   )r   r  r-   s      r   Útest_optimize_sizezQRCodeTests.test_optimize_size�  ss   € ØGˆä�]‰]‹_ˆØ
�‰�DÔØ
�‰Œ	Ø×Ñ˜Ÿ™ RÔ(ä�]‰]‹_ˆØ
�‰�D 1ˆÔ%Ø
�‰Œ	Ø×Ñ˜Ÿ™ RÕ(r   c                 óŽ   — d}t         j                  j                  |«      }| j                  t	        |«      t	        |«      «       y )Ns   hello)r(   Úutilr   rG   Úrepr)r   rA   Údata_objs      r   Útest_qrdata_reprzQRCodeTests.test_qrdata_reprš  s3   € ØˆÜ—;‘;×%Ñ% dÓ+ˆØ×Ñœ˜h›¬¨d«Õ4r   c                 ó0  — t        j                  «       }t        j                  d«      5 }d |j                  _        | j                  t        |j                  d¬«       | j                  |j                  j                  «       d d d «       y # 1 sw Y   y xY w)Nú
sys.stdoutT)Útty)r(   r)   r   r§   ÚisattyÚreturn_valuer5   ÚOSErrorÚprint_asciir™   rš   ©r   r-   Úfake_stdouts      r   Útest_print_ascii_stdoutz#QRCodeTests.test_print_ascii_stdoutŸ  so   € Ü�]‰]‹_ˆÜ�Z‰Z˜Ó%ð 	7¨Ø.2ˆK×ÑÔ+Ø×Ñœg r§~¡~¸4ÐÔ@Ø�O‰O˜K×.Ñ.×5Ñ5Ô6÷	7÷ 	7ñ 	7ús   ªABÂBc                 óÚ  — t        j                  d¬«      }t        j                  «       }|j	                  |¬«       |j                  «       }|j                  «        d}| j                  |d t        |«       |«       t        j                  «       }d„ |_	        |j	                  |d¬«       |j                  «       }|j                  «        d}| j                  |d t        |«       |«       y )	Nr   r:   ©Úoutu   â–ˆâ–€â–€â–€â–€â–€â–ˆc                   ó   — y©NTr—   r—   r   r   ú<lambda>z.QRCodeTests.test_print_ascii.<locals>.<lambda>°  ó   � r   T)r&  r  u)   [48;5;232m[38;5;255mÂ â–„â–„â–„â–„â–„Â )
r(   r)   ra   ÚStringIOr   ÚgetvalueÚcloserG   r  r  )r   r-   ÚfÚprintedÚexpecteds        r   Útest_print_asciizQRCodeTests.test_print_ascii¦  s¸   € Ü�]‰] !Ô$ˆÜ�K‰K‹MˆØ
�‰˜1ˆÔØ—*‘*“,ˆØ	�‰Œ	Ø?ˆØ×Ñ˜ ¤3 x£=Ð1°8Ô<ä�K‰K‹MˆÙˆŒØ
�‰˜1 $ˆÔ'Ø—*‘*“,ˆØ	�‰Œ	àUð 	ð 	×Ñ˜ ¤3 x£=Ð1°8Õ<r   c                 ó,  — t        j                  «       }t        j                  d«      5 }d |j                  _        | j                  t        |j                  «       | j                  |j                  j                  «       d d d «       y # 1 sw Y   y xY w)Nr  )r(   r)   r   r§   r  r  r5   r  Ú	print_ttyr™   rš   r!  s      r   Útest_print_tty_stdoutz!QRCodeTests.test_print_tty_stdout¹  sj   € Ü�]‰]‹_ˆÜ�Z‰Z˜Ó%ð 	7¨Ø.2ˆK×ÑÔ+Ø×Ñœg r§|¡|Ô4Ø�O‰O˜K×.Ñ.×5Ñ5Ô6÷	7÷ 	7ñ 	7ús   ªAB
Â
Bc                 óB  — t        j                  «       }t        j                  «       }d„ |_        |j                  |¬«       |j                  «       }|j                  «        d}d}|dz   |z   }d}|dz   |z   |z   dz   |z   }| j                  |d t        |«       |«       y )	Nc                   ó   — yr(  r—   r—   r   r   r)  z,QRCodeTests.test_print_tty.<locals>.<lambda>Ã  r*  r   r%  z[1;47mz[40mz  z[0m
z.                                              z              )
r(   r)   ra   r+  r  r3  r,  r-  rG   r  )	r   r-   r.  r/  ÚBOLD_WHITE_BGÚBLACK_BGÚWHITE_BLOCKÚEOLr0  s	            r   Útest_print_ttyzQRCodeTests.test_print_ttyÀ  s�   € Ü�]‰]‹_ˆÜ�K‰K‹MˆÙˆŒØ
�‰˜ˆÔØ—*‘*“,ˆØ	�‰Œ	Ø$ˆØˆØ# dÑ*¨XÑ5ˆØˆà˜IÑ%¨Ñ+¨kÑ9¸HÑDÀ{ÑRð 	ð 	×Ñ˜ ¤3 x£=Ð1°8Õ<r   c                 ó¦   — t        j                  d¬«      }|j                  d«       | j                  |j	                  «       |j
                  «       y )Nr   r:   Ú1)r(   r)   r*   rG   Ú
get_matrixÚmodulesr,   s     r   Útest_get_matrixzQRCodeTests.test_get_matrixÐ  s6   € Ü�]‰] !Ô$ˆØ
�‰�CÔØ×Ñ˜Ÿ™›¨"¯*©*Õ5r   c                 óÚ   — t        j                  d¬«      }|j                  d«       |j                  «       dd D �cg c]  }|dd ‘Œ	 }}| j	                  ||j
                  «       y c c}w )Nr!   r:   r=  r9   )r(   r)   r*   r>  rG   r?  )r   r-   ÚrowÚmatrixs       r   Útest_get_matrix_borderz"QRCodeTests.test_get_matrix_borderÕ  s[   € Ü�]‰] !Ô$ˆØ
�‰�CÔØ')§}¡}£°q¸Ð'<Ö= �#�a˜’)Ð=ˆÐ=Ø×Ñ˜ §¡Õ,ùò >s   ½A(c                 óP   — | j                  t        t        j                  d¬«       y )Nr9   )r¡   r4   r   s    r   Ú"test_negative_size_at_constructionz.QRCodeTests.test_negative_size_at_constructionÛ  s   € Ø×Ñœ*¤f§m¡m¸bÐÕAr   c                 óz   — t        j                  «       }d|_        | j                  t        |j
                  «       y )Nr9   )r(   r)   r¡   r5   r6   r_   r,   s     r   Útest_negative_size_at_usagez'QRCodeTests.test_negative_size_at_usageÞ  s(   € Ü�]‰]‹_ˆØˆŒØ×Ñœ* b§m¡mÕ4r   N)=r‘   r’   r“   r   r   r.   r1   r7   r<   r?   rB   rH   rO   rR   rV   rZ   r\   ÚunittestÚskipIfre   rh   rn   rq   ry   r~   rƒ   r†   r�   r›   r¢   r«   r°   rº   rÁ   rÆ   rÊ   rÍ   rÐ   rÓ   rÖ   rÝ   rã   ræ   rí   rñ   rö   rû   r   r  r  r  r  r  r#  r1  r4  r;  r@  rD  rF  rH  r—   r   r   r   r      s¯  „ ò òòò
ò
Aò@òAò
ò(ò<ò?ò?ò?ò?ð €X‡_�_˜�] NÓ3ñ@ó 4ð@ð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðò+ò
 ò.ò	5òò
?ð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñ"ó 4ð"ð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðð €X‡_�_˜�] NÓ3ñó 4ðò(ò"
(ò?ò)ò5ò
7ò=ò&7ò=ò 6ò
-òBó5r   r   c                   ó@   — e Zd Z ej                  e d«      d„ «       Zy)ÚShortcutTestr]   c                 ó.   — t        j                  d«       y )NÚimage)r(   r+   r   s    r   ÚrunTestzShortcutTest.runTestå  s   € ä�‰�GÕr   N)r‘   r’   r“   rI  rJ  re   rO  r—   r   r   rL  rL  ä  s#   „ Ø€X‡_�_˜�] NÓ3ñó 4ñr   rL  )#ra   r   rI  ÚwarningsÚtempfiler   r   r�   r(   Úqrcode.utilÚqrcode.compat.pilr   re   Úqrcode.exceptionsr   Úqrcode.image.baser   Úqrcode.image.purer   Úqrcode.image.styledpilr	   Úqrcode.image.stylesr
   r   r   r   r   r   rY   rá   rì   râ   ÚTestCaser   rL  r—   r   r   ú<module>rZ     ss   ðÛ 	Û 	Û Û Ý Ý ã 
ã Û Ý 0Ý /Ý 'Ý (Ý 1ß 9ß KÓ Kà#€Ø€Ø€Ø€ôG5�(×#Ñ#ô G5ôT�8×$Ñ$õ r   